可以将谷歌闭包编译器与已编译的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: []
};
/***/ })现在的问题是,是否有一种方法可以在闭包编译器中进行编译?我认为最简单的方法是告诉编译器传递代码,而不对它做任何操作(未最小化的代码运行得很好,所以它看起来是有效的),但似乎没有这样的选项。
还有其他想法吗?
发布于 2019-03-26 00:37:28
好了,我想我现在知道如何解决这个问题了。事实证明,对于已编译的.vue模板,根据构建方式的不同,似乎会有不同的输出。由于我只需要编译模板-但没有完整的单文件组件-所以我使用了更简单的vue-template-compiler-loader,它使用官方编译器并产生我所描述的有问题的输出。现在,我尝试使用更复杂的vue-loader (它更适合于单个文件组件)构建,它似乎也适用于“仅限模板”的文件。加载器的输出似乎是不同的,因为生成的呈现函数不包含with(this)!
这段代码现在在闭包编译器中编译没有问题,并且第一次在IE10 (我的“最低目标”)中运行测试表明构建现在很好!
感谢@tony19为我指明了正确的方向!
https://stackoverflow.com/questions/55316239
复制相似问题