美文网首页前端攻城狮程序人生让前端飞
基于Webpack的React开发环境搭建

基于Webpack的React开发环境搭建

作者: Kindem | 来源:发表于2018-03-08 16:50 被阅读44次

    转自Kindem的博客

    前言

    React是现在很流行的前端UI框架,基于React进行开发可以省去很多功夫,让代码更加整洁、高效,而Webpack是一个很优秀的前端JavaScript模块化打包工具,它在前端JavaScript开发中起着举足轻重的作用,现在很多前端技术栈,都是使用React+Webpack+一个合适UI库来完成,本文为大家介绍如何基于Webpack搭建React的开发环境。

    创建项目

    首先先新建一个文件夹作为我们的项目文件夹,在项目文件夹中使用npm的包初始化指令。

    npm init -y
    

    完成初始化之后,可以看见项目文件夹下多了一个package.json,这就是你项目包的基本信息,日后可以在这里任意修改

    // project dir
      project
    + |- package.json
    

    安装项目依赖

    因为项目需要使用到Webpack和React,我们先将这两个依赖安装上:

    npm install --save react react-dom
    npm install --save-dev webpack webpack-cli
    

    这里的--save意思是作为保存到生产环境依赖,--save-dev的意思是保存到开发环境依赖,也就是说用户不需要接触到webpack,安装完成后,你可以查看package.json,看依赖是否成功安装:

    // package.json
    {
        ...
        "dependencies": {
            "react": "^16.2.0",
            "react-dom": "^16.2.0"
        },
        "devDependencies": {
            "webpack": "^4.1.1",
            "webpack-cli": "^2.0.10"
        }
        ...
    }
    

    可以看见两栏依赖中都正确,如果依赖有缺失,应该尝试重新安装,知道两栏依赖中都正确。

    为项目添加dist和src分支

    接下来应该在项目目录中新建两个文件夹,分别用来存放源码和分发文件

    // project dir
      project
    + |- /src
    + |- /dist
      |- package.json
    

    以后,所有源码(包括js、css、页面引用资源等)都放在src文件夹中,而分发文件(html、站点图片文件等)放在dist文件夹中,Webpack每一次编译的输出结果都输出到dist中,并供给html引用。

    安装Babel编译器

    Babel的功能是将ES6、JSX等高版本的JavaScript在编译的时候转化成低版本的JavaScript,以提高浏览器兼容性,因为React使用的语法是JSX,无法被浏览器所支持,所以我们需要使用Babel替我们编译、转化之。

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

    添加React测试文件

    为了测试项目是否能够跑起来,我们先编写一个React的源文件进行测试

    // project dir
      project
      |- /src
    +    |- index.js
      |- /dist
    +    |- index.html
      |- package.json
    

    html文件如下:

    // /dist/index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Hello React!</title>
    </head>
    <body>
        <div id="root"></div>
        <script src="bundle.js"></script>
    </body>
    </html>
    

    js文件如下:

    // /src/index.js
    import React from 'react';
    import ReactDom from 'react-dom';
    
    ReactDom.render(
        <h1>Hello, React!</h1>,
        document.getElementById('root')
    );
    

    编写Webpack和Babel的配置文件

    我们在项目根目录下新建一个配置文件,用来告诉Webpack该如何编译项目:

    // project dir
      project
      |- /src
         |- index.js
      |- /dist
         |- index.html
    + |- webpack.config.js
      |- package.json
    

    配置文件如下:

    // webpack.config.js
    const path = require('path');
    module.exports = {
        entry: path.resolve(__dirname, './src/index.js'),
        output: {
            path: path.resolve(__dirname, './dist'),
            filename: 'bundle.js'
        },
        module: {
            rules: [
                {
                    test: /\.(js|jsx)$/,
                    loader: 'babel-loader',
                    exclude: /node_modules/
                }
            ]
        }
    };
    

    接下来再在项目根目录下建立一个Babel的配置文件

    // project dir
      project
      |- /src
         |- index.js
      |- /dist
         |- index.html
    + |- .babelrc
      |- webpack.config.js
      |- package.json
    

    请看清文件名,是没文件名只有后缀的文件,如果无法建立可以先新建一个任意文件,然后重命名为这个名字即可,内容如下:

    // .babelrc
    {
      "presets": [
        "es2015",
        "react"
      ]
    }
    

    编写npm脚本

    为了让npm帮我们执行Webpack打包任务,我们可以在npm的配置文件中写一个脚本

    // package.json
    {
        ...
        "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1",
            "build": "webpack-cli"
        },
        ...
    }
    

    之后,只要输入

    npm run build
    

    即可运行html文件查看运行结果了

    尝试运行

    输入

    npm run build
    

    运行/dist/html.index文件,可以查看网页成功输出我们写的React代码


    index.html

    搭建Webpack服务器

    你可能会想,每一次都要自己输入一次npm的构建脚本指令,才能查看到结果,岂不是很麻烦,好在Webpack有一个包叫做webpack-dev-server,它是一个前端静态文件服务器,可以自动检测模块的更新并且自动更新,也就是说在webpack-dev-server开启之后,我们更改完react代码之后只要马上打开html文件就能查看变化了。

    先安装webpack-dev-server

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

    然后在项目根目录下建立bin目录,并且在bin目录下建立webpack-dev-server的配置文件dev-server.js

    // project dir
      project
    + |- /bin
    +    |- dev-server.js
      |- /src
         |- index.js
      |- /dist
         |- index.html
      |- .babelrc
      |- webpack.config.js
      |- package.json
    

    接下来编写配置文件

    // /bin/dev-server.js
    'use strict';
    
    const WebpackDevServer = require('webpack-dev-server');
    const webpackConfig = require('../webpack.config');
    const webpack = require('webpack');
    const path = require('path');
    const compiler = webpack(webpackConfig);
    
    const server = new WebpackDevServer(compiler, {
        contentBase: path.resolve(__dirname, '../dist'),
        historyApiFallback: true,
        port: 9090,
        publicPath: "/"
    });
    
    server.listen(9090, 'localhost', function (err) {
        if (err)
            throw err;
    });
    

    编写完成后再在npm的配置文件中添加一个运行服务器的脚本

    // package.json
    {
        ...
        "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1",
            "build": "webpack-cli",
            "server": "node bin/dev-server"
        },
        ...
    }
    

    现在,输入

    npm run server
    

    可以看到服务器成功运行了,打开你的浏览器,输入localhost:9090,然后打开,可以看见之前的react网页成功运行


    localhost:9090(1)

    保持服务器不退出的状态,直接修改/src/index.js里面的内容

    // /src/index.js
    import React from 'react';
    import ReactDom from 'react-dom';
    
      ReactDom.render(
    -     <h1>Hello, React!</h1>,
    +     <h1>Welcome to react!</h1>,
          document.getElementById('root')
      );
    

    再次进行localhost:9090,可以看到不用你自己重新打包,网页也直接发生了变化


    localhost:9090(2)

    至此,就完成了基于webpack的react开发环境搭建,可以开始愉快地用react写前端代码了。

    相关文章

      网友评论

        本文标题:基于Webpack的React开发环境搭建

        本文链接:https://www.haomeiwen.com/subject/wbmyfftx.html