Titanium(Node.js)需要()vs Global

时间:2015-03-11 14:01:06

标签: javascript node.js titanium require commonjs

我不确定以下任何一项是否被视为更好的做法。

环境: 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模块都需要在每个文件中实例化,因此没有全局实例(只有一个模块来创建实例)。

我在谈论移动设备内存,我试图减少它。因此问题。

2 个答案:

答案 0 :(得分:1)

我不是回应此问题的最佳人选。但是,我调查了同样的问题,因此有一些可以帮助你的见解; - )

CommonJS模块的工作方式是在第一次引用它们时加载它们。因此,随后的推荐成本非常低。因此,我想说这更像是一个关于"味道"的问题。就个人而言,我倾向于使用你提到的第一种方法,即。像这样的东西:

var UiHelper = require('ui/helper);
  :
  :
UiHelper.showListBox(.....);

回到你的问题 - 我不认为使用其中一个会受到惩罚。它更多地是关于如何构建代码; - )

/约翰

答案 1 :(得分:1)

具体涉及名称空间使用和Titanium:我不推荐它。命名空间很容易超出范围。即使你将它们绑定到Ti.App(也不是一个好主意)。

CommonJS(尤其是最新版本的Titanium)非常擅长重装以前加载过的东西。

如果您担心内存,请确保在完成所有视图和窗口时将其销毁。这是Titanuim的第一件事。