前几天一直在学习webpack,总算比之前学习的时候有了点收获,所以在昨天发布了一篇webpack入门笔记,今天继续使用webpack练了练手,搭建了一个React开发环境,如果还不熟悉的童鞋可以看一下昨天发布的笔记:入门webpack笔记

一、初始化项目文件夹

在任意目录下,新建一个文件夹作为你的项目文件夹,命名随意。随后使用命令行工具,切换到该文件夹,键入npm init进行初始化(遇到的问题一直回车就好了),初始化完成之后可以看到生成了一个package.json文件。

随后在该项目文件夹下新建两个文件夹:/dist/src,其中/src用于放置开发的源码,/dist用于放置“编译”后的代码。

随后在/src目录下新建index.htmlindex.cssindex.js文件

二、安装webpack工具

通过命令行使用webpack 4需要安装两个模块:webpack和webpack-cli,都安装为开发环境依赖。

npm install -D webpack webpack-cli

  

安装完成之后可以看到你的package.json文件发生了变化,在devDependencies属性下多了两个包的属性。

三、配置最基本的webpack

  • 1.安装最基本的插件:

    npm install -D html-webpack-plugin clean-webpack-plugin webpack-dev-server css-loader webpack-merge style-loader
    

      

  • 2.在项目文件夹下新建文件webpack.base.conf.js,表示最基本的配置文件,内容如下:

    const path = require('path');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const CleanWebpackPlugin = require('clean-webpack-plugin'); module.exports = {
    entry: './src/index.js',
    output: {
    filename: 'bundle.[hash].js',
    path: path.join(__dirname, '/dist')
    },
    module: {
    rules: [
    {
    test: /\.css$/,
    use: ['style-loader', 'css-loader']
    }
    ]
    },
    plugins: [
    new HtmlWebpackPlugin({
    template: './src/index.html'
    }),
    new CleanWebpackPlugin(['dist'])
    ]
    };

      

    其中,/src/index.html是你的网站入口HTML文件,/src/index.js是你的入口js文件。

  • 3.在项目文件夹下新建webpack.dev.conf.js文件,表示开发环境下的配置。内容如下:

    const merge = require('webpack-merge');
    const baseConfig = require('./webpack.base.conf.js'); module.exports = merge(baseConfig, {
    mode: 'development',
    devtool: 'inline-source-map',
    devServer: {
    contentBase: './dist',
    port: 3000
    }
    });

      

  • 4.在项目文件夹下新建webpack.prod.conf.js文件,表示生产环境的配置,内容如下:

    const merge = require('webpack-merge');
    const baseConfig = require('./webpack.base.conf.js'); console.log(__dirname);
    module.exports = merge(baseConfig, {
    mode: 'production'
    });

      

四、配置npm scripts

配置了三个配置文件以满足两个不同环境下的代码构建,使用语义化较好的npm scripts来构建代码有利于简化工作。

添加新的scripts内容到package.json文件的scripts属性,记得用双引号引起来,其属性如下:

// package.json
{
"scripts": {
"start": "webpack-dev-server --open --config webpack.dev.conf.js",
"build": "webpack --config webpack.prod.conf.js"
}
}

  

配置完之后,可以尝试修改/src/index.html/src/index.js/src/index.css,运行npm scripts命令查看效果。

比如按照以下内容创建文件:

index.html

<html>
<head>
<meta charset="utf-8"/>
<title>React & Webpack</title>
</head>
<body>
<div id="root">
<h1>Hello React & Webpack!</h1>
</div>
</body>
</html>

  

index.css

body {
background-color: blue;
} #root {
color: white;
background-color: black;
}

  

index.js

import './index.css';

console.log('Success!');

  

随后使用命令npm run start,即可看到效果。修改css或者js文件,保存之后可以看到浏览器自动刷新并且展示出了你刚刚所做的更改。

做到这里,一个基本的开发环境已经搭建出来了,下一步就是针对React特定的环境,配置不同的webpack来进行构建。

使用React开发,主要是ES6(虽然最近所有高级浏览器都已经支持ES6,但是还是要为低级IE做准备)和React的JSX语法需要进行转换。下面针对这两种语法进行配置。

五、配置Babel

Babel是一个优秀的JavaScript编译器(这句话源自Babel官网),通过Babel的一些插件,可以将JSX语法、ES6语法转换为ES5的语法,使得低级浏览器也可以运行我们写的代码。

(1)安装Babel预设

通过以下命令安装Babel预设、babel-loaderbabel-polyfillbabel-preset-react

npm install -D babel-preset-env babel-loader babel-polyfill babel-preset-react

  

(2)配置.babelrc

在项目文件夹的根目录下新建一个.babelrc的文件(Windows下无法直接创建,可以通过将文件命名为.babelrc.达到创建的目的),在文件内输入以下内容:

{
"presets": ["env", "react"]
}

  

(3)配置webpack.base.conf.js

module.rules中插入一个新对象,内容如下:

{
test: /\.js$/,
use: 'babel-loader',
exclude: /node_modules/
}

  

(4)安装reactreact-dom模块

npm install --save react react-dom

  

(5)开始开发

