使用带有编译的vue.js模板的闭包编译器

问题描述 投票:0回答:1

是否可以使用谷歌闭包编译器与已编译的Vue.js模板?

罪魁祸首是编译的vue模板使用“with”,如:

with(this){/** render function here **/}

...和闭包编译器不喜欢这样,因此抱怨:

The with statement cannot be used in strict mode.

但是,我不确定这是否真的是由于严格模式,因为在源代码(用webpack打包)中,在违规函数中没有"use strict";

/***/ "./my/compiled/vue/template":
/***/ (function(module, exports) {
    module.exports = {
      render: function(){with(this){ /** render function here **/ }},
      staticRenderFns: []
    };
/***/ })

现在,问题是是否有办法在闭包编译器中进行编译?认为最简单的方法是告诉编译器通过该代码而不对其做任何事情(未经编程的代码运行得很好,所以它似乎有效),但似乎没有这样的选项。

还有其他想法吗?

javascript vue.js webpack google-closure-compiler
1个回答
0
投票

好的,我想我现在知道如何解决这个问题。事实证明,使用已编译的.vue模板,根据您的构建方式,似乎会有不同的输出。由于我只需编译模板 - 但没有完整的单一文件组件 - 我使用了更简单的vue-template-compiler-loader,它使用官方编译器并产生我描述的有问题的输出。现在,我尝试使用更复杂的vue-loader构建(它更适合单个文件组件),它似乎也适用于“仅模板”的文件。而且看起来那个加载器的输出是不同的,因为生成的渲染函数不包含with(this)

这个代码现在在闭包编译器中没有问题编译,并且IE10中的第一次测试运行(我的“最低目标”)表明构建现在很好!

感谢@ tony19让我指向了正确的方向!

© www.soinside.com 2019 - 2024. All rights reserved.