概述
- 本文主要介绍如何使用vite构建Vue3项目,并支持TS语法。
- 实现Mock数据配置、JSX语法支持、如何实现浏览器兼容、Axios封装、配置环境变量
- 好处是在开发过程中可以不依赖后端开发,只需双方约定数据模型。如果你是用过React,那么JSX语法的配置也能让你像React开发那样自由。
构建Vite + Ts项目
npm init vite@latest my-vue-app vue-ts
配置JSX语法
import { defineComponent } from "vue"
export default defineComponent({
name: "Test",
setup(props) {
},
render() {
return <h2>sdfasdf</h2>
}
})
-------------------------------------------------
<script lang="tsx">
import Test from "./test"
export default {
components: {
Test
}
}
</script>
配置环境变量
- 在根目录下创建名叫“.env”的文件,在里面配置环境变量,详见官方指导
VITE_DEV_API="/mock"
VITE_PRD_API="/api"
Axios封装
- Axios的封装每个开发者都有自己的习惯,这里仅仅是根据不同的环境变量使用的前缀,配置下文的配置文件,实现不同本地开发走Mock,线上走代理。
- 配置完成后,本地接口请求时会带有“/mock”前缀,线上环境带“/api”前缀
const ENV_PARAMS = import.meta.env;
export const getBaseUrl = (): string => {
const { DEV, VITE_DEV_API, VITE_PRD_API } = ENV_PARAMS;
return DEV ? VITE_DEV_API : VITE_PRD_API;
};
const axios = Axios.create({
baseURL: getBaseUrl(),
timeout: 1000,
});
相对路径-打包配置
- 实际开发中会将项目打包到dist文件夹,然后交给后端部署,打包后端资源文件默认是根路径引用。然后有时候需要相对路径资源引用
- 设置文件系统路径的别名resolve.alias
import { resolve } from 'path'
export default defineConfig({
resolve: {
alias: {
'@': resolve('./src')
}
},
base: './',
})
配置Mock数据、域名代理、浏览器兼容性、JSX语法支持
import { defineConfig, UserConfigExport } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import legacy from "@vitejs/plugin-legacy";
import viteMocker from "vite-plugin-mocker";
import { resolve } from 'path'
export default defineConfig({
resolve: {
alias: {
'@': resolve('./src')
}
},
base: './',
plugins: [
vue(),
vueJsx(),
legacy({
targets: ["ie >= 11"],
additionalLegacyPolyfills: ["regenerator-runtime/runtime"],
}),
viteMocker({
dir: "/mocks",
pattern: "/mock",
delay: [0, 200],
}),
],
server: {
proxy: {
"/api": {
target: "http://jsonplaceholder.typicode.com",
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ""),
},
},
},
});