首頁 >web前端 >js教程 >應該如何搭建webpack+react開發環境

應該如何搭建webpack+react開發環境

php中世界最好的语言
php中世界最好的语言原創
2018-05-28 15:41:181587瀏覽

這次帶給大家應該如何搭建webpack react開發環境,搭建webpack react開發環境的注意事項有哪些,下面就是實戰案例,一起來看一下。

環境主要依賴版本

  1. webpack@4.8.1

  2. webpack-cli@2.1 .3

  3. webpack-dev-server@3.1.4

  4. react@16.3.2

babel-core@6.26.3

babel-preset-env@1.6.1

##bable-preset-react@6.24. 1

webpack安裝及設定

#1. 起步

新專案目錄,初始化npm,新開發來源目錄

mkdir webpack-react && cd webpack-react
npm init -y
mkdir src
2.webpack-cliwebpack從4.x版本開始,需要同時安裝webpack,webpack-cli(此工具用於在命令列中執行webpack)。

npm install webpack webpack-cli --save-dev
3.wepback

設定檔

在專案根目錄新建webpack.config.js文件,此檔案為webpack執行核心檔案。

webpack.config.js 基本設定

// webpack.config.js
const path = require('path');
module.exports = {
  entry: './src/index.js',              // 入口文件
  output: {                       // webpack打包后出口文件
    filename: 'app.js',               // 打包后js文件名称
    path: path.resolve(dirname, 'dist')  // 打包后自动输出目录
  }
}
package.json 檔案scripts設定
"scripts": {
  "build": "webpack"
}
此時在命令列執行npm run build,就能執行webpack了,webpack會自動去找專案根目錄裡的webpack.config.js文件,執行打包。

npm run build
// webpack打包后的项目
├── dist
│  └── app.js       // 打包后的app.js
├── package.json
├── src
│  └── index.js      // 源目录入口文件
└── webpack.config.js

webpack.config.js module相關配置

webpack 視所有文件都為模組,圖片,css文件,字體等靜態資源都會打包進js文件,所以會需要用到loader文件,更多Loaders可以查詢網址,接下來我們再安裝一些必要的Loader檔。

npm install style-loader css-loader url-loader --save-dev
webpack.config.js加入module模組

module.exports = {
 entry: './src/index.js',
 output: {
 filename: 'app.js',
 path: path.resolve(dirname, 'dist')
 },
 module: {
 rules: [
  {
  test: /\.css$/,
  use: ['style-loader', 'css-loader']
  },
  {
  test: /\.(png|svg|jpg|gif)$/,
  use: ['url-loader']
  },
  {
  test: /\.(woff|woff2|eot|ttf|otf)$/,
  use: ['url-loader']
  }
 ]
 }
}
引入loader後,就可以在你的src/index.js檔案import你想引入的css檔案或其他靜態資源。
cd src && touch main.css
src/index.js 檔案引入css

import "./main.css";

webpack.config.js plugins設定

主要的js檔案與靜態檔案都能成功打包成一個js檔案後,我們需要把這個js檔案放到html檔案裡,webpack插件***html-webpack-plugin***就是乾這個事兒的,它能自動產生一個html檔案並把我們打包好的js檔案放入html。
    npm install html-webpack-plugin --save-dev
  1. webpack.config.js 設定plugins

    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin'); // 引入插件
    module.exports = {
     entry: './src/index.js',
     output: {
     filename: 'app.js',
     path: path.resolve(dirname, 'dist')
     },
     module: {
     rules: [
      {
      test: /\.css$/,
      use: ['style-loader', 'css-loader']
      },
      {
      test: /\.(png|svg|jpg|gif)$/,
      use: ['url-loader']
      },
      {
      test: /\.(woff|woff2|eot|ttf|otf)$/,
      use: ['url-loader']
      }
     ]
     },
     plugins: [
     new HtmlWebpackPlugin({title: 'production'}) // 配置plugin
     ]
    };
    執行npm run build後,我們可以看到dist目錄多出一個index.html檔。
  2. <!DOCTYPE html>
    <html>
     <head>
      <meta charset="UTF-8">
      <title>name</title>
     </head>
     <body>
     // 打包后的app.js已经被自动插入了html文件
     <script type="text/javascript" src="app.js"></script></body>
    </html>
  3. 到這裡,webpack最簡單、最基本的需求已經配置完畢。此時專案結構為:

    ├── dist            // 生产目录
    │  ├── app.js
    │  └── index.html
    ├── package.json
    ├── src            // 源目录
    │  ├── index.js
    │  └── main.css
    └── webpack.config.js
  4. React 的webpack配置
  5. 安裝react
  6. npm install react react-dom --save
  7. 安裝react,wepback轉換依賴

