Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用CoffeeScript、CommonJS扩展主干网木偶模块_Javascript_Backbone.js_Coffeescript_Marionette_Commonjs - Fatal编程技术网

Javascript 使用CoffeeScript、CommonJS扩展主干网木偶模块

Javascript 使用CoffeeScript、CommonJS扩展主干网木偶模块,javascript,backbone.js,coffeescript,marionette,commonjs,Javascript,Backbone.js,Coffeescript,Marionette,Commonjs,我正试图使用commonJS模式在coffeescript中扩展木偶的模块类,这样我就可以要求一个通用的模块类在我的应用程序的各个部分之间重用。到目前为止,没有运气 到目前为止,我已经尝试过: module.exports = class SingleFeed extends Marionette.Module @addInitializer((options) => console.log 'initialize' ) 这是: module.expor

我正试图使用commonJS模式在coffeescript中扩展木偶的模块类,这样我就可以要求一个通用的模块类在我的应用程序的各个部分之间重用。到目前为止,没有运气

到目前为止,我已经尝试过:

module.exports = class SingleFeed extends Marionette.Module

    @addInitializer((options) =>
        console.log 'initialize'
    )
这是:

module.exports = Marionette.Module.extend(

    @addInitializer((options) =>
        console.log 'initialize'
    )

)
希望我可以像这样在我的应用程序中重用此代码:

HomeFeed = require '../modules/components/feeds/SingleFeed'
hf = new HomeFeed()

app.module('HomeFeed', 
     moduleClass: hf
).start(options)
有人用coffeescript成功地做到了这一点吗?或者有人有什么想法可以帮助你吗


下面是我正在引用的文档:

问题是,
addInitializer
是模块实例的方法,但是当您扩展时,您不能调用它。但是您可以覆盖空的默认值
initialize
,您可以在其中添加初始化器和终结器,如下所示:

module.exports = Marionette.Module.extend(
  initialize: () ->
    console.log('initialize module')
    @addInitializer((options) =>
        console.log 'starting module'
    )

)

你的尝试不起作用的原因与咖啡脚本无关:正如@dmytro yarmak在回答中解释的那样,这更像是你在错误的时间做了正确的事情。要扩展CS类或木偶模块,您需要提供一个扩展对象;而是将调用成员函数的结果传递给它。更糟糕的是,现在还没有实例(您正在定义一个类),因此调用
@addInitializer
没有意义。此外,如果您要重写非空的
initialize
方法,您可以在新的initialize方法中执行
ParentClass.prototype.initialize.call(这个,arg1,arg2,…)