我有一个Backbone / AMD应用程序,我想要做的是在应用程序加载时在主模块中获取模型/对象,然后可以访问或能够加载到后续模块中没有重新获取它的开销(它是一个权限模型,因此几乎无处不在)。
这样做有干净的方法吗?
答案 0 :(得分:2)
简单地使它成为自己的依赖:
define(["backbone", "text!api/v1/user/permissions"],
function(Backbone, permissionJSON) {
return new Backbone.Model(JSON.parse(permissionJSON));
});
答案 1 :(得分:1)
如果您需要一个您想保持状态的模块,您可以按照以下步骤进行操作
<强> stateMod.js 强>
require(['jquery', 'lib1','lib2'], function($, l1,l2) {
var thisVariableHoldsStateBetweenModules = "initValue"
var thisIsTheAPIOfYourModule = function(newValue) {
thisVariableHoldsStateBetweenModules = newValue
}
var getInternalState = function () {
return thisVariableHoldsStateBetweenModules
}
return {
set: thisIsTheAPIOfYourModule,
get: getInternalState
}
}
})
当您需要此模块时,您获得的内容为thisIsAPIOfYourModule
,因此您只需使用它来更改thisVariableHoldsStateBetweenModules
:
<强> otherMod.js 强>
require(['stateMod'], function(stateMod) {
stateMod.set("Hello world")
})
以及之后的模块 nextMod.js :
require(['stateMod'], function(stateMod) {
stateMod.get() // outputs Hello World
})
requirejs保存从第一次需要时返回的对象,这就是为什么每次需要时都不会重新加载(网络wiise)d3js和jQuery或其他常用库。模块,否则它会很糟糕。
请试一试,让我知道它对你有用。