2012-10-07 63 views
1

我正在爲Titanium編寫一個應用程序。我在一個JS文件中有很多代碼。我想知道是否有任何功能,如PHP的包括將代碼分成多個文件,然後只包含它們。清理一大段Javascript代碼

謝謝

+0

您可以加載多個js文件,甚至可以菊花鏈連接通話。但最好在多個文件中進行編程(爲了簡化組織),然後在需要上線時將它們連接在一起。在下載一個大文件時看到好處,而不是多個小文件 – vol7ron

+0

您應該查看http://requirejs.org/ – balafi

回答

2

使用CommonJS的/ RequireJS方法,特別是require命令。這是處理Titanium大型系統的(強烈推薦)方式,並且在其網站上有詳細記錄,以及處理特定於Titanium的JavaScript模塊化的許多最佳實踐。 Here is the documentation from Titanium on this.

例如,創建一個封裝了某種形式的「查看」模塊,把它放在一個與此內容命名爲MyCustomView.js文件:

// MyCustomView.js 
function MyCustomView(message) { 
    var self = Ti.UI.createView({ 
     backgroundColor : 'red' 
    }); 
    var label = Ti.UI.createLabel({ 
     text : message, 
     top : 15, 
     .... // Other initialization 
    }); 

    // ... Other initialization for your custom view, event listeners etc. 
    return self; 
} 

module.exports = MyCustomView; 

現在你可以在另一個類很容易使用這個模塊,讓我們假設你把它放在你的/Resources文件夾中,讓我們把模塊加載到app.js裏面並將它添加到主窗口中。

// app.js 
var MyCustomView = require('MyCustomView'); 
var myView = new MyCustomView('A message!'); 
Titanium.UI.currentWindow.add(myView); 

您可以使用這種方法來製作自定義視圖,可重複使用的代碼庫以及任何您想要的內容。另一種常見的事情是有,有許多不同的輔助功能的實用程序類:

// Utility.js 
exports.cleanString = function(string) { 
    // Replace evil characters 
    var ret = string.replace(/[|&;$%@"<>()+,]/g, ""); 
    // replace double single quotes 
    return ret.replace(/"/g, "''"); 
} 

這種方法可以很容易地使用這樣的:

// app.js 
var Utility = require('Utility.js'); 
Ti.API.info(Utility.cleanString('He##o W&orld$')); 

我用它的另一種常見的方法是實施在Singleton pattern爲每個加載模塊是其自身功能方面,所以如果你喜歡,你可以有持久價值:

// ManagerSingleton.js 
var SpriteManager = { 
    count : 0 
}; 

exports.addSprite = function() { 
    SpriteManager.count++; 
} 

exports.removeSprite = function() { 
    SpriteManager.count--; 
} 

你會加載並使用ŧ他的方式幾乎一樣的效用:

// app.js 
var ManagerSingleton = require('ManagerSingleton'); 
ManagerSingleton.addSprite(); 

這是一個更優雅的解決方案的東西,而不是使用全局變量。這些方法絕不是完美的,但它們爲我節省了大量時間和挫敗感,併爲我的Titanium代碼增加了深度,優雅和可讀性,適用於各種大小和類型的應用程序。

+0

感謝您的示例 – Fox

1

Javascript世界中有兩個主要的模塊系統。 一個是CommonJS,另一個是AMD。有很多討論哪一個最好,什麼目的。 CommonJS更廣泛地用於服務器端JS,而AMD主要用於瀏覽器JS。

RequireJS(requirejs.org)似乎是最流行的AMD系統。

有關JS模塊系統的信息,請閱讀這裏:http://addyosmani.com/writing-modular-js/