美文网首页
webpack实现简单的react环境

webpack实现简单的react环境

作者: 会飞的猪l | 来源:发表于2018-12-19 15:57 被阅读11次

webpack是基于模块化开发的一个工程化开发工具,因此在webpack中,任何资源(图片、css等等)都可以作为模块加载进来(当然加载的时候需要一些load加载机)。

这个工具的模块化规范基于commojs的,也支持amd,cmd规范,但是建议我们使用commomjs规范,因此我们可以像书写node一样书写项目。

Webpack是由react推动的(react文件都是由webpack编译的),因此react相关的demo很多都是基于webpack实现的,所以对于react的相关处理插件,webpack是最丰富的。当然gulp插件也是可以处理react的。

我是依赖webpack实现一个简单的react服务。

在安装webpack之前,我们首先建立一个文件夹并进入

mkdir webpack-react
cd webpack-react

然后我们进行初始化
npm init -y //初始化的时候有很多项目 -y 是都选择默认项
生成package.json之后,安装webpack
npm install --save-dev webpack // --save-dev是生产环境需要

配置webpack.config.js

在根目录建立webpack.config.js文件,要配置webpack的入口和出口

var path =require('path');
module.exports = {
    mode: 'production',
    //入口文件
    entry:'./app/index.js',
    //出口文件
    output:{
        filename:'index.js',  //出口文件名字
        path:path.resolve(__dirname,'dist'), //出口文件目录
    },
}
新建index.html文件

在根目录建立index.html文件,引入webpack出口的文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>react全家桶-Harry</title>
</head>
<body>
    <div id="app"></div>
    <script src="./dist/index.js"></script>
</body>
</html>
进行webpack打包

以上这些操作,我们就已经配置了一个简单的webpack,我们可以运行一下,在webpack的入口文件里面写

function component(){
    var element = document.createElement('div');
    element.innerHTML = ('Hello Harry');
    return element;
}
document.body.appendChild(component());

这时候我们可以进行打包,在scripts属性中加入build命令
"scripts":{"build":"webpack"},
我们在命令行输入npm run build,就可以看到打包结果。我们通过浏览器打开这个index.html文件,应该就可以看到Hello Harry这几个字。

开发服务器配置

现在很少有这种让自己去浏览器打开html的,一般都是启动一个node服务器,我们也只用简单的配置一下,webpack就可以做到。
在命令行安装webpack-dev-server

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

安装完之后,修改webpack.config.js文件

var path =require('path');
module.exports = {
    mode: 'production',
    //入口文件
    entry:'./app/index.js',
    //出口文件
    output:{
        filename:'index.js',
        path:path.resolve(__dirname,'dist')
    },
    devServer:{
        contentBase:'./',
        host:'localhost',  //IP
        compress:true, //是否压缩
        port:1717  //端口
    }
}

配置好之后再去修改package.json文件

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

--open的意思是打开浏览器的意思,配置完之后我们就可以在命令行输入

npm run server 
自动刷新浏览器

现在有很多框架,都是热更新,当然这也很简单,webpack配置一下就好啦,我们在出口处添加

output:{
    filename:'index.js',
    path:path.resolve(__dirname,'dist'),
    publicPath:'temp/'
},

html文件中引入路径换成

<script src="./temp/index.js"></script>

我们再启动一下npm run server就好啦。

看到现在我们都没有用到react,下来我们配置一下react的环境,配置react的环境需要Babel和babel-loader,一般我们还需要支持es2015和React,所以要安装4个包

npm install --save-dev babel-core  babel-preset-es2015 babel-preset-react   //空格隔开 是安装多个包
npm install -save-dev babel-loader@7.0.0 //为什么分开安装,我一起安装的时候,安装完运行时报错啦,安装的babel-core是6版本的,babel-loader是8版本的,报错啦说6版本的babel-core不支持8版本的babel-loader,所以我们在这里指定安装版本7.0.0

安装完我们可以看到package.json里面多了这几个包

  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.0.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "webpack": "^4.27.1",
    "webpack-cli": "^3.1.2",
    "webpack-dev-server": "^3.1.10"
  },
配置module

在安装完之后,再到webpack.config.js中配置module,也就是配置我们loader,我们的配置项,里面写

    module:{
        rules:[
            {
                test:/\.js$/,
                exclude:/node_modules/,
                loaders:"babel-loader",
                query:{
                    presets:['es2015','react']
                }
            }
        ]
    }
编写React

下来我们就可以编写react啦,在编写react之前,我们要安装两个包React和React-dom

npm install --save react  react-dom

安装完之后我们就可以写啦,把之前app/index.js文件,改成react代码

import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
    <div>Hello Harry</div>,
    document.getElementById("app")
);

我们只要运行一下npm run server
OK啦,一个基于webpack简单的react服务器就搭起来啦。

相关文章

网友评论

      本文标题:webpack实现简单的react环境

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