1. 程式人生 > >(24/24) webpack小案例--自己動手用webpack構建一個React的開發環境

(24/24) webpack小案例--自己動手用webpack構建一個React的開發環境

通過前面的學習,對webpack有了更深的認識,故此節我們就利用前面相關知識自己動手用webpack構建一個React的開發環境,就算是一個小案例吧。

注:此處使用的開發工具是Webstorm。

1.安裝webpack

1.1 新建資料夾

在安裝webpack之前,我們先建立一個資料夾,並利用開發工具webstorm開啟剛才新建的資料夾(或者新建專案,其專案目錄選擇剛才新建的資料夾),然後使用webstorm終端初始化webpack專案,命令如下:

npm  init -y

-y:表示預設初始化所有選項。

 初始化成功後可以在專案根目錄下看到package.json檔案。

1.2 安裝webpack

package.json檔案建立好以後,開始安裝webpack,同樣是在webstorm終端輸入安裝命令(可以使用npm安裝也可以使用cnpm安裝):

npm install --save-dev [email protected]

--save-dev:安裝到該專案目錄中。 

注意:此處為了相容,webpack使用3.8.1版本。

安裝好後,則會在package.json裡看到當前安裝的webapck版本號。

2.配置webpack.config.js

在專案根目錄建立webpack.config.js檔案,這個檔案是進行webpack配置的,先建立基本的入口和出口檔案。

2.1 配置

var path =require('path');
module.exports = {
    //入口檔案
    entry:'./app/index.js',
    //出口檔案
    output:{
        filename:'index.js',
        path:path.resolve(__dirname,'dist')
    }
}

2.2 根據結構修改專案目錄

檔案配置好後,我們要根據檔案的結構改造我們的專案目錄,我們在根目錄下新建app和dist資料夾,然後進入app資料夾,新建一個index.js檔案。

3. 新建index.html檔案

在根目錄新建index.html檔案,並引入webpack設定中的出口檔案,程式碼如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack react案例</title>
</head>
<body>

</body>
<!--引入出口檔案-->
<script src="./temp/index.js"></script>
</html>

4. 增加打包命令並測試配置是否成功

4.1 增加命令

開啟package.json檔案,在scripts屬性中加入build命令。

"scripts": {
    "build": "webpack"
  },

4.2 測試配置

4.2.1 測試程式碼

操作為在入口檔案中寫入部分程式碼,並進行打包測試:

app/index.js檔案:

function component(){
    var element = document.createElement('div');
    element.innerHTML = ('Hello webpack react');
    return element;
}
document.body.appendChild(component());

4.2.2 打包操作

在終端中輸入npm run build進行打包,如果沒有出現錯誤,手動在瀏覽器中開啟index.html,出現以下效果說明配置成功。

5. 開發伺服器配置

到該步我們還缺少一個實時更新的服務,我們開始配置:

5.1 外掛安裝

此處為了相容使用指定安裝方式。安裝的版本為2.9.7。

npm install --save-dev [email protected]

5.2 配置webpack.config.js檔案

devServer:{
    contentBase:'./',
    host:'localhost',
    compress:true,//啟動壓縮
    port:1818
}

5.3 新增命令

配置好後再packeage.json裡增加一個scripts命令,我們起名叫server。

"scripts": {
    "build": "webpack",
    "server": "webpack-dev-server --open"
  },

–open表示是直接開啟瀏覽器。

5.4 啟動服務

在終端執行npm run server 命令啟動服務。

npm run server

 瀏覽器自動開啟,效果與前面手動結果一致。

6.配置自動重新整理瀏覽器

到此我們修改程式碼時,瀏覽器不能自動重新整理,無法實時呈現我們編寫的程式碼結果,只能重複新打包才能生效。

解決方法為:使公共路徑指向記憶體。temp是系統的臨時檔案,存放記憶體重新整理值。

6.1 配置出口檔案

在出口檔案配置中加一個publicPath:’temp/’ 。

 //出口檔案
    output:{
        filename:'index.js',
        path:path.resolve(__dirname,'dist'),
        publicPath:'temp/'
    }

6.2 修改index.html中引入的js檔案

<script src="./temp/index.js"></script>

6.3 重新啟動服務配置成功

關閉之前的服務,然後使用npm run server 重新啟動服務。

npm run server

6.4 測試自動重新整理瀏覽器是否成功

改寫入口檔案中內容,然後儲存,可以看到瀏覽器自動重新整理,渲染了最新的值,說明自動重新整理配置成功。

7. Babel安裝配置

在webpack中配置Babel需要先加入babel-loader,我們使用npm來進行安裝,我們還需要支援es2015和React,所以要安裝如下四個包:

此處為了相容問題我使用指定版本的安裝方式,如下:

npm  install --save-dev [email protected] [email protected] [email protected] [email protected]

當然你也可以使用下列方式安裝最新的,出現版本問題在對應去調整即可(不過有些費時費力而已,呵呵)

npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react

 這裡四個包的安裝,這四個包是不能省略。安裝後你會在package.json裡看到這些包的版本如下:

    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "webpack": "^3.8.1",
    "webpack-dev-server": "^2.9.7"

8. .babelrc配置

安裝完成後,我們需要對我們的babel進行一些相關配置,使其對es6、react等進行支援。

8.1 新建  .babelrc

在專案根目錄新建.babelrc檔案,並把配置寫到檔案裡。

.babelrc:

{
    "presets":["react","es2015"]
}

9.  配置module

.babelrc配置完成後,到webpack.config.js裡配置module,也就是配置我們常說的loader。

module:{
    loaders:[
        {
            test:/\.(jsx|js)$/,//匹配掉js或者jsx的正則
            exclude:/node_modules/,//排除不操作的檔案
            loaders:"babel-loader",//使用loader進行操作
        }
    ]
}

 10. 編寫React

webpack通過上邊的步驟,基本已經配置完成了,這裡我們寫一個React檔案來進行測試一下。

10.1 安裝React相關包

安裝React和React-dom:

npm install --save react  react-dom

10.2 改寫入口檔案

安裝完成後,我們改寫app/index.js檔案,把原來原生的JavaScript程式碼改成React程式碼。

app/index.js:

import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
    <div>Hello react</div>,
    document.getElementById("app")
);

10.3 新增掛載點

在index.html中新增一個div層,設定id="app"作為react的掛載點。

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack react案例</title>
</head>
<body>

<!--掛載點--> <div id="app"></div>

</body> <!--引入出口檔案--> <script src="./temp/index.js"></script> </html>

11. 測試相關配置是否成功

當上述都配置完成後,使用npm run server 重新啟動服務,若是出現失敗,建議先把node_modules刪除了,然後在使用 npm install 進行安裝。

npm run server

如果在瀏覽器中看到了Hello react 這段文字,說明我們的配置是成功的。如下:

上述只是簡單的配置了一些內容,還很不成熟,支援的較少,實際在現實開發中已經有很多做好的腳手架供我們使用,我們不必去造輪子。

若是在上述配置中出現什麼問題,歡迎留言我們共同探討。。。