使用AMD和Backbone在模块之间共享对象(或状态)的干净方法
Clean method of sharing an object (or state) between modules with AMD and Backbone
我有一个骨干/AMD应用程序,我想做的是有一个模型/对象在主模块中提取当应用程序加载,然后可以访问或能够被加载到后续模块没有重新取回它的开销(这是一个权限模型,因此是需要几乎无处不在)。
是否有一种干净的方法来做这件事?
让它成为自己的依赖项:
define(["backbone", "text!api/v1/user/permissions"],
function(Backbone, permissionJSON) {
return new Backbone.Model(JSON.parse(permissionJSON));
});
如果你需要一个你想要保持状态的模块,你可以这样做
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")
})
之后,在module nextMod.js:
require(['stateMod'], function(stateMod) {
stateMod.get() // outputs Hello World
})
requires保存了第一次需要时返回的对象,这就是为什么每次在模块中需要d3js和jQuery或其他常用库时都不重新加载(网络智能)的原因,否则它将是相当垃圾。
试一试,让我知道它是如何为你工作的。
相关文章:
- Angular:如何在状态更改时调用scope方法
- 返回当前状态名称的方法
- 经典方法的目的|与对象状态的关系
- 检查 redux 状态是否更改的简单方法
- 无法更新componentWillReceiveProps方法内的状态
- 在状态更改后调用方法
- 如何使用jquery cookie插件保存toggleClass方法的状态
- 管理形式状态的最简单方法是什么
- 在 redux 化简器中更新状态的正确方法
- HTTP 状态 405 - 不支持请求方法“POST”(Spring MVC)
- 在Redux中更新嵌套状态的更干净/更短的方法
- 尽管成功传输了 json,但我的 Jquery.ajax 方法在响应中获得了错误状态
- Ember 应用程序就绪状态 - 应用程序无法识别方法
- 从状态提供程序的解析方法更改角度应用程序的状态
- 使用 javascript 实现状态检查的最佳方法
- 在 html5 上检查在线状态的最佳方法
- 在 Angular.js 中更改视图时处理$scope状态和值的正确方法是什么?
- 控制台状态方法不可用,但似乎应该可用
- 使用无状态功能组件与调用方法有什么区别
- 方法POST,状态(已取消)错误消息