javascript - 将闭包编译器与已编译的 vue.js 模板一起使用
问题描述
是否可以将 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: []
};
/***/ })
现在,问题是是否有办法在闭包编译器中进行编译?认为最简单的方法是告诉编译器通过该代码而不对它做任何事情(未最小化的代码运行得很好,所以它似乎是有效的),但似乎没有这样的选择。
还有其他想法吗?
解决方案
好的,我想我现在知道如何解决这个问题了。事实证明,编译后的 .vue 模板似乎有不同的输出,具体取决于您构建它的方式。因为我只需要编译模板——但没有完整的单个文件组件——我使用了更简单的vue-template-compiler-loader
,它使用了官方编译器并产生了我描述的有问题的输出。现在,我尝试使用更复杂的vue-loader
(更适合单文件组件)进行构建,它似乎也适用于“仅模板”的文件。看起来该加载器的输出不同,因为生成的渲染函数不包含with(this)
!
这段代码现在在闭包编译器中编译没有问题,并且在 IE10(我的“最低目标”)中运行的第一次测试表明构建现在很好!
感谢@tony19 为我指明了正确的方向!
推荐阅读
- javascript - 如何区分 TinyMCE images_upload_handler 是上传图片还是粘贴图片?
- javascript - fullcalendar timelineweek 的问题:spec.class 不是构造函数
- javascript - 我如何使用 html
- uitableview - TableView DidSelectRowAt() 延迟
- java - 单例工厂 - 使用 Java 8 实现
- java - 流口水,直接在java中规则
- ruby-on-rails - 具有命名空间模型的多态关联查找类名称
- java - 将输入流与字节缓冲区合并
- ios - 超视图变换时检测子视图的框架
- amazon-web-services - 为什么我的 API 请求在加载 CloudFront 缓存的页面时不发送?