注意:vite需要node版本>=12.0.0
node -v
npm -v
npm init vite@latest
npm install
npm run dev
npm install unplugin-auto-import --save-dev
auto-import.js文件:
export default function createAutoImport() {
return autoImport({
// 自动导入vue和vue-router,pinia相关函数
imports: [
'vue',
'vue-router',
'pinia'
]
})
}
index.js文件:
import vue from '@vitejs/plugin-vue'
import createAutoImport from './auto-import'
export default function createVitePlugins(viteEnv, isBuild = false) {
const vitePlugins = [vue()]
vitePlugins.push(createAutoImport())
return vitePlugins
}
现在vue组件中可以直接使用composition api,不需要再额外引入
npm install vue-router
import { createWebHashHistory, createRouter } from 'vue-router';
const router = createRouter({
// createWebHistory:路由模式路径不带#号,生产环境下不能直接访问,需要nginx转发;createWebHashHistory:路由模式路径带#号
history: createWebHashHistory(),
// 路由
routes: xxx,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { top: 0 }
}
},
});
export default router;
注意:在src文件夹下已创建views/login/index.vue文件
// 公共路由
export const constantRoutes = [
{
path: '/',
redirect: '/login'
},
{
path: '/login',
component: () => import('../views/login/index.vue')
}
]
import router from './router'
const app = createApp(App)
app.use(router)
npm install pinia
index.js文件
const store = createPinia()
export default store
user.js文件
const useUserStore = defineStore(
'user',
{
state: () => ({}),
actions: {}
})
export default useUserStore
import store from './store'
const app = createApp(App)
app.use(store)
- pinia没有mutation,只有state,getters,action(同步、异步)
- pinia也是默认存入内存中,如果需要本地存储,配置上要比vuex麻烦
- pinia语法上比vuex更容易理解和使用,pinia完整的TypeScript支持
- pinia没有modules配置,每一个独立的仓库都是defineStore生成处理的
- pinia是轻量级的,适合于中小型应用;vuex是重量级的,适应于大规模、复杂的项目
npm install axios
import axios from 'axios'
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: 'http://xxx',
headers: {
//
},
// 超时
timeout: 30000
})
// request拦截器
service.interceptors.request.use((config) => {
return config
}, error => {
Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use((res) => {
return Promise.resolve(res.data)
},
error => {
})
export default service
import { defineConfig, loadEnv } from 'vite'
import createVitePlugins from './vite/plugins'
import path from 'path'
export default defineConfig(({ mode, command }) => {
const env = loadEnv(mode, process.cwd())
const { VITE_APP_ENV } = env
return {
base: VITE_APP_ENV === 'production' ? '/' : '/',
plugins: createVitePlugins(env, command === 'build'),
resolve: {
alias: {
// 设置路径
'~': path.resolve(__dirname, './'),
// 设置别名
'@': path.resolve(__dirname, './src')
},
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
server: {
// 设置服务启动端口号
port: 8080,
host: true,
// 设置服务启动时自动打开浏览器
open: true,
// 配置代理转发
proxy: {
'/dev-api': {
// 实际请求地址
target: 'http://xxx',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
}
}
}
}
})
基本的配置到这里就结束了,喜欢哪个UI框架自己安装依赖配置使用哦!!!