为什么捐赠
API 浏览器
升级指南
NEW!
quasar.config 配置文件
从 Webpack 项目转换
浏览器兼容性
TypeScript 支持
目录结构
命令列表
CSS 预处理器
使用 VueRouter 进行页面路由
懒加载 - 代码分割
资源处理
Boot 文件
预取特性
API 代理
配置 Vite
处理 import.meta.env
Dotenv 文件支持
使用 Pinia 管理状态
代码检查与格式化
测试与审计
开发移动应用
Ajax 请求
开放开发服务器到公网
联系站长
Quasar CLI with Vite - @quasar/app-vite
使用 Vue Router 进行页面路由

您会注意到您的 Quasar 项目中包含一个 /src/router 目录。这里包含您的网站/应用程序的路由配置:

  • “/src/router/index.js” 文件中处理 Vue Router 的初始化工作
  • “/src/router/routes.js” 文件中定义了您的网站/应用的路由表

WARNING

Quasar 文档假设您已经熟悉了 Vue Router。下面的内容描述了如何在 Quasar CLI 项目中使用路由。更多关于 Vue Router 本身的内容请参考 Vue Router 文档

基本用法

您需要在 /src/router/routes.js 文件中导入您的网站/应用的页面和布局文件。更多信息参考使用页面和布局进行路由文档页面。

在使用 Pinia 时,不能直接从别的脚本中导入 store,但是在 /src/router/index.js 的导出函数中,可以通过参数访问它。例如,您可以利用 Router.beforeEach 来做登录验证:

/src/router.js

import { defineRouter } from '#q-app'

export default defineRouter(({ store /*, ssrContext */ }) => {
  // ...
  const userStore = useUserStore(store)

  Router.beforeEach((to, from) => {
    if (
      to.matched.some(record => record.meta.requiresAuth) &&
      !userStore.isSignedIn
    ) {
      return { name: 'account-signin', query: { next: to.fullPath } }
    }
  })
  // ...
})

TIP

如果您在开发 SSR 应用,您还可以在此访问 ssrContext 对象(服务端)。

基于文件名的路由
Vue Router v5+

如何启用

如果你想使用 Vue Router 的基于文件名的路由功能,而不是手动管理 /src/router/routes 文件,那么先停止开发服务器(如果正在运行),然后编辑:

/quasar.config 文件

build: {
  /**
   * 是否使用 Vue Router 的基于文件名的路由功能。
   * 设置为 `true` 或一个 vue-router/vite 插件的选项对象
   *(用于覆盖或补充默认选项)。
   *
   * 切换此选项后需要重启开发服务器和 IDE,
   * 或运行 "quasar prepare" 命令。
   *
   * @type boolean | VueRouterVitePluginOptions
   * @default false
   */
  filenameBasedRouting: true
}

你还需要编辑:

/src/router/index 文件

- import routes from './routes'
+ import { routes, handleHotUpdate } from 'vue-router/auto-routes'

export default defineRouter((/* { store, ssrContext } */) => {
  const Router = createRouter({
    routes,
    // 其余配置...
  })

+  // 启用热更新
+  if (import.meta.hot) {
+    handleHotUpdate(Router)
+  }

  return Router
})

请注意,切换此选项后需要重启开发服务器,或运行 “quasar prepare” 命令。之后你可能还需要重启 IDE。

目录结构

启用此功能后,你需要:

  • /src/pages 目录结构调整为符合 Vue Router 命名规范
  • 删除 /src/router/routes.js|ts 文件
  • 删除 /src/layouts 目录,因为它不再有用(或将其内容整合到 /src/pages 中)

以下是目录结构示例:

index.js
# (或 .ts)
index.vue
# 路由 "/" 的布局
(index).vue
# 路由 "/" 的页面
second.vue
# 路由 "/second" 的页面
admin.vue
# 路由 "/admin" 的布局
(index).vue
# 路由 "/admin" 的页面
account.vue
# 路由 "/admin/account" 的页面

默认选项

filenameBasedRouting 设置为 true 或提供了选项对象(覆盖或补充默认配置)时,以下是传递给 vue-router/vite 插件的默认选项:

{
  // 路径相对于:
  root: <项目根目录>,

  // 类型生成位置(TypeScript 项目):
  dts: './src/typed-router.d.ts',
}

更多关于该对象的信息:Vue Router 配置