您现在的位置是:亿华云 > 域名
聊聊React开发的一些坑(一)
亿华云2025-10-03 18:23:10【域名】5人已围观
简介一、项目生成create-react-app saucxs-web 生成项目 cd saucxs-web 进入项目 yarn start 启动项目 二、项目部
一、聊聊项目生成
create-react-app saucxs-web 生成项目 cd saucxs-web 进入项目 yarn start 启动项目二、开坑项目部署
本地开发 yarn start 线上部署 yarn build三、聊聊参考文档
react 英文文档[1] create-react-app[2] ant UI库的开坑配置参考[3] react-router 英文[4] react-router 中文[5]四、配置项
1、聊聊Ant Design UI库引入
yarn add antd 安装UI库 yarn add babel-plugin-import 实现按需引入package.json/babel 中增加如下内容:
"plugins": [ [ "import",开坑 { "libraryName": "antd", "libraryDirectory": "es", "style": "css" } ] ]组件使用 如下:
import React, { Component } from react; import { Button } from antd import antd/dist/antd.css class App extends Component { render() { return ( <Button type="primary">松宝写代码</Button> ); } } export default App;此时可以使用UI库的默认样式
2、自定义Ant Design UI库样式
安装 less 和 less-loader 使用命令 yarn run eject 暴露配置文件 在 webpack.config.dev.js 与 webpack.config.prod.js 中做如下修改:创建 antModifyVars.js 文件
use strict; const modifyVars = { primary-color: #E26A6A,聊聊 } module.exports = modifyVars;创建 less 相关变量,参考默认sass的开坑配置:
// style files regexes const cssRegex = /\.css$/; const cssModuleRegex = /\.module\.css$/; const sassRegex = /\.(scss|sass)$/; const sassModuleRegex = /\.module\.(scss|sass)$/; // 增加less部分 const lessRegex = /\.less/; const lessModuleRegex = /\.module\.less$/;在 module.rules 的 oneOf 下, 仿照sass追加一下代码:
// Opt-in support for LESS (using .less extensions). // Chains the less-loader with the css-loader and the style-loader // to immediately apply all styles to the DOM. // By default we support LESS Modules with the // extensions .module.scss or .module.sass { test: lessRegex,聊聊 exclude: lessModuleRegex, use: getStyleLoaders({ importLoaders: 2 }, less-loader), }, // Adds support for CSS Modules, but using SASS // using the extension .module.scss or .module.sass { test: lessModuleRegex, use: getStyleLoaders( { importLoaders: 2, modules: true, getLocalIdent: getCSSModuleLocalIdent, }, less-loader), },在 getStyleLoaders 中,处理 less-loader
// dev下的开坑配置 if (preProcessor) { let loader = { loader: require.resolve(preProcessor)} if (preProcessor === "less-loader") { loader.options.modifyVars = modifyVars loader.options.javascriptEnabled = true } loaders.push(loader); } // prod下的配置 if (preProcessor) { let loader = { loader: require.resolve(preProcessor), options: { sourceMap: shouldUseSourceMap, }, } if (preProcessor === "less-loader") { loader.options.modifyVars = modifyVars loader.options.javascriptEnabled = true } loaders.push(loader); }3、亿华云计算ES6 API支持,聊聊引入polyfills
增加低版本浏览器、开坑IE浏览器对ES6API的聊聊支持,IE9,开坑IE9+
方法一,聊聊安装 yarn add react-app-polyfill
// src/index.js中的【第一行】引入对IE9及更高版本的支持 import react-app-polyfill/ie9; // 其他支持,如:对IE11及更高版本的支持 import react-app-polyfill/ie11;方法二,安装 yarn add babel-polyfill
// webpack.base.conf.js中引入: require("babel-polyfill") // webpack.base.conf.js中配置: entry: { app: [babel-polyfill, ./src/main.js] }4、引入 react-router-dom 路由
react-router-dom 依赖 react-router,所以使用npm安装依赖的时候,云南idc服务商只需要安装相应环境下的库即可,不用再显式安装react-router。 由于需要权限配置,所以增加AuthorizedRoute.js控制权限5、配置别名,@ 指向 src 目录
webpack.base.conf.js 与 webpack.base.conf.js的配置一致,如下:
定义resolvePath方法,新版中resolve名称被占用 function resolvePath (dir) { return path.join(__dirname, .., dir) } // resolve.alias中增加别名配置: @: resolvePath(src)6、引入 axios
在package.json底部增加以下代码解决跨域问题
// 新版本需要借助http-proxy-middleware,在src下创建setupProxy.js,内容: // 会自动引用,不需要额外的配置 const proxy = require(http-proxy-middleware) module.exports = function (app) { app.use( proxy( /api, { target: http://源码下载很赞哦!(3)