如何搭建一个react项目(包含路由、权限)

最近所在的项目组要新启一个项目,依旧使用react+webpack构建,由于这次是自己首次从零开始负责项目,特此记录,参考了一些文献资料。以下是搭建流程:

init项目

1.创建项目文件夹并进入

mkdir react-project

cd react-project

2.初始化npm

输入npm init ,按照提示填写项目基本信息:

如何搭建一个react项目(包含路由、权限)_第1张图片

webpack

1.安装webpack(webpack4.X

npminstall--save-dev webpack webpack-cli -g

(--save-dev与--save的区别:

--save-dev表示只是在编译过程中所依赖的包,例如:webpack、sass-loader等 最后在package.json的devDependencies部分显示

--save 表示编译后在运行时还需要依赖的包,例如 react react-dom等 最后在package.json的dependencies部分显示

-g 表示全局安装)

2.新建webpack.config.js 文件

如何搭建一个react项目(包含路由、权限)_第2张图片

这样就完成了最简单的webpack配置文件。相应的我们需要在src目录下新建一个index.js 文件。

接下来在命令行输入 webpack --config ./webpack.config.js就可以输出dist文件夹。

为了方便起见,通常我们会在package.json里配置脚本命令。在scripts标签下,添加一句"build": "webpack --config ./webpack.config.js"。这样,我们就可以通过npm run build完成webpack打包。

3.配置开发应用服务器

正常情况下,我们需要以应用服务器打开我们的网页,webpack-dev-server提供了一个简单的web服务器,并且能够实时重新加载。首先需要安装webpack-dev-server:

npm install -D webpack-dev-server

接下来,我们需要修改配置文件,告诉开发服务器,在哪里寻找文件:

修改webpack.dev.config.js,增加webpack-dev-server的配置

devServer:{  

     contentBase:path.join(__dirname,'./dist')

  }

这段配置告诉webpack-dev-server,在默认host和port下建立服务,并将contentBase目录下的目录,作为可访问文件。 

接下来让我们的服务器跑起来,在package.json配置如下的命令脚本:

"scripts" : {

    "start": "webpack-dev-server --mode development --open",

    "build: "webpack --mode production --config ./webpack.config.js"

}


Babel & React

目前仍有浏览器不兼容ES6,同时react的jsx语法,也需要babel来将其转化为能兼容的js代码:

npm install react react-dom react-router-dom -S

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

安装完之后,我们需要在webpack中配置使其生效。在webpack.config.js 的module中添加rules规则:

如何搭建一个react项目(包含路由、权限)_第3张图片

考虑到后期可能会有别的规则需求,例如antDesign的引入,我们将babel的配置提出来,在根目录下新建文件 .babelrc:

如何搭建一个react项目(包含路由、权限)_第4张图片

这样我们就完成babel的相关配置,并且安装了react相关依赖,可以书写jsx语法了。


模块热替换(Hot Module Replacement)

1.安装依赖

npm install react-hot-loader@next --save-dev

2. .babelrc 增加 react-hot-loader/babel

{

"presets":["es2015","react","stage-0"],

"plugins":["react-hot-loader/babel"]

}

3. webpack.dev.config.js入口增加react-hot-loader/patch

entry:[

'react-hot-loader/patch',

path.join(__dirname,'src/index.js')

]

4.根据需要,在src/index.js作相应修改,如:

如何搭建一个react项目(包含路由、权限)_第5张图片

文件路径优化

以前我们引用组件,或者页面时候,都要写相对路径,如:../services/fetch,有时候可能会很复杂,webpack提供了一个别名配置,就是我们无论在哪个路径下,引用都可以这样写:services/fetch

下面我们来配置下,修改webpack.dev.config.js,增加别名:


如何搭建一个react项目(包含路由、权限)_第6张图片


devtool优化

代码哪里写错了,浏览器报错只报在build.js第几行,这让我们分析错误无从下手。

我们增加webpack配置devtool:

devtool:'inline-source-map';

错误信息就能详细展示啦


编译css

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

webpack.dev.config.js rules增加

 test:/\.css$/,  use:['style-loader','css-loader']

}


编译图片

npm install --save-dev url-loader file-loader

webpack.dev.config.js rules增加

{   

 test:/\.(png|jpg|gif)$/,   

 use:[{        loader:'url-loader', 

  options:{     limit:8192    } 

}]

}


HtmlWebpackPlugin

这个插件,每次会自动把js插入到你的模板index.html里面去。

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

修改webpack.dev.config.js,增加plugin

var HtmlWebpackPlugin = require('html-webpack-plugin');

plugins:[

newHtmlWebpackPlugin({ 

filename:'index.html', 

template:path.join(__dirname,'src/index.html')

 })

]


加入 babel-plugin-transform-runtime 和 babel-polyfill

1.npm install --save-dev babel-plugin-transform-runtime

如何搭建一个react项目(包含路由、权限)_第7张图片

2.npm install --save-dev babel-polyfill

修改webpack两个配置文件:


如何搭建一个react项目(包含路由、权限)_第8张图片


集成PostCSS

他有很多很多的插件,比如Autoprefixer这个插件,可以自动给css属性加浏览器前缀。

npm install--save-dev postcss-loader

npm install--save-dev postcss-cssnext


如何搭建一个react项目(包含路由、权限)_第9张图片


模拟AJAX数据之Mock.js


使用 CSS Modules


优化目录结构并增加404页面


---------------------------------------------------7.4 今天先到这里 再更新--------------------------------------------------------

你可能感兴趣的:(如何搭建一个react项目(包含路由、权限))