簡體   English   中英

鈦(Node.js)require()與全局

[英]Titanium (Node.js) require() vs Global

我不確定以下任何一項是否被視為更好的做法。

環境: 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模塊都需要在每個文件中實例化,因此沒有全局實例(只有一個用於創建實例的模塊)。

我說的是移動設備的內存,我正在努力減少內存。 因此是一個問題。

我不是對此做出回應的最佳人選。 但是,我已經研究了相同的問題,因此有一些見識可以為您提供幫助;-)

CommonJS模塊的工作方式是在您第一次引用它們時就將其加載。 因此,后續轉診的成本非常低。 因此,我想說的更多是關於“風味”的問題。 就個人而言,我傾向於使用您提到的第一種方法。 像這樣的東西:

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

所以回到您的問題-我認為使用任何一種都不會有任何懲罰。 它更多地是關於您如何構造代碼的;-)

/約翰

特別涉及名稱空間的使用和Titanium:我不推薦使用。 命名空間很容易超出范圍。 即使將它們綁定到Ti.App(也不是一個好主意)。

而且CommonJS(尤其是在最新版的Titanium中)非常擅長不重新加載之前加載的內容。

如果您擔心內存不足,請在使用完所有視圖和窗口后將其銷毀。 這是Titanuim中的第一件事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM