通过Uglify对压缩视图使用 Backbone.js

ua4mk5z4  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(163)

我在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"]
            }
        }
    })
]
jvidinwx

jvidinwx1#

小型化器认为ViewActivity是一个局部变量,因此压缩它的赋值名是安全的。你可以这样做:

window.ViewActivity = Backbone.View.extend({

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

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

相关问题