钛 (Node.js) require() 与全球

Titanium (Node.js) require() vs Global

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

环境: Appcelerator Titanium/Alloy,这是一个制作原生应用程序的框架。它使用 javascript 作为源,相当于 node.js(更像 CommonJS)。

案例一:

我使用的许多文件:

var localInstance = require('main/module/sub/foobar')({ initialize: true});

案例二:

我将在其中创建全局的主文件:

Globalnamespace.foobar = require('main/module/sub/foobar');

在其他文件中:

var localInstanceWhichINeed = Globalnamespace.foobar({initialize: false});

重点是模块并不是到处都需要,将它放在全局命名空间中可能会占用不必要的内存。每个foobar模块需要在每个文件中实例化,所以没有全局实例(只有一个模块来创建实例)。

我说的是移动设备内存,我正试图减少它。因此问题。

我不是对此做出回应的最佳人选。但是,我调查了同样的问题,因此有一些见解可能会对您有所帮助 ;-)

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

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

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

/约翰

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

而且 CommonJS(尤其是在最新版本的 Titanium 中)非常擅长不重新加载它之前加载过的东西。

如果您担心内存不足,请确保您的所有视图和 windows 在您使用完后都被销毁。这是 Titanuim 中的第一件事。