javascript - Titanium (Node.js) require() 与 Global

标签 javascript node.js titanium require commonjs

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

环境: Appcelerator Titanium/Alloy,这是一个用于制作 native 应用程序的框架。它使用 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 模块都需要在每个文件中实例化,因此不存在全局实例(只有一个模块来创建实例)。

我正在谈论移动设备内存,我正在尝试减少它。因此就有了这个问题。

最佳答案

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

CommonJS 模块的工作方式是在您第一次引用它们时加载它们。因此,后续转介的成本非常低。所以我想说,这更多的是一个“味道”的问题。就我个人而言,我倾向于使用您提到的第一种方法,即。像这样的东西:

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

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

/约翰

关于javascript - Titanium (Node.js) require() 与 Global,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988639/

相关文章:

javascript - 如何将对象属性从对象本身传递给函数?

javascript - Chrome 地址栏在移动网站上留下空白

node.js - 如何让 Node.js 应用程序在 Azure 应用服务上运行?

android - 安装应用程序后 Titanium android 应用程序大小增加 - 如何修复?

ios - 无法在新的 Appcelerator studio 中打包 IOS 应用程序?

javascript - Appcelerator - 如何更改选项卡按钮样式?

Javascript forEach 只将原始对象中的最后一个键/值对添加到新对象中

javascript - 代码运行成功但在浏览器中未显示输出

javascript - 由于传输层/元/连接调用,使用 faye/nodejs 在 firefox/chrome 上加载较长的初始页面

node.js - 在 NodeJS 中获取和发布文本