vue3.0+vite+elementPlus+ts项目搭建

vite脚手架搭建基础demo

一、安装vite

使用npm

  1. npm create vite@latest

使用yarn

  1. yarn create vite

Vite 需要 Node.js 版本 >= 12.0.0。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。

二、创建基础demo

npm

  1. npm create vite@latest my-vue-app --template vue

yarn更换命令即可

执行后选择vue+ts模板(键盘上下键选择回车即可)

三、启动基础demo

  1. npm install
  2. npm run dev

跑起来后需要配置一哈IP访问才能通过IP进行访问

vite.config.ts文件

  1. // https://vitejs.dev/config/
  2. export default defineConfig({
  3. plugins: [
  4. vue(),
  5. ],
  6. ++ server: {
  7. host: '0.0.0.0'
  8. }
  9. })

引入UI组件elementPlus

一、安装elemenPlus

  1. npm install element-plus --save

二、引入elementPlus

跟elementUI一样有全局引入和按需引入两种方式

1.全局引入

在main.ts中引入

  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. ++import ElementPlus from 'element-plus'
  4. const app = createApp(App)
  5. ++app.use(ElementPlus, { size: 'small', zIndex: 3000 }).mount('#app')

引入即可全局使用,但是这种方式会导致打包文件过大

1.按需引入

安装插件

  1. npm install -D unplugin-vue-components unplugin-auto-import

配置vite.config.ts

  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. ++import AutoImport from 'unplugin-auto-import/vite'
  4. ++import Components from 'unplugin-vue-components/vite'
  5. ++import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  6. // https://vitejs.dev/config/
  7. export default defineConfig({
  8. plugins: [
  9. vue(),
  10. ++ AutoImport({
  11. resolvers: [ElementPlusResolver()],
  12. }),
  13. ++ Components({
  14. resolvers: [ElementPlusResolver()],
  15. }),
  16. ],
  17. server: {
  18. host: '0.0.0.0'
  19. }
  20. })

然后在用到的页面进入单独引入即可使用

这种方式大大渐少了包的体积

使用proxy配置代理转发以及配置使用@路径引入

一、proxy配置代理转发+变更启动端口

主要是为了解决跨域

vite.config.ts文件中

  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import AutoImport from 'unplugin-auto-import/vite'
  4. import Components from 'unplugin-vue-components/vite'
  5. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  6. // https://vitejs.dev/config/
  7. export default defineConfig({
  8. plugins: [
  9. vue(),
  10. AutoImport({
  11. resolvers: [ElementPlusResolver()],
  12. }),
  13. Components({
  14. resolvers: [ElementPlusResolver()],
  15. }),
  16. ],
  17. server: {
  18. host: '0.0.0.0',
  19. ++ port: 9999,//更改启动端口
  20. // 反向代理
  21. ++ proxy: {
  22. '/api': {
  23. target: 'http://10.111.42.142:8000',//代理的地址
  24. changeOrigin: true,
  25. // rewrite: path => path.replace(/^\/api/, '')
  26. }
  27. }
  28. }
  29. })

二、配置使用@路径引入(@替换‘…/…/’)

根目录下vite.config.ts文件

  1. /*
  2. * @Author: jona
  3. * @Date: 2022-03-07 16:03:06
  4. * @LastEditTime: 2022-03-09 11:47:41
  5. * @LastEditors: jona
  6. * @Description:
  7. * @FilePath: \sasp2.0\vite.config.ts
  8. */
  9. import { defineConfig } from 'vite'
  10. import vue from '@vitejs/plugin-vue'
  11. import AutoImport from 'unplugin-auto-import/vite'
  12. import Components from 'unplugin-vue-components/vite'
  13. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  14. ++import { resolve } from 'path' // 主要用于alias文件路径别名
  15. // https://vitejs.dev/config/
  16. export default defineConfig({
  17. plugins: [
  18. vue(),
  19. AutoImport({
  20. resolvers: [ElementPlusResolver()],
  21. }),
  22. Components({
  23. resolvers: [ElementPlusResolver()],
  24. }),
  25. ],
  26. server: {
  27. host: '0.0.0.0',
  28. port: 3001,//更改启动端口
  29. // 反向代理
  30. proxy: {
  31. '/api': {
  32. target: 'http://10.111.42.142:8000',//代理的地址
  33. changeOrigin: true,
  34. // rewrite: path => path.replace(/^\/api/, '')
  35. }
  36. }
  37. },
  38. ++resolve: {
  39. alias: {
  40. '@': resolve(__dirname, '.', 'src'),
  41. },
  42. },
  43. })
  44. //
  45. import { resolve } from 'path' // 主要用于alias文件路径别名
  46. resolve: {
  47. alias: {
  48. '@': resolve(__dirname, '.', 'src'),
  49. },
  50. },

在 tsconfig.json中

  1. {
  2. "compilerOptions": {
  3. "target": "esnext",
  4. "useDefineForClassFields": true,
  5. "module": "esnext",
  6. "moduleResolution": "node",
  7. "strict": true,
  8. "jsx": "preserve",
  9. "sourceMap": true,
  10. "resolveJsonModule": true,
  11. "esModuleInterop": true,
  12. "allowSyntheticDefaultImports": true,
  13. ++"baseUrl": ".",
  14. ++"paths": {//路径映射相对于baseUrl
  15. "@/*": [
  16. "src/*"
  17. ]
  18. },
  19. "lib": ["esnext", "dom"]
  20. },
  21. "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
  22. "references": [{ "path": "./tsconfig.node.json" }]
  23. }

配置完成使用

  1. import request from "@/uitls/request"

若要有路径选择提示安装插件: Path Intellisense

vscode插件库中搜索安装即可

其他ide自行安装

tip:import { resolve } from ‘path’ 会报错找不到path模块

因为path是node.js的用法,但是此处事ts文件需要安装ts的类型识别文件

  1. npm install -D ts-node # 在你的本地项目中
  2. npm install -g ts-node # 或者全局TypeScript使用(推荐)
  3. npm install -D tslib @types/node # 取决于你的配置

这样就可以正常识别node.js的path