爲什麼是的,是的,你可以!儘管Marionette本身並不完全允許您創建「基本模塊」,但它確實允許您修改現有模塊。在我們的應用程序中,我們利用這個優勢創建了一個我們用於所有模板的ModuleDefaults
定義。下面是它如何工作的:
var ModuleDefaults = {
// Define baseline behavior to share among all modules
definition: function() {
this.foo = 'bar';
this.addInitializer(function() {
console.log(this.moduleName + ': do startup stuff');
});
}
};
現在你可以創建一個簡單的實現這一行爲,像這樣的模塊:
// Create a module with the default implementation
App.module('Module1', ModuleDefaults.definition);
或者你可以創建一個覆蓋該bevavior模塊:
// Create another module with the default implementation
App.module('Module2', ModuleDefaults.definition);
// Provide customizations to second module:
App.module('Module2', function() {
// override existing behavior
this.foo = 'baz';
// add new behavior
this.addFinalizer(function() {
console.log(this.moduleName + ': cleanup stuff');
});
});
使用此技術證明第二個模塊的foo
屬性被覆蓋:
App.start(); // -> Module1: do startup stuff
// -> Module2: do startup stuff
console.log(App.Module1.foo); // -> bar
console.log(App.Module2.foo); // -> baz
App.Module1.stop(); // ->
App.Module2.stop(); // -> Module2: cleanup stuff
克里斯,感謝您花時間給我看。這是一個很好的解決方案 – validkeys
不是問題。 :) –