Javascript commonjs内存的全局与本地
我在Tianium studio中的每个页面都有一个重复的代码,所以我应该在每个单独的页面或全局范围中声明它吗 像这样的Javascript commonjs内存的全局与本地,javascript,titanium,Javascript,Titanium,我在Tianium studio中的每个页面都有一个重复的代码,所以我应该在每个单独的页面或全局范围中声明它吗 像这样的 //app.js test = require('test'); //page1.js test= new test(); view.add(test.view); exports.view = view; //page2.js test = new test(); view.add(test.view); exports.view = view; 还是我应该这样做
//app.js
test = require('test');
//page1.js
test= new test();
view.add(test.view);
exports.view = view;
//page2.js
test = new test();
view.add(test.view);
exports.view = view;
还是我应该这样做
//app.js
//page1.js
var test = require('test');
view.add(test.view);
exports.view = view;
//page2.js
var test = require('test');
view.add(test.view);
exports.view = view;
//test.js
function textField(){
this.view = Ti.UI.createView();
this.view.add(this.textField = Ti.UI.createTextField());
}
module.exports = textField;
我的test.js是这样的
//app.js
//page1.js
var test = require('test');
view.add(test.view);
exports.view = view;
//page2.js
var test = require('test');
view.add(test.view);
exports.view = view;
//test.js
function textField(){
this.view = Ti.UI.createView();
this.view.add(this.textField = Ti.UI.createTextField());
}
module.exports = textField;
避免在任何时候填充全局范围。在编写commonJS模式时,请确保您是模块化的,并且始终保护全局范围 我总是使用App.js引用控制器文件,例如
var controller = require('/controller');
controller.loadApp();
这使得填充全局范围变得非常困难
遵循您提供的第二个示例,这是第一次使用
require('foo')
它被放在应用程序内存中,如果另一个页面或选项卡调用同一个页面或选项卡需要访问它,它不会重新加载它,它只是更改了指向该文件的指针,允许访问它的所有函数,例如您的textField函数。我这样做了,跳过的帧显著减少。谢谢