在JavaScript剛開始發展時,就是爲了實現簡單的頁面交互邏輯,寥寥數語便可;現在cpu、瀏覽器性能獲得了極大的提高,不少頁面邏輯遷移到了客戶端,表單驗證等,隨着web2.0時代的到來,Ajax技術使用愈來愈多,jQuery等前端庫層出不窮,前端代碼日益膨脹,這時候JavaScript做爲嵌入式的腳本語言的定位動搖了,JavaScript卻沒有爲組織代碼提供任何明顯幫助,甚至沒有類的概念,更不用說模塊module了,JavaScript極其簡單的代碼組織規範不足以駕馭如此龐大規模的代碼前端
既然JavaScript不能handle如此大規模的代碼,咱們能夠借鑑一下其它語言是怎麼處理大規模程序設計的,在Java中有一個重要帶概念package,邏輯上相關的代碼組織到同一個包內,包內是一個相對獨立的王國,不用擔憂命名衝突什麼的,那麼外部若是使用呢?直接import,對應的package便可,遺憾的是JavaScript在設計時定位緣由,沒有提供相似的功能,開發者須要模擬出相似的功能,來隔離、組織複雜的JavaScript代碼,咱們稱爲模塊化。一個模塊就是實現特定功能的文件,有了模塊,咱們就能夠更方便地使用別人的代碼,想要什麼功能,就加載什麼模塊。模塊開發須要遵循必定的規範,各行其是就都亂套了規範造成的過程是痛苦的,前端的先驅在刀耕火種、茹毛飲血的階段開始,發展到如今初具規模,簡單瞭解一下這段不凡的歷程web
函數一個功能就是實現特定邏輯的一組語句打包,並且JavaScript的做用域就是基於函數的,因此把函數做爲模塊化的第一步是很天然的事情,在一個文件裏面編寫幾個相關函數就是最開始的模塊了。這樣在須要的之後夾在函數所在文件,調用函數就能夠了這種作法的缺點很明顯:污染了全局變量,沒法保證不與其餘模塊發生變量名衝突,並且模塊成員之間沒什麼關係。瀏覽器