javascript - 通过 Uglify 将主干与压缩 View 结合使用

标签 javascript backbone.js webpack uglifyjs

我在activity.view.js中有这个 View :

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 中,我将 View 称为:

<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 ..

Browser console: ViewActivity is undefined

代码压缩后如何使用ViewActivity?提前致谢

我忘了提及我使用了以下配置,但压缩代码保持不变:

plugins: [
    new UglifyJsPlugin({
        uglifyOptions: {
            keep_classnames: true,
            keep_fnames: true,
            mangle: {
                reserved: ["VistaPago"]
            }
        }
    })
]

最佳答案

压缩器认为ViewActivity是一个局部变量,因此压缩其分配的名称是安全的。您可以通过以下方式解决这个问题:

window.ViewActivity = Backbone.View.extend({

或者您可以在 activity.view.js 中定义一个工厂方法来实例化它:

window.createActivityView(foo) {
    return new ViewActivity({
                             bar: foo
    });
}

关于javascript - 通过 Uglify 将主干与压缩 View 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144033/

相关文章:

webpack - 使用带有 gulp 插件的 UglifyJS2 时保留许可证注释

javascript - 如何根据 controller1 中的操作触发 controller2 中的事件

javascript - 菜单打开和关闭菜单按钮 - Jquery

在 FF 和 IE7/8/9 上工作时,带有淡入淡出的 Javascript slider 在 chrome 上失败

javascript - Node.js——未定义 :0 Syntax Error: Unexpected end of input

node.js - 在 Node.js 中动态导入 webpack

javascript - 更改 Ext.js TreePanel 复选框元素

javascript - 我是否必须删除 backbone.js 上未使用的 View

javascript - 主干 View 嵌套

css - 如何使用此 HTML 文件添加 CSS?