我不确定以下任何一项是否被视为更好的做法。
环境: Appcelerator Titanium / Alloy,这是一个制作原生应用程序的框架。它使用javascript作为源代码,与node.js相似(更像是CommonJS)。
案例1:
我使用的许多文件:
var localInstance = require('main/module/sub/foobar')({ initialize: true});
案例2:
我将创建全局的主文件:
Globalnamespace.foobar = require('main/module/sub/foobar');
在其他文件中:
var localInstanceWhichINeed = Globalnamespace.foobar({initialize: false});
关键是在任何地方都不需要该模块,将其置于全局命名空间可能会占用不必要的内存。每个foobar
模块都需要在每个文件中实例化,因此没有全局实例(只有一个模块来创建实例)。
我在谈论移动设备内存,我试图减少它。因此问题。
答案 0 :(得分:1)
我不是回应此问题的最佳人选。但是,我调查了同样的问题,因此有一些可以帮助你的见解; - )
CommonJS模块的工作方式是在第一次引用它们时加载它们。因此,随后的推荐成本非常低。因此,我想说这更像是一个关于"味道"的问题。就个人而言,我倾向于使用你提到的第一种方法,即。像这样的东西:
var UiHelper = require('ui/helper);
:
:
UiHelper.showListBox(.....);
回到你的问题 - 我不认为使用其中一个会受到惩罚。它更多地是关于如何构建代码; - )
/约翰
答案 1 :(得分:1)
具体涉及名称空间使用和Titanium:我不推荐它。命名空间很容易超出范围。即使你将它们绑定到Ti.App(也不是一个好主意)。
CommonJS(尤其是最新版本的Titanium)非常擅长重装以前加载过的东西。
如果您担心内存,请确保在完成所有视图和窗口时将其销毁。这是Titanuim的第一件事。