2012-02-16 36 views
17

來自傳統的OOP背景我最近開始學習更多關於JavaScript的知識。然而,有一件事我不太清楚:如何在多個文件中組織JS功能

在傳統的OOP語言中,通常爲每個類創建一個單獨的文件,因爲這樣可以更容易地維護代碼。 JS沒有真正的類,據我所知,還沒有一種真正的直接方法來從一個文件中包含另一個JS文件。但是,當您在一個大型JS項目上與團隊合作時,您可能希望將該項目拆分爲多個文件。這是如何完成的?你把這些文件放在哪裏,你如何使它們正確加載?

回答

9

我愛你的問題。我寫我的JavaScript非常面向對象,並保持我的對象構造函數在他們自己的文件。我把我所有的.js文件放到一個可以按我想要的方式組織到子目錄中的目錄中。然後我運行一個「make」腳本。以下是我寫的Bash腳本。我在一臺Linux機器上工作,因此對於任何在Linux中工作的人來說,Bash腳本是一種自然的解決方案。

#!/bin/bash 

echo '' > temp0.js 
find ./bin/external -name \*.js -exec cat {} >> temp0.js \; 

echo ''> temp1.js 
echo '(function(){' > temp1.js 
find ./bin/prop -name \*.js -exec cat {} >> temp1.js \; 
echo '})();' >> temp1.js 

cat temp0.js temp1.js > script.js 
rm temp1.js temp0.js 

請原諒我,如果這個bash腳本是業餘的。我很樂意承認在bash腳本編寫中,我只是一起攻擊任何作品,但我喜歡我的JavaScript是乾淨整潔和麪向對象的。

這個bash腳本進入一個名爲「bin」的目錄旁邊,其中包含所有的javascript .js文件。在那裏,子目錄「external」包含各種借用的腳本,比如JQuery。在上面的示例中,我將自己的.js腳本放在名爲「prop」的文件夾中。 bash腳本獲取所有這些腳本並將它們連接起來。它還將我自己的prop文件封裝在一個匿名函數中,爲它們提供一個私有名稱空間(sortof)。

我想這很明顯,這不完全是你想要的 - Java - 但我認爲這種選擇是我們必須在JavaScript中做的。

+1

我真的很喜歡這個解決方案!這也是我得到的最完整的答案,非常感謝! – Tiddo 2012-02-17 23:56:38

1

您可以按照您喜歡的任何邏輯方法對文件進行分組。通常情況下,它是通過功能完成的 - 該文件可以激活徽標,該文件可以實現主頁幻燈片放映功能,該文件處理導航欄下拉菜單。我想你通常會把你的團隊分解成一個類似的組織,每個人都負責一個特定的功能。除此之外,源代碼控制管理就像任何其他項目一樣工作,在這些項目中用戶必須檢查或提交代碼。

4

JavaScripts原型模型非常符合OOP,您可以隨意在儘可能多的文件中分解代碼。有幾種不同的加載依賴關係的方法,RequireJS是一種流行的方法。

2

您必須以任何適合您項目的方式來細分代碼。

至於如何包含腳本,這是更困難的。最簡單的方法是隻包括多個JavaScript文件,按順序從HTML(<script src="..."></script><script src="..."></script>)呼籲或依賴管理者或類似YepnopeRequireJS負載腳本..

不過,如果你想只包括一個腳本從您的HTML,您可以連接文件(使用構建腳本Ant或類似的東西)或黑客使用Javascript來包括其他腳本,如描述在這裏:How do I include a JavaScript file in another JavaScript file?