钛 (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 中的第一件事。
我不确定以下任何一项是否被认为是更好的做法。
环境: 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 中的第一件事。