日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vite4+Typescript+Vue3+Pinia 从零搭建(5) - 路由router

發布時間:2023/11/30 vue 45 coder
生活随笔 收集整理的這篇文章主要介紹了 Vite4+Typescript+Vue3+Pinia 从零搭建(5) - 路由router 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

項目代碼同步至碼云 weiz-vue3-template
Vue Router 是 Vue.js 的官方路由。它與 Vue.js 核心深度集成,讓用 Vue.js 構建單頁應用變得輕而易舉。

1. 安裝

npm i vue-router@4

2. 集成

1. 新建兩頁面進行示例

src/view下新建home.vuelogin.vue,內容如下:

<script setup lang="ts">
defineOptions({
  name: 'V-home'
})
</script>

<template>
  <div>home page</div>
</template>

<style lang="scss" scoped></style>

login.vue里修改下對應name即可

2. src下新建router文件夾

index.ts作為路由入口,static.ts作為靜態路由,modules內還可以放入其他類型路由,整體目錄結構如下:

src
|   
+---router
|   |   index.ts
|   +---modules
|       |   static.ts

static.ts內容如下:

const routes = [
  {
    path: '/',
    component: () => import('@/views/home.vue')
  },
  {
    path: '/login',
    component: () => import('@/views/login.vue') //路由懶加載
  }
]

export default routes

index.ts內容如下:

import { Router, createRouter, createWebHistory } from 'vue-router'

/** 自動導入 src/router/modules 下的靜態路由
 * import.meta.glob使用說明:https://cn.vitejs.dev/guide/features#glob-import
 */
const modules: Record<string, any> = import.meta.glob(['./modules/**/*.ts'], {
  eager: true
})

/** 初始路由 **/
const routes: any[] = []

Object.keys(modules).forEach((key) => {
  const module = modules[key].default
  if (Array.isArray(module)) {
    for (const item of module) {
      routes.push(item)
    }
  } else {
    routes.push(module)
  }
})

/**
 * 創建路由實例
 * createRouter選項有:https://router.vuejs.org/zh/api/interfaces/RouterOptions.html
 * hash模式使用createWebHashHistory(): https://router.vuejs.org/zh/api/#Functions-createWebHashHistory
 */
export const router: Router = createRouter({
  history: createWebHistory(),
  routes,
  strict: true,
  scrollBehavior(_to, from, savedPosition) {
    return new Promise((resolve) => {
      if (savedPosition) {
        return savedPosition
      } else {
        if (from.meta.saveSrollTop) {
          const top: number = document.documentElement.scrollTop || document.body.scrollTop
          resolve({ left: 0, top })
        }
      }
    })
  }
})

/**
 * 路由守衛
 * https://router.vuejs.org/zh/guide/advanced/navigation-guards.html
 */
router.beforeEach((to, _from, next) => {
  // isAuthenticated 代表你的鑒權
  const isAuthenticated = true
  if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
  else next()
})

export default router

3. 修改App.vue

承載路由,并增加導航

<script setup lang="ts"></script>

<template>
  <router-link to="/"> 去首頁 </router-link> 丨 <router-link to="/login"> 去登錄 </router-link>
  <router-view />
</template>

<style scoped></style>

4. 修改main.ts

使用路由

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'

import router from '@/router/index'

createApp(App).use(router).mount('#app')

3. 預覽


其他用法,包括傳參、重定向、動態路由、過渡動效等,請參考官方文檔。

總結

以上是生活随笔為你收集整理的Vite4+Typescript+Vue3+Pinia 从零搭建(5) - 路由router的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。