想要了解 webpack 是個什麼,首先要知道瀏覽器在解析 js 的時候,它有一個盲點就是,沒有做到 js 檔案的模組化。比如一個檔案要想給另外一個檔案暴露出去一部分資料或者一個變數,那隻能將它定義在全域性的作用域下,沒有其他的辦法。今天 WordPress 站羣主機運營商推薦閲讀:《一個 WP 虛擬主機最多可以放幾個網站》
比如 b 依賴於 c,a 依賴於 b:





這種依賴關係隨著專案越來越大、越來越複雜,也會變得複雜,而且依賴鏈會越來越長。但是最坑的地方每一個依賴裏頭會暴露出來一個全域性變數。這個就不太好了。
(function(){
window.msg =”abc”
})()
新的隱患和解決方案
通過定義全域性變數,雖然可以暫時解決依賴的問題,這會帶來一個新的隱患。因為在不知情的情況下,不知道在什麼時候,以什麼樣的方式會覆蓋掉一個全域性變數。如果所有的依賴都是自己去寫的,那就比較清楚哪些全域性變數,如果引入的是外部的庫,這個全域性變數就不受控制,因為別人的庫也隨時可能更新的,可能後面又變了。後面會那很難去繞開這個東西。所以無論用任何方式來定義全域性變數,總有一定的可能性發生衝突。這樣就很不穩定還沒有可行的辦法。推薦閲讀:《新企業站羣網站為什麼應該選擇雲主機?》
什麼是 webpack?webpack 有什麼作用?
後面出現了一個 node,nodejs 可以直接跑在作業站羣系統上。瀏覽器也可以跑在站羣系統上,但是 nodejs 有個非常好的機制,就是在 node 的眼裏,所有的檔案都是一個模組,任何一個模組都可以有兩個口,一個是入水口、一個是出水口,這樣一來每個檔案只需要管好兩個,一個入水口一個出水口。這個就是 node 裏面有個 module,其中 module.exports 表示出水口,module.require 表示依賴,表示入水口。
//b.js 出水口
var msg =”asd”;
module.exports ={mes:mes}
//a.js 入水口
var msg = require(./b.js).msg;//可以省略.js 如:require(./b).msg
require(./b.js).msg 明確指明要用 b 檔案裏面的 msg,exports 指明瞭要匯出去的變數。再也不需要全域性變數這樣的東西。
webpack 它解決的最重要的問題就是這樣一個問題,用寫後端語言的方式寫前端的代碼,webpack 可以做到動態的把後端的代碼變成瀏覽器能夠讀懂的代碼。即把後端代碼前端化。這是最主要的。
至於它打包出來的檔案有多醜我們不管,只要它能用,只要它體積小就可以了。
格式:
webpack 入口檔案 要輸出的檔案
webpack a.js bundle.js
這樣一來,即做到用後端的方式讓代碼更加模組化,也能用瀏覽器來讀懂代碼。以上就是海外雲主機給大家推薦閲讀:《雲主機是創業公司的好選擇嗎?》