/src中新建一个App.js文件,内容如下:

import React from 'react';

class App extends React.Component {
render() {
return <div>
<h1>Hello React & Webpack!</h1>
<ul>
{
['a', 'b', 'c'].map(name => <li>{`I'm ${name}!`}</li> )
}
</ul>
</div>
}
}

   export default App;

 

清空index.js之后在其中写入如下内容:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import './index.css'; ReactDOM.render(<App/>, document.getElementById('root'));

  

使用npm run start命令打开页面可以看到使用React写出来的效果了。

打开浏览器查看编译后的代码,找到App组件中的map函数这一段,可以发现ES6的语法已经被转换到了ES5的语法:

['a', 'b', 'c'].map(function (name) {
return _react2.default.createElement(
'li',
null,
'I\'m ' + name + '!'
);
})

  

箭头函数被写成了function匿名函数。

六、说明

上面的步骤,我已经重新跑了一遍,一步一步按照来就可以搭建成功,有兴趣的童鞋可以照着跑一遍。^_^

另外如果还有错误的话,请提醒我一下,我一定会马上改正的!

Webpack笔记(二)——搭建React开发环境的更多相关文章

  1. 使用webpack搭建react开发环境

    安装和使用webpack 1.初始化项目 mkdir react-redux && cd react-redux npm init -y 2.安装webpack npm i webpa ...

  2. 二、react开发环境配置与webpack入门

    Webpack 模块打包工具(module bundler)功能: 将 CSS.图片与其他资源打包 打包之前预处理(Less.CoffeeScript.JSX.ES6 等)档案 依 entry 文件不 ...

  3. A10 平板开发二搭建Android开发环境

    我是直接在Ubuntu 12.10 64位系统下操作的,搭建Ubuntu开发环境类似,见Ubuntu 10.04开发环境配置.需要注意的是,64位的系统,需要安装支持32位的库(sudo apt-ge ...

  4. 从零搭建react开发环境

    早在六年前,前端开发已经实现了模块化.工程化开发,既然是模块化工程化开发那就少不了包管理工具,所以我们的第一步就是先从安装nodejs开始(安装nodejs携带JavaScript的包管理工具npm) ...

  5. appium环境搭建(二)----搭建android开发环境

    一.安装Java环境: java 环境分JDK 和JRE ,JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境. JRE ...

  6. ISD9160学习笔记02_搭建NuMicro开发环境

    开发环境这边没什么好说的,烧写玩了玩录音的测试程序. 1. 烧写工具 昨晚先尝试了下烧写工具(NuMicro ICP Programming Tool 1.30.6491.exe),板子自带了烧写器, ...

  7. 用webpack搭建react开发环境

    安装插件: npm install react react-dom babel-loader babel-core babel-preset-react babel-preset-es2015 配置w ...

  8. react实战项目开发(1) 搭建react开发环境初始化项目(Create-react-app)

    前言 Create React App npm install -g create-react-app create-react-app my-app cd my-app npm start 执行命令 ...

  9. 在 NodeJs 上搭建 React 开发环境

    步骤: 1. 安装 nodejs :根据你的 Windows 类型(x86或x64)下载相应的安装包进行安装.安装完成后,可以在任一目录下打开 cmd 窗口并运行 node -v 命令,如果显示 no ...

随机推荐

  1. Git命令基本操作备忘

    创建Git仓库并上传到远程Git仓库 git init git config user.name "显示的名称" git config user.email "EMAIL ...

  2. axios的兼容性

    axios的兼容性处理   一.简介 看看官网的简介: “Promise based HTTP client for the browser and node.js” 译:基于 Promise 的 H ...

  3. oracle 自动表分区

    Oracle 新功能自动分区: 实现代码: create table t_interval partition by range(created)//dba_objects 视图的一个字段 inter ...

  4. java代码行数统计工具类

    package com.syl.demo.test; import java.io.*; /** * java代码行数统计工具类 * Created by 孙义朗 on 2017/11/17 0017 ...

  5. 将forme表单转换为Json对象

    //将Form 表单转换为Json字符串 $.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); ...

  6. js-滚动到指定位置导航栏固定顶部

    最近整理一下之前做的一个项目,把滚动条动态固定顶部的代码整理出来和大家分享,上代码 <!DOCTYPE html> <html> <head> <meta c ...

  7. Linux基础之命令练习Day2-useradd(mod,del),groupadd(mod,del),chmod,chown,

    作业一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) ...

  8. SSRS 2008R2 执行Log 查询

    1. 可以参考ExecutionLog3试图,此为系统安装Reporting Service自带的试图. 2. 可以使用以下语句查询: SELECT els.LogEntryId, els.Insta ...

  9. GeoJSON相关操作

    简介 本文主要介绍GEOJSON相关的操作 环境 gt-geojson-.jar,jts-1.8.jar 直接上代码 代码 wkt格式的geometry转成json格式 public String e ...

  10. RocketMQ读书笔记2——生产者

    [生产者的不同写入策略] 生产者向消息队列里写入数据,不同的业务需要生产者采用不同的写入策略: 同步发送.异步发送.延迟发送.发送事务消息等. [DefaultMQProduce示例] public ...