gpt4 book ai didi

javascript - Backbone Marionette 上的混淆和需要交互以获取依赖项

转载 作者:行者123 更新时间:2023-11-30 12:36:18 25 4
gpt4 key购买 nike

我稍微熟悉require.jsBackbone.js现在已经将它们一起使用了大约一年,并且相对较新 Backbone.Marionette尽管我对它能带来什么很感兴趣。

在寻找项目结构的例子时(我可能会对这些东西有点着迷)我找到了 https://github.com/BoilerplateMVC/Marionette-Require-Boilerplate和其他类似的例子。

一直困扰我的事情:在他们的app.js文件,它们返回对 Marionette 应用程序的实例的引用,即:

var app = new Backbone.Marionette.Application();
app.addInitializer(...);
...
return app;

在许多组件中,它们引用了 app.js通过require.js并按如下方式使用:

define([..., 'app'], function (... , App) {
App.someProperty(...);
});

现在这是我不理解的地方:我一直假设他们的 app.js 中的代码实际上,它更像是一个工厂,而不是一个,因为它返回一个应用程序的实例,而不是修改后的原型(prototype)或扩展。

因此,当他们引用 app.js ,他们实际上不是在创建一个全新的实例,而不是访问某种共享实例吗?没有任何迹象表明 app.js 在他们的代码中返回了一个单例。

然而,它起作用了,显然我是那个感到困惑的人。

那么,为什么会这样呢?

最佳答案

之所以可行,是因为在 javascript 中对象是通过引用传递的,而且 require.js 只加载每个依赖项一次。然后,app.js 返回一个已初始化的实例,并且所有其他需要 'app' 的模块都会引用同一对象。

它不是工厂,它只是一个初始化的应用程序对象实例。

关于javascript - Backbone Marionette 上的混淆和需要交互以获取依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25970993/

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