unplugin vue router
v0.10.8
Vue 中基於自動檔案的路由,支援 TS
這個建置時插件簡化了您的路由設置,並透過 TypeScript 使其更安全、更易於使用。需要 Vue 路由器 >=4.4.0。
警告
雖然 unplugin-vue-router 類型路由和基於檔案的路由基本上是穩定的,但它包含其他可能會變化的實驗性 API(例如資料載入器)。請務必檢查相關文件以獲取最新資訊。如果您發現任何問題、設計缺陷或有改進的想法,請開啟問題或討論。
npm i -D unplugin-vue-router
在 Vue 插件之前新增 VueRouter 插件:
// vite.config.ts
import VueRouter from 'unplugin-vue-router/vite'
export default defineConfig ( {
plugins : [
VueRouter ( {
/* options */
} ) ,
// ️ Vue must be placed after VueRouter()
Vue ( ) ,
] ,
} )
例: playground/
// rollup.config.js
import VueRouter from 'unplugin-vue-router/rollup'
export default {
plugins : [
VueRouter ( {
/* options */
} ) ,
// ️ Vue must be placed after VueRouter()
Vue ( ) ,
] ,
}
// webpack.config.js
module . exports = {
/* ... */
plugins : [
require ( 'unplugin-vue-router/webpack' ) ( {
/* options */
} ) ,
] ,
}
// vue.config.js
module . exports = {
configureWebpack : {
plugins : [
require ( 'unplugin-vue-router/webpack' ) ( {
/* options */
} ) ,
] ,
} ,
}
// esbuild.config.js
import { build } from 'esbuild'
import VueRouter from 'unplugin-vue-router/esbuild'
build ( {
plugins : [ VueRouter ( ) ] ,
} )
安裝後,您應該執行開發伺服器(通常是npm run dev
)以產生 types 的第一個版本。然後您需要將類型新增至tsconfig.json
。
{
"include" : [
// ...
" ./typed-router.d.ts "
],
// ...
"compilerOptions" : {
// ...
"moduleResolution" : " Bundler "
// ...
}
}
然後,如果您有一個類似npm vue create
建立的env.d.ts
文件,請在其中新增unplugin-vue-router/client
類型:
// env.d.ts
///
///
如果您沒有env.d.ts
文件,您可以建立一個文件並在其中新增 unplugin-vue-router 類型,也可以將它們新增至tsconfig.json
中的types
屬性:
{
"compilerOptions" : {
// ...
"types" : [ " unplugin-vue-router/client " ]
}
}
最後,從vue-router/auto-routes
匯入產生的路由並將其傳遞給路由器:
import { createRouter, createWebHistory } from 'vue-router'
+ import { routes } from 'vue-router/auto-routes'
createRouter({
history: createWebHistory(),
// pass the generated routes written by the plugin ?
+ routes,
})
或者,您也可以匯入routes
陣列並手動建立路由器或將其傳遞給某些插件。以下是 Vitesse 啟動器的範例:
import { ViteSSG } from 'vite-ssg'
import { setupLayouts } from 'virtual:generated-layouts'
import App from './App.vue'
import type { UserModule } from './types'
- import generatedRoutes from '~pages'
+ import { routes } from 'vue-router/auto-routes'
import '@unocss/reset/tailwind.css'
import './styles/main.css'
import 'uno.css'
- const routes = setupLayouts(generatedRoutes)
// https://github.com/antfu/vite-ssg
export const createApp = ViteSSG(
App,
{
- routes,
+ routes: setupLayouts(routes),
base: import.meta.env.BASE_URL
},
(ctx) => {
// install all modules under `modules/`
Object.values(import.meta.glob<{ install: UserModule }>('./modules/*.ts', { eager: true }))
.forEach(i => i.install?.(ctx))
},
)
麻省理工學院