亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

從零開始搭建webpack+react開發環境的詳細步驟

2024-05-06 16:44:30
字體:
來源:轉載
供稿:網友

環境主要依賴版本

  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. 起步

新建項目目錄,初始化npm,新建開發源目錄

mkdir webpack-react && cd webpack-reactnpm init -ymkdir src

2.webpack-cli

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

npm install webpack webpack-cli --save-dev

3.wepback配置文件

在項目根目錄新建webpack.config.js文件,此文件為webpack運行核心文件。

webpack.config.js 基本配置

// webpack.config.jsconst 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

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文件。

<!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>

到這里,webpack最簡單最基本的需求已經配置完畢。 此時項目結構為:

├── dist            // 生產目錄│  ├── 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轉換依賴

React組件由JSX組成,瀏覽器無法識別JSX,需要babel進行轉換。

  1. babel-croe 為babel核心文件
  2. babel-preset-env 將ES6轉義成ES5
  3. babel-preset-react 將JSX轉義成js
  4. 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需要的渲染根元素 <div id="root"></div></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.jsimport 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的基礎開發環境已全部配置完畢。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产中文字幕久久网| 精品毛片三在线观看| 中文字幕自拍vr一区二区三区| 亚洲人在线视频| 这里只有精品久久| 亚洲a中文字幕| 一区二区三区视频免费| 亚洲精品在线视频| www.色综合| 欧美激情精品久久久久久蜜臀| 最近2019年日本中文免费字幕| 亚洲欧美日韩天堂| 中文字幕日韩在线观看| 亚洲欧美一区二区三区四区| 精品视频在线播放免| 成人av番号网| 亚洲成人在线网| 色琪琪综合男人的天堂aⅴ视频| 久久久久久一区二区三区| 亚洲美腿欧美激情另类| 欧美丝袜一区二区三区| 国产日韩在线亚洲字幕中文| 亚洲第一精品久久忘忧草社区| 日本中文字幕成人| 日韩精品亚洲精品| 国产免费观看久久黄| 亚洲欧美综合图区| 久久99视频精品| 久久精品视频播放| 亚洲乱码国产乱码精品精| 国产精国产精品| 4p变态网欧美系列| 黑人巨大精品欧美一区二区一视频| 成人av在线亚洲| 国产精品96久久久久久又黄又硬| 中文字幕欧美专区| 国产精品一二三在线| 欧美在线一级视频| 成人精品视频久久久久| 成人乱人伦精品视频在线观看| 欧美多人乱p欧美4p久久| 日韩视频―中文字幕| 96国产粉嫩美女| 欧美专区在线观看| 国产精品久久久久久久久久免费| 国产精品99久久久久久人| 日韩一区二区在线视频| www.欧美精品一二三区| 69视频在线播放| 国色天香2019中文字幕在线观看| 国产又爽又黄的激情精品视频| 欧美日韩成人网| 亚洲精品国产欧美| 欧美精品生活片| 国内精品伊人久久| 久久久久久久久久久久av| 久久99精品久久久久久青青91| 国产午夜精品美女视频明星a级| 亚洲男人天堂2023| 欧美视频在线观看 亚洲欧| 精品久久久香蕉免费精品视频| 欧美激情一区二区三区在线视频观看| 国产精品久久久久久av下载红粉| 亚洲人免费视频| 国产综合色香蕉精品| 欧美成人中文字幕在线| 久久久精品影院| 日韩av在线免费观看一区| 成人www视频在线观看| 亚洲日韩欧美视频一区| 国产日韩欧美在线播放| 久久久久一本一区二区青青蜜月| 欧美老女人性视频| 亚洲美女性生活视频| 国产日韩欧美黄色| 国产精品一二三在线| 这里精品视频免费| 久久久久久久久久av| 性色av一区二区三区在线观看| 国产又爽又黄的激情精品视频| 一区二区日韩精品| 欧美亚洲免费电影| 尤物九九久久国产精品的分类| 狠狠爱在线视频一区| 亚洲free性xxxx护士hd| 国产精品嫩草影院久久久| 亚洲人成绝费网站色www| 国产高清视频一区三区| 久久久伊人欧美| 欧美人在线观看| 91沈先生在线观看| 亚洲国产日韩欧美在线图片| 日韩极品精品视频免费观看| 久久97精品久久久久久久不卡| 91精品国产91久久久久久久久| 自拍偷拍免费精品| 久久国产精品久久久久久久久久| 日韩网站在线观看| 日韩中文字幕在线看| 亚洲欧美中文日韩在线v日本| 欧亚精品在线观看| 亚洲免费视频一区二区| 中文字幕日韩电影| 亚洲精品电影网| 国产99久久精品一区二区| 2020国产精品视频| 91久久综合亚洲鲁鲁五月天| 国产女人精品视频| 国产一区二区在线免费| 久久91精品国产91久久久| 欧美另类极品videosbestfree| 亚洲永久免费观看| 在线一区二区日韩| 欧美综合国产精品久久丁香| 色99之美女主播在线视频| 久久久久久久久久久成人| 国产区亚洲区欧美区| 91sao在线观看国产| 亚洲人成绝费网站色www| 色综合天天狠天天透天天伊人| 欧美日本啪啪无遮挡网站| 国内外成人免费激情在线视频| 亚洲伊人久久综合| 国产福利精品在线| 亚洲色图13p| 国产精品美女久久久久av超清| 亚洲一区二区三区sesese| 欧美高清无遮挡| 38少妇精品导航| 欧美激情极品视频| 亚洲天堂男人天堂女人天堂| 久久久久999| 伊人久久免费视频| 亚洲无线码在线一区观看| 91po在线观看91精品国产性色| 国产精品一区二区三区免费视频| 韩国19禁主播vip福利视频| 综合欧美国产视频二区| 92版电视剧仙鹤神针在线观看| 羞羞色国产精品| 97成人精品区在线播放| 九九热最新视频//这里只有精品| 97免费视频在线| 亚洲一区二区三区久久| 欧美日韩亚洲激情| 国产亚洲美女久久| 亚洲乱码国产乱码精品精天堂| xxx一区二区| 日韩最新中文字幕电影免费看| 欧美大胆在线视频| 国产mv免费观看入口亚洲| 日本91av在线播放| 亚洲国产日韩欧美在线动漫| 亚洲第一男人天堂| 国产精品黄页免费高清在线观看| 日韩成人在线视频| 国产精品九九久久久久久久| 亚洲精品成人免费| 久久久久久久爱| 国产ts一区二区| 亚洲国产一区自拍| 日韩欧美国产高清91| 日韩电影中文字幕在线观看| 日韩黄在线观看|