Javascript 在dojo应用程序中,数据模型放在哪里?
我的困境是,dojo文档中建议AMD模块不要设置或读取全局变量。然而,假设您的数据模型包含许多单独的小部件所使用的属性(因此它是一个共享模型),那么期望每个小部件都保存自己的数据模型对象实例是不合理的。那么,您将它放在哪里,以便所有需要获取和设置属性或查看属性更改的小部件都可以这样做呢?您可以使用单音模式 单件减少了对全局变量的需求,尤其是 在JavaScript中很重要,因为它限制了名称空间污染和 名称冲突的相关风险 要在Dojo中实现单音模式,可以创建一个AMD模块,它是单音对象 在下面的示例中,您有一个名为Javascript 在dojo应用程序中,数据模型放在哪里?,javascript,dojo,Javascript,Dojo,我的困境是,dojo文档中建议AMD模块不要设置或读取全局变量。然而,假设您的数据模型包含许多单独的小部件所使用的属性(因此它是一个共享模型),那么期望每个小部件都保存自己的数据模型对象实例是不合理的。那么,您将它放在哪里,以便所有需要获取和设置属性或查看属性更改的小部件都可以这样做呢?您可以使用单音模式 单件减少了对全局变量的需求,尤其是 在JavaScript中很重要,因为它限制了名称空间污染和 名称冲突的相关风险 要在Dojo中实现单音模式,可以创建一个AMD模块,它是单音对象 在下面的示
App
的AMD模块的定义。
“public”属性data
可以包含表示共享数据的任何对象,因此您可以在作为独立模块的小部件中使用它
函数init
可用于初始化单音对象并填充属性数据(例如向服务器API发出请求)
bootstrap
AMD模块(这是您应用程序的入口点),显示如何首次加载app
AMD模块并对其进行初始化,无论何时您需要在小部件中获取“共享”数据,您都可以请求应用程序和类似以下内容的数据app()。data
app.js文件
define([
], function (
) {
'use strict';
var _instance;
function _App() {
}
_App.prototype = {
// data: [public] Object
// Data for your app.
data: null,
init: function () {
// summary:
// Initializes and fetch some data from the server.
}
};
return function _getSingleton() {
// summary:
// Gets singleton object.
return (_instance = (_instance || new _App()));
};
});
bootstrap.js文件
require([
'app'
], function (
app
) {
'use strict';
// module:
// bootstrap
// summary:
// Application bootstrap with the main responsibility to initiate modules (single tones).
// initializes module app
app().init();
});
_App必须是一个函数?@erotavlas在javascript中,函数是一个一级对象,代码如下_App必须是一个函数。我希望这个答案对你有所帮助。如果您需要更多信息,请告诉我。