使用webpack4从零构建React + React-router + Redux + Scss/Css开发环境

  前言  

    最近这几年,前端变化非常大,各种新框架应接不暇,从最开始几个html,css,js文件就搞定了前端,到现在前端的模块化,工程化,旨在构建出易于维护的前端系统。目前为止,前端三大框架Vue/React/Angular(Vue官网:https://cn.vuejs.org/index.html,

React官网:https://reactjs.org/,Angular官网:https://angularjs.org/),身为一个前端开发人员,不了解这些框架,感觉都out了。个人比较喜欢React,主要是jsx语法很灵活,以及其强大的生态系统,但React的资料国内非常的少,关于使用webpack4构建React开发环境就更少了,本文章将带来读者使用webpack4(目前是最新的,webpack官网:https://webpack.js.org/)从零构建一个React + React-router + Redux + Scss/Css的开发环境,如果是刚入门weboack4的读者,也不要紧,本文尽量使用最浅显易懂的方式告诉你webpack是干什么的,以及如何写webpack配置文件,对于React-router,Redux其实也不是什么高大上的东西,文章后面都会详细介绍。

     在构建过程中,会介绍基本的loader如处理jsx/js的babel-loader(babel的具体内容请查看官网:https://babeljs.io/),处理css/scss(Scss的内容请查看官网:https://sass-lang.com/)的css-loader和scss-loader,以及处理静态资源文件(png/jpg/gif)的url-loader,以及做css兼容处理的postcss-loader(postcss的内容请查看官网:https://postcss.org/),然后会介绍一些插件,比如并行压缩代码插件,css压缩插件,以及肯会使用happypack来加速打包。

     文章可能比较长,请一定要耐心看,一步一步跟着做,我会把每一步的webpack配置文件都发出来,保证每一个webpack配置文件都是能用的,当自己亲手搭建完一个React开发环境,自己也会有成就感,本项目已经放github欢迎下载:https://github.com/sundial-dreams/ReactRedux/tree/master(不介意的话,给个star也行)。

  

文章目录


yarn安装

webpack4介绍

项目目录结构

项目搭建

使用babel-loader处理js/jsx文件

使用css-loader以及sass-loader处理css/scss文件

使用webpackDevServer

使用postcss

使用url-loader处理资源文件(图片等)

使用webpack插件

优化部分

使用happlypack优化打包速度(webpack4已经不需要它了)

别名配置

React,React-router,Redux的介绍和使用

 

yarn安装   

     使用webpack4构建的过程中,可能涉及到很多包的安装,强烈建议使用yarn来安装包(用npm安装包也是一样的),yarn是 Facebook 提供的替代 npm 的工具,可以加速 node 模块的下载,跟npm相比,快的不是一点点(并行下载),而且会缓存下载过的包,所以下载过的包,都无需重新下载。

     首先设置npm镜像

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global

     使用npm安装yarn(当然设置了npm镜像的话,安装速度也不算太慢)

npm install -g yarn

     安装完 yarn 后同理也要设置镜像源

yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global

yarn的使用也很简单

     初始化一个新项目

yarn init

#等价于npm init 不过他生成的是package.json和yarn.lock的文件

      添加依赖包

yarn add [package]
yarn add [package] --dev 添加到devDependencies 等价于npm install [package] --save-dev
yarn add [package] --peer 添加到peerDependencies
yarn add [package] --optional 添加到optionalDependencies

     升级依赖包

yarn upgrade [package] 

#upgrade这个单词是升级的意思

     移除依赖包

yarn remove [package]

     安装项目的全部依赖

yarn 或者 yarn install

webpack介绍

     这里我简单介绍一下webpack,3个月前,我也不知道webpack是什么鬼,不过随着自己对前端认识越来越深,现在看来webpack真是个无所不能的打包工具,不仅使前端有了模块化,工程化的概念,而且在前后端分离方面也有很大的贡献。简单来说webpack可以让前端代码可以向后端那样模块化,通过import 或 require方式可以导入模块,export 或 exports可以导出模块(分别对应es6和nodejs的模块系统),像后端一样,所有的导入肯定有一个入口点,这就类似于后端的主模块一样(想想主模块一定会把所有依赖的模块给导进来),webpack就是从这个入口点出发开始打包,一直找通过import等方式导入的模块,打包到一起,最后输出html+css+js+png等静态文件。

这是官网给的图,其实也很好理解,从入口(左上角)一直找依赖(import 进来的东西),最后把它们一起打包输出成js+css+jpg+png,因为什么文件都可以通过import来导入,所以就必须得对每一种文件进行处理,import 了 css文件就必须得对css文件进行处理,故就要用css-loader 其他文件也是一样的,说到这里,想信对webpack也能有一定的理解了吧 ,如果没有理解,可以试着跟着下面慢慢做,写着写着就理解了。

目录结构 

接下来我们可以开始我们的构建了项目了,首先来看我们最终的目录结构长什么样

目录结构如下

 

ReactTest

               |___ dist  打包目录

               |___ assets 静态,公共资源目录

               |___  public 静态,公共资源目录

                            |___ index.html 入口

               |___ src 

                            |___ components 组件目录

                                               |___ Button 组件Button

                                                                  |___ button.jsx 组件文件

                                                                  |___ button.scss 样式文件 或者是button.css

                            |___ pages 页面目录

                                                |___ Index 首页

                                                                  |___ index.jsx 首页

                                                                  |___ index.scss 样式文件

                            |___ reduxs 存储redux状态,action,reducer目录

                                                |___ actions 存放redux action目录

                                                                   |___ action.js

                                                |___ reducer 存放redux reducer目录

                                                                   |___ reduce.js

                            |___ router 路由目录

                                                 |___ router.js

                            |___ index.jsx 入口

               |___ .babelrc babel配置文件

               |___ postcss.config.js postcss配置文件

               |___ webpack.common.config.js webpack公共配置文件

               |___ webpack.config.js webpack配置文件 打包时使用

               |___ webpack.dev.config.js webpack配置文件 开发时使用

                  

 

项目搭建

    先建个项目目录ReactTest(名随便起),然后在当前项目下打开终端输入命令yarn init初始化项目,然后一路回车,最后应该会在项目目录下出现package.json文件,新建src文件夹,dist文件夹,public文件夹

然后安装webpack

yarn add webpack --dev

在项目目录下新建webpack.config.js,src下新建index.jsx,public下新建index.html其中index.jsx和index.html为入口

//webpack.config.js
const {resolve,join} = require("path");
const paths = {
  src: resolve(__dirname, "src"),
  dist: resolve(__dirname, "dist"),
  public: resolve(__dirname,"public")
};
module.exports = {
  entry: [
      join(paths.public,"index.html"),
      join(paths.src,"index.jsx")
  ],
  output: {
    path: paths.dist,
    filename: "[name].js"
  }
};

现在webpack还不能跑,jsx和html文件没有处理,首先处理jsx文件,我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sundial dreams

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值