構建React開發環境

使用Yarn包管理工具,基於Webpack構建工具,搭建React開發環境

React

因爲一些軟件安裝跟系統環境相關,故這裏查看本文檔,須要根據本身的系統環境,選擇相對應的系統版本。javascript

本文運行環境css

system:macos
react:16.8.6
react-dom:16.8.6
webpack:4.36.1html

Yarn前端

Yarn 是一個快速、可靠、安全的依賴管理工具,又 faceback開源java

Yarn 經過一組豐富的命令執行包的安裝、管理、發佈等操做。node

Yarn 與 Npm的許多功能是相同的,包的元數據格式也是同樣的,所以能夠無痛遷移到 Yarn。react

中文文檔:https://yarn.bootcss.com/docs...webpack

MacOS系統安裝Yarnweb

brew install yarn

在一個空目錄下,用 Yarn初始化一個新項目macos

yarn init

React

react用於構建用戶界面的 JavaScript

官方文檔:https://zh-hans.reactjs.org/

安裝項目運行依賴 react包 和 react-dom包

yarn add react react-dom

安裝項目開發依賴 webpack 和 webpack-cli 包

yarn add -D webpack webpack-cli html-webpack-plugin

配置webpack編譯項目

建立項目目錄

mkdir -p src/js src/pages

編寫項目初始文件

// html
vi src/pages/index.html 

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app"></div>
</body>
</html>

// javascript
vi src/js/index.js

alert('hello')

編寫webpack配置文件

vi webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

const config = {
    mode: 'development',
    // 入口
    entry: {
        app: './src/js/index'
    },
    // 輸出
    output: {
        filename: "[name].js",
        path: path.join(__dirname, 'build')
    },
    // 插件,這裏使用一個 html-webpack-plugin插件,編譯的時候會將編譯的js文件自動引入html文件中
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: './src/pages/index.html'
        })
    ],
}

module.exports = config;

編輯package.json文件,添加一個scripts命令build

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

使用webpack打包,在命令行運行

yarn run build

若是沒有出錯的話,在項目目錄下的build目錄中會出現兩個文件app.js和index.html

能夠啓動一個webserver來運行build目錄中的文件

上面若是不出錯的狀況下,咱們開發配置webpack編譯React項目

編寫文件

vi /src/js/index.js

'use strict';

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

ReactDOM.render(
    <h1>Hello, World!</h1>,
    document.getElementById('root')
);

react使用一種jsx語法,須要使用babel編譯

babel文檔:https://www.babeljs.cn/setup#...

安裝babel

yarn add -D babel-loader @babel/core

編寫webpack配置文件

vi webpack.config.js

vi webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

const config = {
    mode: 'development',
    // 入口
    entry: {
        app: './src/js/index'
    },
    // 輸出
    output: {
        filename: "[name].js",
        path: path.join(__dirname, 'build')
    },
    // 插件,這裏使用一個 html-webpack-plugin插件,編譯的時候會將編譯的js文件自動引入html文件中
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: './src/pages/index.html'
        })
    ],
    module: {
        rules: [
            { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
        ]
    },
}

module.exports = config;

安裝babel對react的 preset

文檔:https://www.babeljs.cn/docs/b...

yarn add -D @babel/preset-react

添加 .babelrc配置文件,並寫入

{
  "presets": ["@babel/preset-react"]
}

一切就緒,再次運行webpack打包

yarn run build

再次使用webserver運行build目錄下的文件,進行測試

ok,在這裏基本就已經完成開發環境的搭建

優化

咱們發現打包後的app.js文件太大,app.js將react和react-dom源碼也打包進了app.js文件,咱們須要將其摘出來,react和react-dom可使用官網上給出的CDN地址,在index.html文件用手動引入。

再次配置webpack

vi webpack.config.js

vi webpack.config.js

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

const config = {
    mode: 'development',
    // 入口
    entry: {
        app: './src/js/index'
    },
    // 輸出
    output: {
        filename: "[name].js",
        path: path.join(__dirname, 'build')
    },
    // 插件,這裏使用一個 html-webpack-plugin插件,編譯的時候會將編譯的js文件自動引入html文件中
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: './src/pages/index.html'
        })
    ],
    module: {
        rules: [
            { test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"}
        ]
    },
    // 過濾
    externals: {
        'react': 'React',
        'react-dom': 'ReactDOM'
    }
}

module.exports = config;

在index.html文件中引入react的cdn

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
</head>
<body>
<div id="root"></div>
</body>
</html>

再次運行webpack打包

yarn run build

檢查打包後app.js文件是否小了?

再次啓動一個webserver運行測試

總結

前端工具繁多,變幻無窮,不一樣的版本,可能相關配置都不同,因此咱們要學會看相關官方文檔,一切以官方文檔爲準則,適當的囫圇吞棗,不用知其意,直接copy文檔上的相關配置,而將有限的精力放入項目業務自己。

原文連接:https://www.mi360.cn/articles...

相關文章
相關標籤/搜索