javascript - 通过 Uglify 使用带有压缩视图的主干
问题描述
我有这个观点activity.view.js
:
var ViewActivity = Backbone.View.extend({
el: '#Activity',
events:{
'change #grade': 'gradeChanged'
},
initialize: function(params){
_.bindAll(this, 'gradeChanged', 'render');
this.model = new MyModel(params)
this.render();
},
gradeChanged: function(){
},
render: function(){
}
});
在 HTML 中,我将视图称为:
<script>
var view = new ViewActivity({
foo: 'bar'
});
</script>
在这里,一切都没有问题。当我尝试使用 webpack 的插件UglifyJS
压缩所有 javascript 时,问题就来了。压缩后activity.view.js
,由于压缩代码,ViewActivity 对象无法像我一样实例化:
!function(r){var n={};function e(t){if(n[t])return ..
浏览器控制台:ViewActivity 未定义
压缩代码时如何使用 ViewActivity?提前致谢
我忘了提到我使用了以下配置,但压缩代码保持不变:
plugins: [
new UglifyJsPlugin({
uglifyOptions: {
keep_classnames: true,
keep_fnames: true,
mangle: {
reserved: ["VistaPago"]
}
}
})
]
解决方案
minifier 认为ViewActivity
是一个局部变量,因此压缩其分配的名称是安全的。您可以通过以下方式解决此问题:
window.ViewActivity = Backbone.View.extend({
或者你可以在里面定义一个工厂方法activity.view.js
来实例化它:
window.createActivityView(foo) {
return new ViewActivity({
bar: foo
});
}
推荐阅读
- scala - sbt 0.13.16 - 如何自定义触发执行(文件监视)
- python - 多项式内核不是PSD?
- git - 无法推送到 sourcetree 上的分支
- linux - 是否可以将两个 tr 命令合并为一个?
- visual-studio - 如何将项目添加到团队项目?
- python - Docker 容器中的 Jupyter 笔记本不持久?
- javascript - 错误 TS2356 说数字类型变量必须是“数字”类型的算术操作数
- db2 - 在 COBOL DB2 中删除并获取前 100 行
- java - 多次单击时如何使 ImageView 不可见(ListView)
- wordpress - Wordpress REST API 读取帖子元但不更新