Skip to content

xiaoxiong113/wepack-react-dva-ts

Repository files navigation

#什么是webpack ####webpack 是一个用于现代 JavaScript 应用程序的主流模块化打包工具。压缩工具。它有着 高度可配置性,可以很好满足各类项目需求。

从0开始配置一个webpack+react+antd+dva并兼容js、jsx、ts、tsx和less、sass、stylus的框架

1.开始安装

mkdir webpack-demo
cd webpack-demo
npm init -y
npm install webpack webpack-cli --save-dev

##此时会生成这样一个目录

start1

1.webpack4.0X已经默认有配置可以打包,默认指向src/index.js。

2.为了定制化根目录下创建webpack.config.js文件并初始化下默认配置

start2

#开始实操配置,重点来了

###1.创建index.html作为dom挂载文件

###2.创建src下的基础项目目录表

start3

##2.由浅入深,先从react + js开始 ###下载react以及react和js相关babel-loader

npm install react react-dom --save

记住要先下babel-loader再跟后面babel,如此版本才会对应

npm install babel-loader @babel/preset-react @babel/preset-env @babel-core --save-dev

此时 npx webpack 打包会生成一个dist目录,打包也是成功的

start4

###这时只打包了一个main.js,我们的index.html并没有打包过来,这需要我们下载插件打包index.html到dist目录

npm install html-webpack-plugin --save-dev

修改webpack.config.js配置

start5

修改src/index.js

start6

此时已经可以看到页面了,js + react配置成功

start7

这时我们可以写页面了,页面免不了引入css样式,直接引入样式文件到js会编译报错,所以我们需要css配置

npm install style-loader css-loader --save-dev

start8

start9

如果以模块形式引入样式,配置应该如下。(注意:引入antd组件后.css的rule得把modules设置为false,否则antd组件样式无效)

start8

start8

##3.那我们在集成一下antd 以及less,sass,stylus

下载antd组件库

npm install antd --save
我们可以使用这个插件babel-plugin-import按需引入,并修改如下配置

npm install babel-plugin-import --save-dev

start8
此时可以直接使用没有问题(注意:把css-loader下的module改为false)

start8 start8

集成 less, sass, stylus,

npm install less less-loader sass sass-loader node-sass stylus stylus-loader --save-dev

配置如下:(注意 1. postcss 是处理.css文件做浏览器兼容补全用的包. 2. 安装sass需要安装node-sass)

start8
start8
start8

现在我们的预处理器就安装并配置好了,可以随心所欲的使用less,sass,stylus了

接下来再兼容配置ts+tsx

npm install @babel/preset-typescript @babel/plugin-transform-runtime --save-dev

start8

##4.现在开发中都缺不了路由和状态管理,dva是一个很好的状态管理库,我们集成一下

安装: npm install react-router-dom dva --save
修改index.js 入口文件

start8

新建router文件夹,router/index.js 为路由文件,随意写下配置router就可以访问页面了,下面是个简单示例 start8

如此最简单的路由也配置好了

dva的使用我贴下简单示例

src下建models文件夹,新建home.js

start8

其中state就是状态存储的地方,用下面方式关联此状态,修改方式通过dispath触发model里的reducers

start8

好了,状态管理库关联好了

5.增加devServer 开启热更新

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

start8 start8

6.最后,共享几个用得上的小插件

    1. mini-css-extract-plugin 抽离css并独立为css文件,优于extract-text-webpack-plugin
    1. clean-webpack-plugin 清除 打包之后 dist 目录下的其他多余或者无用的代码
    1. webpackbar 构建时的进度条
    1. optimize-css-assets-webpack-plugin 减小 css 打包后的体积
    1. compression-webpack-plugin 启用 gzip 压缩,可大幅缩减传输资源大小

更多插件可看官方文档 webpack官网

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published