gpt4 book ai didi

javascript - 您将数据模型放在 dojo 应用程序的什么位置?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:49 24 4
gpt4 key购买 nike

我的困境是 dojo 文档中建议 AMD 模块不应设置或读取全局变量。然而,假设您的数据模型包含许多单独的小部件使用的属性(因此它是一个共享模型),期望每个小部件都拥有自己的数据模型对象实例是不合理的。那么你把它放在哪里,以便所有需要获取和设置属性或观察属性变化的小部件都可以这样做?

最佳答案

您可以使用单调模式。

Singletons reduce the need for global variables which is particularly important in JavaScript because it limits namespace pollution and associated risk of name collisions. Source.

要在 Dojo 中实现单调模式,您可以创建一个 AMD 模块,它是一个单调对象。

在下面的示例中,您定义了一个名为 App 的 AMD 模块。“公共(public)”属性 data 可以包含代表共享数据的任何对象,因此您可以在作为独立 AMD 模块的小部件中使用它。

函数 init 可用于初始化单音对象并填充属性 data(例如向您的服务器 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();
});

关于javascript - 您将数据模型放在 dojo 应用程序的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39025490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com