欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

從零開(kāi)始搭建webpack+react開(kāi)發(fā)環(huán)境的詳細(xì)步驟

 更新時(shí)間:2018年05月18日 10:02:03   作者:會(huì)寫(xiě)代碼的husky  
這篇文章主要介紹了從零開(kāi)始搭建webpack+react開(kāi)發(fā)環(huán)境的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

環(huán)境主要依賴版本

  1. webpack@4.8.1
  2. webpack-cli@2.1.3
  3. webpack-dev-server@3.1.4
  4. react@16.3.2
  5. babel-core@6.26.3
  6. babel-preset-env@1.6.1
  7. bable-preset-react@6.24.1

webpack安裝及配置

1. 起步

新建項(xiàng)目目錄,初始化npm,新建開(kāi)發(fā)源目錄

mkdir webpack-react && cd webpack-react
npm init -y
mkdir src

2.webpack-cli

webpack從4.x版本開(kāi)始,需要同時(shí)安裝webpack,webpack-cli(此工具用于在命令行中運(yùn)行webpack)。

npm install webpack webpack-cli --save-dev

3.wepback配置文件

在項(xiàng)目根目錄新建webpack.config.js文件,此文件為webpack運(yùn)行核心文件。

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')  // 打包后自動(dòng)輸出目錄
  }
}

package.json 文件 scripts配置

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

此時(shí)在命令行運(yùn)行npm run build,就能執(zhí)行webpack了,webpack會(huì)自動(dòng)去找項(xiàng)目根目錄里的webpack.config.js文件,執(zhí)行打包。

npm run build
// webpack打包后的項(xiàng)目
├── dist
│  └── app.js       // 打包后的app.js
├── package.json
├── src
│  └── index.js      // 源目錄入口文件
└── webpack.config.js

webpack.config.js module相關(guān)配置

webpack 視所有文件都為模塊,圖片,css文件,字體等靜態(tài)資源都會(huì)打包進(jìn)js文件,所以會(huì)需要用到loader文件,更多Loaders可以查詢網(wǎng)址,接下來(lái)我們安裝一些必要的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文件或者其他靜態(tài)資源。

cd src && touch main.css

src/index.js 文件引入css

import "./main.css";

webpack.config.js plugins配置

主要的js文件和靜態(tài)文件都能成功打包成一個(gè)js文件后,我們需要把這個(gè)js文件放到html文件里,webpack插件***html-webpack-plugin***就是干這個(gè)事兒的,它能自動(dòng)生成一個(gè)html文件并把我們打包好的js文件放入html。

npm install html-webpack-plugin --save-dev

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
 ]
};

執(zhí)行npm run build后,我們可以看到dist目錄多出一個(gè)index.html文件。

<!DOCTYPE html>
<html>
 <head>
  <meta charset="UTF-8">
  <title>name</title>
 </head>
 <body>
 // 打包后的app.js已經(jīng)被自動(dòng)插入了html文件
 <script type="text/javascript" src="app.js"></script></body>
</html>

到這里,webpack最簡(jiǎn)單最基本的需求已經(jīng)配置完畢。 此時(shí)項(xiàng)目結(jié)構(gòu)為:

├── dist            // 生產(chǎn)目錄
│  ├── app.js
│  └── index.html
├── package.json
├── src            // 源目錄
│  ├── index.js
│  └── main.css
└── webpack.config.js

React 的webpack配置

安裝react

npm install react react-dom --save

安裝react,wepback轉(zhuǎn)換依賴

React組件由JSX組成,瀏覽器無(wú)法識(shí)別JSX,需要babel進(jìn)行轉(zhuǎn)換。

  1. babel-croe 為babel核心文件
  2. babel-preset-env 將ES6轉(zhuǎn)義成ES5
  3. babel-preset-react 將JSX轉(zhuǎn)義成js
  4. babel-loader webpack的babe轉(zhuǎn)換

復(fù)制代碼 代碼如下:
npm install babel-core babel-preset-env babel-preset-react babel-loader --save-dev

.babelrc配置文件

在項(xiàng)目根目錄下新建.babelrc文件,此文件為bable核心配置,babel會(huì)自動(dòng)在項(xiàng)目根目錄下識(shí)別。

// .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需要獲取頁(yè)面一個(gè)根元素,然后render才會(huì)生效,我們可以新建一個(gè)html文件,讓html-webpack-plugin插件基于這個(gè)文件來(lái)進(jìn)項(xiàng)打包。

所以我們?cè)诟夸浵滦陆ㄒ粋€(gè)html文件,以此文件作模板。

// index.html
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
    // react需要的渲染根元素
 <div id="root"></div>
</body>
</html>

此時(shí)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'  // 模板文件位置
 }) 
 ]
};

書(shū)寫(xiě)React,運(yùn)行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')
);

運(yùn)行npm run build,生成dist目錄,打開(kāi)dist目錄中的index.html文件,可以發(fā)現(xiàn)瀏覽器已正常渲染"hello world"。

dev環(huán)境熱更新配置

react的wepack完成以后,是不是發(fā)現(xiàn)每修改一次代碼,想看到效果,得重新打包一次才行。webpack-dev-server配置可以幫助我們實(shí)現(xiàn)熱更新,在開(kāi)發(fā)環(huán)境解放我們的生產(chǎn)力。

安裝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 檢測(cè)文件改動(dòng)替換plugin
 new webpack.NamedModulesPlugin(),   
 new webpack.HotModuleReplacementPlugin() 
 ],
    // webpack-dev-server 配置
 devServer: {
 contentBase: './dist',
 hot: true
 },
};

運(yùn)行webpack-dev-server

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

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

命令行運(yùn)行 npm run dev

可以在瀏覽器中輸入localhost:8080 內(nèi)容即為dist目錄下的index.html內(nèi)容。修改src/index.js中的內(nèi)容或者依賴,即實(shí)時(shí)在瀏覽器熱更新看到。

至此,react的webpack的基礎(chǔ)開(kāi)發(fā)環(huán)境已全部配置完畢。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論