本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目。文中针对react、webpack、babel、react-route、redux、redux-saga的核心配置会加以讲解,但愿经过这个项目,能够系统的了解react技术栈的主要知识,避免搭建一次后面就忘记的状况。html
代码库:https://github.com/teapot-py/react-demonode
首先关于主要的npm包版本列一下:react
思考一下webpack到底作了什么事情?其实简单来讲,就是从入口文件开始,不断寻找依赖,同时为了解析各类不一样的文件加载相应的loader,最后生成咱们但愿的类型的目标文件。webpack
这个过程就像是在一个迷宫里寻宝,咱们从入口进入,同时咱们也会不断的接收到下一处宝藏的提示信息,咱们对信息进行解码,而解码的时候可能须要一些工具,好比说钥匙,而loader就像是这样的钥匙,而后获得咱们能够识别的内容。git
回到咱们的项目,首先进行项目的初始化,分别执行以下命令github
mkdir react-demo // 新建项目文件夹
cd react-demo // cd到项目目录下
npm init // npm初始化
复制代码
引入webpackweb
npm i webpack --save
touch webpack.config.js
复制代码
对webpack进行简单配置,更新webpack.config.jsnpm
const path = require('path');
module.exports = {
entry: './app.js', // 入口文件
output: {
path: path.resolve(__dirname, 'dist'), // 定义输出目录
filename: 'my-first-webpack.bundle.js' // 定义输出文件名称
}
};
复制代码
更新package.json文件,在scripts中添加webpack执行命令json
"scripts": {
"dev": "./node_modules/.bin/webpack --config webpack.config.js"
}
复制代码
若是有报错请按提示安装webpack-cliredux
npm i webpack-cli
复制代码
执行webpack
npm run dev
复制代码
若是在项目文件夹下生成了dist文件,说明咱们的配置是没有问题的。
安装react相关包
npm install react react-dom --save
复制代码
更新app.js入口文件
import React from 'react import ReactDom from 'react-dom'; import App from './src/views/App'; ReactDom.render(<App />, document.getElementById('root')); 复制代码
建立目录 src/views/App,在App目录下,新建index.js文件做为App组件,index.js文件内容以下:
import React from 'react';
class App extends React.Component {
constructor(props) {
super(props);
}
render() {
return (<div>App Container</div>);
}
}
export default App;
复制代码
在根目录下建立模板文件index.html
<!DOCTYPE html>
<html>
<head>
<title>index</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
</head>
<body>
<div id="root"></div>
</body>
</html>
复制代码
到了这一步其实关于react的引入就OK了,不过目前还有不少问题没有解决
Babel是一个工具链,主要用于在旧的浏览器或环境中将ECMAScript2015+的代码转换为向后兼容版本的JavaScript代码。
安装babel-loader,@babel/core,@babel/preset-env,@babel/preset-react
npm i babel-loader@8 @babel/core @babel/preset-env @babel/preset-react -D
复制代码
更新webpack.config.js
module: {
rules: [
{
test: /\.js$/, // 匹配.js文件
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
}
]
}
复制代码
根目录下建立并配置.babelrc文件
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
复制代码
配置HtmlWebPackPlugin
这个插件最主要的做用是将js代码经过