2015-09-03 31 views
0

我是JavaScript的新手,最近選擇了一個包含許多JavaScript文件的項目。這個工作的以前的人似乎使用大量的全局變量而不是任何設計模式。如何用JavaScript中的全局變量保存項目

在任何地方引用全局變量都很難維護。並可以通過直接鍵入全局變量名稱來查看控制檯中的私人信息。

所以我的問題是我應該如何進一步發展?我非常喜歡我的未來代碼更加有組織和模塊化。

我讀到有在JavaScript 沒有模塊定義,我可以

  1. 使用module patternRevealing module pattern

  2. 使用Requirejs/commonjs/webpack可能?

我不知道,閱讀文檔後,我仍然混淆起來,這有太大的差別,如果我用我自己module pattern或introducting另一requirejs?他們似乎都能夠讓我的代碼模塊化。

+0

我相信打字稿是'未來' –

回答

1

我還有另一個選項可供您嘗試 - es6模塊尚未得到完全支持,但您可以通過在您的項目中包含Babel或Traceur來完成此任務。

Requrejs也是一個不錯的選擇。我們確實在我們的大型項目中使用它,並且使用了大量的js文件,並且效果很好。雖然有一些特定的瓶頸,但很明確的解釋,你如何避免這些瓶頸。作爲一個例子,讓我們採用不是AMDish庫的Backbonejs。 AMDish我稱之爲需要其他模塊正確定義的模塊或庫。你可以在這裏閱讀關於如何正確製作你的AMD模塊:http://requirejs.org/docs/api.html(實際上你可以在這裏看到你需要的所有東西,我建議你在你的代碼做任何事情之前先閱讀API,雖然有些教程是非常好的開始,但通常它們不提供一些具體的東西,它可以給你帶來很多的痛苦,直到你閱讀上面的鏈接。幾個星期前我在這艘船上..)

另一個缺陷是,一些圖書館,像underscore.js仍然會出現在將其作爲AMD模塊包含在內後的全局範圍。不過,如果您真的需要,您可以尋找解決方法以避免它。

另外requirejs在使用墊片添加庫依賴性方面做得很好。

所以,是的,你絕對可以用requrejs,但也有一些意見,爲什麼你不應該 - http://codeofrob.com/entries/why-i-stopped-using-amd.html

所以與所有的框架和庫這是個人喜好,使用哪一個的問題。從我的角度來看,如果你想使用requirejs - 繼續前進,不要忘記閱讀API!

+0

嗨,謝謝你的快速回復。此外,我發現[此模塊模式答案](http://stackoverflow.com/a/1841971/3462558)。使用「模塊化模式」和「AMD模塊」有很大的不同。我看不到爲什麼我需要添加一個依賴關係。 – Qiang

+0

其實你不需要。這只是一個管理你的依賴關係的便利工具。Requirejs是用javascript編寫的,這意味着你可以在javascript中編寫相同的東西。這裏唯一需要注意的是:你自己編寫的所有東西都可以調試自己。爲您已經烘焙的所有東西都被使用了數千次,並且更容易找到答案「爲什麼這不起作用」。所以這取決於你! – aprok