Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在大型主干应用程序中使用全局变量_Javascript_Backbone.js_Requirejs - Fatal编程技术网

Javascript 在大型主干应用程序中使用全局变量

Javascript 在大型主干应用程序中使用全局变量,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我有一个相当笼统的问题,没有包含代码。 对于大型主干应用程序,使用主干/requirejs的最佳架构是什么? 有一个像App这样的全局名称空间,可以共享彼此通信所需的所有集合、模型和视图吗?或者我应该只使用依赖性注入来加载所需的模块吗?在我看来,您可以使用全局名称空间,比如App,但只用于类定义而不是实例,也可能用于实用程序函数 如果将实例放在全局命名空间中,则可以实例化所有视图,但只显示一个,因此其他实例: 你在使用内存吗 让侦听器侦听dom元素,这可能会给您带来很多问题 可以在导航回它时保存

我有一个相当笼统的问题,没有包含代码。 对于大型主干应用程序,使用主干/requirejs的最佳架构是什么?
有一个像App这样的全局名称空间,可以共享彼此通信所需的所有集合、模型和视图吗?或者我应该只使用依赖性注入来加载所需的模块吗?

在我看来,您可以使用全局名称空间,比如App,但只用于类定义而不是实例,也可能用于实用程序函数

如果将实例放在全局命名空间中,则可以实例化所有视图,但只显示一个,因此其他实例:

你在使用内存吗 让侦听器侦听dom元素,这可能会给您带来很多问题 可以在导航回它时保存它的状态,因此初始化该状态可能需要您付出更多的努力 ...
如果您希望代码可重用和模块化,那么应该避免使用全局变量

为什么甚至希望恢复/求助于全局变量因为一些视图共享模型/集合,有时需要从控制器中使用的视图中公开一些方法。如果您有不同的视图之间使用相同的方法或类似的控制器,那么您应该考虑用这些方法创建基本视图并扩展它以创建不同的视图。请添加一个方法示例以获得更具体的答案。假设我想为某些视图创建一个destroy方法,并从appController.js文件中调用它。没有公共VAR我怎么能做到呢。将所有必需的视图作为依赖项传递似乎并不自然。还有一种情况,我在两个视图之间共享一个模型,如果一个视图修改模型,另一个视图必须侦听同一实例上的更改。对于第一个示例,您可以为这些视图创建一个超类,并重写其删除函数,然后将逻辑放在那里。对于第二个示例,创建这两个视图的类应该创建一个模型并将其传递给两个视图