# React元件由JSX組成,瀏覽器無法辨識JSX,需要babel來轉換。

babel-croe 為babel核心檔案

#babel-preset-env 將ES6轉義成ES5

#babel-preset-react 將JSX轉義成js

babel-loader webpack的babe轉換

#複製程式碼

程式碼如下:

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

####.babelrc設定檔# ########在專案根目錄下新建.babelrc文件,此文件為bable核心配置,babel會自動在專案根目錄下識別。 ###
// .babelrc
{
 "presets": ["env", "react"]
}
###webpack babel-loader 設定###
// 在webpack.config.js 的modules.rules中加入此配置
{
 test: /\.(js|jsx)$/,
 exclude: /node_modules/,
 use: {
 loader: 'babel-loader'
 }
}
######html-webpack-plugin 範本設定#########我們知道react需要取得頁面一個根元素,然後render才會生效,我們可以新建一個html文件,讓html-webpack-plugin插件基於這個文件來進項打包。 ######所以我們在根目錄下新建一個html文件,以此文件作模板。 ###
// index.html
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
    // react需要的渲染根元素
 <p id="root"></p>
</body>
</html>
###此時webpack.config.js設定:###
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
 entry: './src/index.js',
 output: {
 filename: 'app.js',
 path: path.resolve(dirname, 'dist')
 },
 module: {
 rules: [
  {
  test: /\.(js|jsx)$/,
  exclude: /node_modules/,
  use: {
   loader: 'babel-loader'
  }
  },
  {
  test: /\.css$/,
  use: ['style-loader', 'css-loader']
  },
  {
  test: /\.(png|svg|jpg|gif)$/,
  use: ['url-loader']
  },
  {
  test: /\.(woff|woff2|eot|ttf|otf)$/,
  use: ['url-loader']
  }
 ]
 },
 plugins: [
 new HtmlWebpackPlugin({
  title: 'production',
  template: './index.html'  // 模板文件位置
 }) 
 ]
};
###書寫React,執行webpack###
// src/index.js
import React from 'react';
import ReactDom from 'react-dom';
import './main.css'
ReactDom.render(
 <h1>hello world</h1>,
 document.getElementById('root')
);

运行npm run build,生成dist目录,打开dist目录中的index.html文件,可以发现浏览器已正常渲染"hello world"。

dev环境热更新配置

react的wepack完成以后,是不是发现每修改一次代码,想看到效果,得重新打包一次才行。webpack-dev-server配置可以帮助我们实现热更新,在开发环境解放我们的生产力。

安装webpack-dev-server

npm install webpack-dev-server --save-dev

webpack.config.js 配置

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const webpack = require('webpack');
module.exports = {
 entry: './src/index.js',
 output: {
 filename: 'app.js',
 path: path.resolve(dirname, 'dist')
 },
 module: {
 rules: [
  {
  test: /\.(js|jsx)$/,
  exclude: /node_modules/,
  use: {
   loader: 'babel-loader'
  }
  },
  {
  test: /\.css$/,
  use: ['style-loader', 'css-loader']
  },
  {
  test: /\.(png|svg|jpg|gif)$/,
  use: ['url-loader']
  },
  {
  test: /\.(woff|woff2|eot|ttf|otf)$/,
  use: ['url-loader']
  }
 ]
 },
 plugins: [
 new HtmlWebpackPlugin({
  title: 'production',
  template: './index.html'  
 }),
 // hot 检测文件改动替换plugin
 new webpack.NamedModulesPlugin(),   
 new webpack.HotModuleReplacementPlugin() 
 ],
    // webpack-dev-server 配置
 devServer: {
 contentBase: './dist',
 hot: true
 },
};

运行webpack-dev-server

在 package.json 文件 加入 scripts 配置:

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

命令行运行 npm run dev

可以在浏览器中输入localhost:8080 内容即为dist目录下的index.html内容。修改src/index.js中的内容或者依赖,即实时在浏览器热更新看到。

至此,react的webpack的基础开发环境已全部配置完毕。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

怎样使用JS实现调用本地摄像头

怎样使用JS实现3des+base64加密解密算法

以上是應該如何搭建webpack+react開發環境的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn