最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

webpack手動(dòng)配置React開發(fā)環(huán)境的步驟

 更新時(shí)間:2018年07月02日 10:26:17   作者:木子昭  
本篇文章主要介紹了webpack手動(dòng)配置React開發(fā)環(huán)境的步驟,webpack手動(dòng)配置一個(gè)獨(dú)立的React開發(fā)環(huán)境, 開發(fā)環(huán)境完成后, 支持自動(dòng)構(gòu)建, 自動(dòng)刷新, sass語法 等功能...感興趣的小伙伴們可以參考一下

React提供了create-react-app的快速構(gòu)建工具, 但作為一個(gè)專業(yè)的程序員(老司機(jī)), 面對(duì)復(fù)雜的項(xiàng)目, 入門級(jí)的構(gòu)建工具, 是遠(yuǎn)遠(yuǎn)不夠的, 我們這里從零開始, 用webpack, 手動(dòng)配置一個(gè)獨(dú)立的React開發(fā)環(huán)境, 開發(fā)環(huán)境完成后, 支持自動(dòng)構(gòu)建, 自動(dòng)刷新, sass語法 等功能...

1. 首先用npm初始化環(huán)境

mkdir react-webpack-demo
cd react-webpack-demo
npm init -y

安裝相關(guān)軟件包

npm install react react-dom webpack webpack-cli webpack-dev-server html-webpack-plugin -D
npm install babel-core babel-loader babel-plugin-transform-runtime -D
npm install babel-preset-env babel-preset-stage-0 babel-preset-react -D
# 識(shí)別html轉(zhuǎn)換為jsx語法
npm install babel-preset-react -D

2.添加對(duì)html靜態(tài)文件的支持

  1. 在根目錄下新建文件夾src, 在src內(nèi)加入index.html  index.js
  2. 在根目錄下新建webpack.config.js
  3. 在webpack.config.js中加入如下配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

// 負(fù)責(zé)將html文檔虛擬到根目錄下
let htmlWebpackPlugin = new HtmlWebpackPlugin({
  // 虛擬的html文件名 index.html
  filename: 'index.html',
  // 虛擬html的模板為 src下的index.html
  template: path.resolve(__dirname, './src/index.html')
})

module.exports = {
  // 開發(fā)模式
  mode: 'development',
  // 配置入口文件
  entry: './src/index.js',
  // 出口文件目錄為根目錄下dist, 輸出的文件名為main
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'main.js'
  },
  // 配置開發(fā)服務(wù)器, 并配置自動(dòng)刷新
  devServer: {
    // 根目錄下dist為基本目錄
    contentBase: path.join(__dirname, 'dist'),
    // 自動(dòng)壓縮代碼
    compress: true,
    // 服務(wù)端口為1208
    port: 1208,
    // 自動(dòng)打開瀏覽器
    open: true
  },
  // 裝載虛擬目錄插件
  plugins: [htmlWebpackPlugin],
}

在package.json內(nèi)scripts中添加"dev": "webpack-dev-server"

在src/index.html中添加內(nèi)容

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>react-webpack-demo</title>
</head>
<body>
  react-webpack-demo
  <hr>
  高堂明鏡悲白發(fā), 朝如青絲暮成雪
</body>
</html>

在命令行內(nèi)運(yùn)行npm run dev, 即可看到剛添加的index.html內(nèi)容

接下來我們配置babel對(duì)es6語法的支持, 以及對(duì)jsx語法的支持

3. 添加對(duì)js高級(jí)語法的支持

在項(xiàng)目根目錄, 添加.babelrc配置文件 presets為語法配置,plugins為插件配置

{
  "presets": ["env", "stage-0", "react"],
  "plugins": ["transform-runtime"]
}

在webpack.config.js中添加module字段, 進(jìn)行插件loader配置

// webpack.config.js
module.exports = {
  ...
  // 配置loader
  module: {
    // 根據(jù)文件后綴匹配規(guī)則
    rules: [
      // 配置js/jsx語法解析
      { test: /\.js|jsx$/, use: 'babel-loader', exclude: /node_modules/ }
    ]
  }
};

在src/index.html中加入id為root的div節(jié)點(diǎn)

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

  react-webpack-demo
  <hr>
  高堂明鏡悲白發(fā), 朝如青絲暮成雪
  <hr>
  <div id="root"></div>
</body>
</html>

在src/index.js中加入包含jsx語法的react組件

import React from 'react';
import ReactDOM from 'react-dom';


class Counter extends React.Component {
  constructor(props) {
    super(props);
    this.state = { number: 0 };
    this.decrease = this.decrease.bind(this);
    this.increase = this.increase.bind(this);
  }
  // 加1
  increase() {
    let self = this;
    self.setState({ number: self.state.number + 1 })
  }
  // 減一
  decrease() {
    let self = this;
    self.setState({ number: self.state.number - 1 })

  }


  render() {
    return ( 
      <div>
        <input type = "button" value = "減1"onClick = { this.decrease }/> 
        <span> { this.state.number } </span>
        <input type = "button" value = "加1" onClick = { this.increase }/> 
      </div> )
  }
}

ReactDOM.render(<Counter /> , document.getElementById('root'))

附錄: 添加對(duì)sass語法的支持(沒興趣可以跳過)

安裝sass相關(guān)的loader

npm install style-loader css-loader node-sass sass-loader -D

在webpack.config.js內(nèi)新增規(guī)則

// webpack.config.js
module.exports = {
  ...
  module: {
    rules: [{
      test: /\.scss$/,
      use: [
        "style-loader", // creates style nodes from JS strings
        "css-loader", // translates CSS into CommonJS
        "sass-loader" // compiles Sass to CSS
      ]
    }]
  }
};

在src內(nèi)新增index.scss

$designWidth: 750;
@function px2rem($px) {
 @return $px*10/$designWidth + rem;
}

#root {
  div {
    font-size: px2rem(500);
    display: flex;
    color: #64B587;
    input {
      flex: 1 1 auto;
    }
    span {
      flex: 1 1 auto;
      text-align: center;
    }
  }
}

在index.js中新增import index.scss

最終效果:

文中相關(guān)資源鏈接:鏈接: https://pan.baidu.com/s/10PYXo_WoIScn-IFRdtuc5w 密碼: td78

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

相關(guān)文章

  • Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼

    Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼

    這篇文章主要介紹了Reactjs實(shí)現(xiàn)通用分頁組件的實(shí)例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-01-01
  • React Fiber中面試官最關(guān)心的技術(shù)話題

    React Fiber中面試官最關(guān)心的技術(shù)話題

    這篇文章主要為大家介紹了React Fiber中面試官最關(guān)心的技術(shù)話題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 使用react在修改state中的數(shù)組和對(duì)象數(shù)據(jù)的時(shí)候(setState)

    使用react在修改state中的數(shù)組和對(duì)象數(shù)據(jù)的時(shí)候(setState)

    這篇文章主要介紹了使用react在修改state中的數(shù)組和對(duì)象數(shù)據(jù)的時(shí)候(setState),具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • React創(chuàng)建對(duì)話框組件的方法實(shí)例

    React創(chuàng)建對(duì)話框組件的方法實(shí)例

    在項(xiàng)目開發(fā)過程中,對(duì)于復(fù)雜的業(yè)務(wù)選擇功能很常見,下面這篇文章主要給大家介紹了關(guān)于React創(chuàng)建對(duì)話框組件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 詳解使用WebPack搭建React開發(fā)環(huán)境

    詳解使用WebPack搭建React開發(fā)環(huán)境

    這篇文章主要介紹了詳解使用WebPack搭建React開發(fā)環(huán)境,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 解決react組件渲染兩次的問題

    解決react組件渲染兩次的問題

    這篇文章主要介紹了解決react組件渲染兩次的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 如何使用Redux Toolkit簡(jiǎn)化Redux

    如何使用Redux Toolkit簡(jiǎn)化Redux

    這篇文章主要介紹了如何使用Redux Toolkit簡(jiǎn)化Redux,幫助大家更好的理解和學(xué)習(xí)使用React框架,感興趣的朋友可以了解下
    2021-04-04
  • react 權(quán)限樹形結(jié)構(gòu)實(shí)現(xiàn)代碼

    react 權(quán)限樹形結(jié)構(gòu)實(shí)現(xiàn)代碼

    這篇文章主要介紹了react 權(quán)限樹形結(jié)構(gòu)實(shí)現(xiàn)代碼,項(xiàng)目背景react + ant design,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-05-05
  • React Render Props共享代碼技術(shù)

    React Render Props共享代碼技術(shù)

    render props是指一種在 React 組件之間使用一個(gè)值為函數(shù)的 prop 共享代碼的技術(shù)。簡(jiǎn)單來說,給一個(gè)組件傳入一個(gè)prop,這個(gè)props是一個(gè)函數(shù),函數(shù)的作用是用來告訴這個(gè)組件需要渲染什么內(nèi)容,那么這個(gè)prop就成為render prop
    2023-01-01
  • 代碼解析React中setState同步和異步問題

    代碼解析React中setState同步和異步問題

    前端框架從MVC過渡到MVVM。從DOM操作到數(shù)據(jù)驅(qū)動(dòng),一直在不斷的進(jìn)步著,本文給大家介紹React中setState同步和異步問題,感興趣的朋友一起看看吧
    2021-06-06

最新評(píng)論

辉南县| 中西区| 岚皋县| 江安县| 清流县| 哈密市| 白水县| 内江市| 鄂尔多斯市| 花莲县| 禄丰县| 阳东县| 东阿县| 柏乡县| 广宁县| 内黄县| 菏泽市| 弥渡县| 乌拉特前旗| 达尔| 南京市| 洛扎县| 江陵县| 鹿邑县| 建水县| 久治县| 大英县| 武隆县| 望谟县| 会东县| 凤凰县| 保亭| 龙胜| 朝阳市| 运城市| 江阴市| 卢湾区| 乐亭县| 加查县| 中方县| 泽州县|