webpack入坑之旅(一)不是開始的開始
最近學習框架,選擇了vue,然後接觸到了vue中的單文件組件,官方推薦使用 Webpack + vue-loader構建這些單文件 Vue 組件,於是就開始了webpack的入坑之旅。
因為原來沒有用過任何的構建工具與模塊化工具,所以本系列會十分的基礎。並且可能有很多不正確的地方,希望大家諒解,並指出錯誤幫助改進。謝謝!
什麽是webpack
Webpack 是德國開發者 Tobias Koppers 開發的模塊加載器兼打包工具,在webpack中,它能把各種資源,例如JS(含JSX)、coffee、樣式(含less/sass)、圖片等都作為模塊來使用和處理。因此, Webpack 當中 js 可以引用 css, css 中可以嵌入圖片 dataUrl。
對應各種不同文件類型的資源, Webpack 有對應的模塊 loader比如vue用的是vue-loader
請看下圖:
https://github.com/webpack/webpack
安裝
前提:因為webpack是一個基於node的項目,所以首先需要確保你的電腦裏面已經安裝了node.js
,以及npm
。在這裏我使用的版本是:node:v8.11.2 ,npm:6.2.0
,若是版本問題,請更新到最新版。
若是有出現npm安裝過慢的情況,可以使用nrm這個項目來進行npm源地址的切換。或者使用使用淘寶出品的 cnpm
首先我們直接進行全局的安裝,運行如下命令:npm install webpack webpack-cli -g
,可能需要一點時間。
安裝成功後,在命令行輸入webpack -h
當然,我們都應該將webapck安裝到當前的項目依賴中,此時就可以使用項目的本這樣就可以使用項目本地版本的 Webpack。
1
|
# 確保已經進入項目目錄
|
安裝好之後我們的package.json
的目錄應該是這樣的:
1
|
{
|
既然環境都已經安裝好了,那麽我們就開始來用webpack進行我們的第一個打包運行程序吧!
首先創建一個靜態頁面 index.html
和一個 JS 入口文件 entry.js
,(這裏你想用什麽名字都可以,只需要在打包的時候讀取文件為該名字就好,不過,到時候就知道這個名字的含義啦!):
1
|
<!-- index.html -->
|
1
|
/*** entry.js ***/
|
文件都已經創建成功了,那麽就開始我們的打包吧!
由於我們將 webpack
安裝在了 項目目錄。所以是不會向終端寫入 webpack
命令的,這時我們可以像 npm script 中加入命令 :
1
|
"scripts": {
|
然後我們運行 npm run start
,就會執行 webpack entry.js --output-filename=./bundle.js --mode=development
。
或者我們可以借用 npm 內置的執行器做到同樣的事情 npx webpack entry.js --output-filename=./bundle.js --mode=development
在瀏覽器中打開index.html
,就能看到我們設置的文字啦!:這是我第一個打包成功的程序
這麽簡單的功能直接在html中引入不就好了嗎?確實是這樣的,不過我們這才剛剛開始嘛,不要急。
下面我們再來增加一個文件,名為first.js
內容如下:
1
|
var h2= document.createElement("h2")
|
更改 entry.js
:
1
|
document.getElementById(‘app‘).innerHTML="這是我第一個打包成功的程序";
|
再來進行一次重復的工作,再打包一次。webpack entry.js --output-filename=./bundle.js --mode=development
,如果成功,打包過程會顯示日誌:
1
|
Hash: b1cfe7ff9d75ce235dc9
|
Webpack
會分析入口文件,解析包含依賴關系的各個文件。這些文件(模塊)都打包到 bundle.js
。Webpack
會給每個模塊分配一個唯一的 id
並通過這個 id
索引和訪問模塊。在頁面啟動時,會先執行 entry.js
中的代碼,其它模塊會在運行 require
的時候再執行。
刷新瀏覽器,可以發現我們的剛剛的代碼已經生效,又有了新的文字出現。
- 本文鏈接: http://guowenfh.github.io/2016/03/24/vue-webpack-01-base/
webpack入坑之旅(一)不是開始的開始