简体   繁体   English

使用CoffeeScript,CommonJS扩展Backbone.Marionette模块

[英]Extending Backbone.Marionette Module With CoffeeScript, CommonJS

I'm trying to extend marionette's module class in coffeescript, using a commonJS pattern, so that I can require a general Module class to reuse across parts of my app. 我正在尝试使用commonJS模式在coffeescript中扩展木偶的模块类,以便可以要求通用的Module类在应用程序的各个部分之间重用。 So far, no luck. 到目前为止,还没有运气。

So far I've tried this: 到目前为止,我已经尝试过了:

module.exports = class SingleFeed extends Marionette.Module

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

and this: 和这个:

module.exports = Marionette.Module.extend(

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

)

With the hope that I could reuse this code in my application like this: 希望我可以像这样在我的应用程序中重用此代码:

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

app.module('HomeFeed', 
     moduleClass: hf
).start(options)

Has anyone successfully done this with coffeescript? 有没有人用coffeescript成功做到这一点? Or does anyone have any ideas that might help? 还是有人有任何想法可能会有所帮助?

Here's the documentation I'm referencing: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.module.md 这是我参考的文档: https : //github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.module.md

The problem that addInitializer is method of module instance but when you extended you can't call it. addInitializer是模块实例方法的问题,但是在扩展时无法调用它。 But you can override empty default initialize where you can add your initializers and finalizers like that: 但是您可以覆盖空的默认initialize ,您可以在其中添加初始化器和终结器,如下所示:

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

)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM