将闭包编译器与已编译的vue.js模板一起使用

时间:2019-03-23 17:04:19

标签: javascript vue.js webpack google-closure-compiler

是否可以将Google闭包编译器与已编译的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: []
    };
/***/ })

现在,问题是是否有办法在闭包编译器中进行此编译?认为最简单的方法是告诉编译器不对该代码进行任何处理(未最小化的代码可以正常运行,因此似乎是有效的),但似乎没有这种选择。

还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

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

现在该代码在闭包编译器中编译没有问题,并且在IE10(我的“最低目标”)中进行的首次测试表明该构建现在就可以了!

为@ tony19指向正确的方向表示敬意!