vite4加react18加ts-安装篇; 最近从vue3转型学习了,react相关技术架构,去有意识的去学习了相关东西,内容比较实用,没有引入太多原理和概念,就是最直接最实用的记录下来;
安装React脚手架
npm create vite@latest
// 输入自己的文件名称
?Project name: >>vite-project
// 选择React
?Select a framework: >> - Use arrow-keys. Return to submit.
Vanilla
Vue
> React
// 选择TypeScript
?Select a variant: >> - Use arrow-keys. Return to submit.
JavaScript
> TypeScript
JavaScript + SWC
TypeScript + SWC
配置环境变量
// 新建.env.prod
VITE_APP_TITLE='production'
// 命令行界面package.json
"scripts": {
"build": "vite build --mode prod"
}
// 代码中获取
const Env = import.meta.env.VITE_APP_TITLE;
配置alias别名-vite.config.js
resolve: {
alias: {
'@': path.resolve(__dirname, 'src')
},
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json']
},
配置alias别名-tsconfig.json
{
"compilerOptions":{
...,
"paths": {
"@/*": ["./src/*"]
}
},
"include": ["src", "**/*.ts", "**/*.tsx"],
}
Antdesign安装 按需引入 less
npm install antd --save
// 按需引入
npm install less less-loader consola vite-plugin-style-import -D
Antdesign 配置vite.config.js
import { createStyleImportPlugin, AntdResolve } from 'vite-plugin-style-import'
plugins:[
react()
createStyleImportPlugin({
resolves: [AntdResolve()]
})
],
css: {
preprocessorOptions: {
less: {
modifyVars: { // 更改主题在这里
'primary-color': '#52c41a',
'link-color': '#1DA57A',
'border-radius-base': '2px'
},
charset: false,
// 配置全局less
additionalData: `@import '/src/assets/style/global.less';`,
javascriptEnabled: true
}
}
}
Antdesign 按需使用
import { Button } from 'antd'
function Home () {
return (
<Button>Hi antd</Button>
)
}
React函数组件中初始化会调用两次
// 关闭严格模式 main.tsx
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
// <React.StrictMode>
<App />
// </React.StrictMode>,
)
最终项目依赖
{
"name": "road_network_core",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@reduxjs/toolkit": "^1.9.1",
"antd": "^5.1.2",
"prop-types": "^15.8.1",
"react": "^18.2.0",
"react-activation": "^0.12.2",
"react-dom": "^18.2.0",
"react-redux": "^8.0.5",
"react-router-dom": "^6.6.1"
},
"devDependencies": {
"@types/node": "^18.11.18",
"@types/react": "^18.0.26",
"@types/react-dom": "^18.0.9",
"@vitejs/plugin-react": "^3.0.0",
"consola": "^2.15.3",
"less": "^4.1.3",
"less-loader": "^11.1.0",
"typescript": "^4.9.3",
"vite": "^4.0.0",
"vite-plugin-resolve-externals": "^0.2.2",
"vite-plugin-style-import": "^2.0.0"
}
}