日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

vue3 中 使用 router

項目初始化見 [如何創建你的第一個 Vue3 應用腳手架]<
https://www.toutiao.com/article/7296870015364874787/>

Vue Router 官網
https://router.vuejs.org/zh/introduction.html

1.1 安裝router

安裝最新版本
1、 npm
npm install vue-router@latest
2、yarn
yarn add vue-router@latest

PS E:hkz_devvue3vue3-vite-ts> yarn add vue-router@latest
yarn add v1.22.17
info No lockfile found.
warning package-lock.json found. Your project contAIns lock files generated by tools other than Yarn. It is advised not to mix package managers in order to avoid resolution inconsistencies caused by unsynchronized lock files. To clear this warning, remove package-lock.json.
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
warning Your current version of Yarn is out of date. The latest version is "1.22.19", while you're on "1.22.17".
info To upgrade, run the following command:
$ curl --compressed -o- -L <https://yarnpkg.com/install.sh> | bash
success Saved 38 new dependencies.
info Direct dependencies
├─ @vitejs/plugin-vue@4.4.0
├─ typescript@5.2.2
├─ vite@4.5.0
├─ vue-router@4.2.5
├─ vue-tsc@1.8.22
└─ vue@3.3.7
info All dependencies
├─ @esbuild/win32-x64@0.18.20
├─ @jridgewell/sourcemap-codec@1.4.15
├─ @vitejs/plugin-vue@4.4.0
├─ @volar/language-core@1.10.10
├─ @volar/source-map@1.10.10
├─ @volar/typescript@1.10.10
├─ @vue/compiler-dom@3.3.7
├─ @vue/compiler-sfc@3.3.7
├─ @vue/devtools-api@6.5.1
├─ @vue/language-core@1.8.22
├─ @vue/reactivity-transform@3.3.7
├─ @vue/reactivity@3.3.7
├─ @vue/runtime-core@3.3.7
├─ @vue/runtime-dom@3.3.7
├─ @vue/server-renderer@3.3.7
├─ @vue/shared@3.3.7
├─ balanced-match@1.0.2
├─ brace-expansion@2.0.1
├─ computeds@0.0.1
├─ csstype@3.1.2
├─ de-indent@1.0.2
├─ esbuild@0.18.20
├─ he@1.2.0
├─ lru-cache@6.0.0
├─ minimatch@9.0.3
├─ nanoid@3.3.6
├─ path-browserify@1.0.1
├─ picocolors@1.0.0
├─ postcss@8.4.31
├─ rollup@3.29.4
├─ semver@7.5.4
├─ typescript@5.2.2
├─ vite@4.5.0
├─ vue-router@4.2.5
├─ vue-template-compiler@2.7.15
├─ vue-tsc@1.8.22
├─ vue@3.3.7
└─ yallist@4.0.0
Done in 3.65s.

指定版本
1、 npm
npm install vue-router@4
2、yarn
yarn add vue-router@4

1.2、配置Vue Router

在src文件夾新建一個router文件夾,在該文件夾下新建index.js文件
在index.ts中引入vue-router中的createRouter 和 createWebHashHistory 方法,引入頁面文件

代碼如下:

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

// 頁面組件通過import引入,如果使用懶加載方式則無需在此通過import引入
// import HomeView from '../views/HomeView.vue'
import HomeView from '../views/HomeView.vue'

const router = createRouter({
  //createWebHashHistory(), // history 模式則使用 createWebHistory()
  history: createWebHashHistory(import.meta.env.BASE_URL),
  routes: [
    // 組件引用方式有兩種,只需選擇一種方式即可
    {
      path: '/',
      name: 'home',
      component: HomeView
    },
    {
      path: '/about',
      name: 'about',
      // route level code-splitting
      // this generates a separate chunk (About.[hash].js) for this route
      // which is lazy-loaded when the route is visited.
      component: () => import('../views/AboutView.vue')
    }
  ]
})

export default router

1.3、創建各個視圖

創建目錄 views,在當前目錄下創建兩個文件 HomeView.vue 和 AboutView.vue。

HomeView.vue

<script setup lang="ts">
import WelcomeItem from '../components/WelcomeItem.vue'
</script>

<template>
  <main>
    <WelcomeItem>
      <template #heading>Documentation</template>
      Vue’s
      <a href="https://vuejs.org/" target="_blank" rel="noopener">official documentation</a>
      provides you with all information you need to get started.
    </WelcomeItem>
  </main>
</template>

AboutView.vue

<template>
  <div class="about">
    <h1>This is an about page</h1>
  </div>
</template>

<style>
@media (min-width: 1024px) {
  .about {
    min-height: 50vh;
    display: flex;
    align-items: center;
  }
}
</style>


創建組建 WelcomeItem

WelcomeItem.vue 【里面使用到了 slot 插槽,自己可以去查查這方面的知識。后面我這邊會講解】。

<template>
  <div class="item">
    <i>
      <slot name="icon"></slot>
    </i>
    <div class="details">
      <h3>
        <slot name="heading"></slot>
      </h3>
      <slot></slot>
    </div>
  </div>
</template>

<style scoped>
.item {
  margin-top: 2rem;
  display: flex;
  position: relative;
}

.details {
  flex: 1;
  margin-left: 1rem;
}

i {
  display: flex;
  place-items: center;
  place-content: center;
  width: 32px;
  height: 32px;

  color: var(--color-text);
}

h3 {
  font-size: 1.2rem;
  font-weight: 500;
  margin-bottom: 0.4rem;
  color: var(--color-heading);
}

@media (min-width: 1024px) {
  .item {
    margin-top: 0;
    padding: 0.4rem 0 1rem calc(var(--section-gap) / 2);
  }

  i {
    top: calc(50% - 25px);
    left: -26px;
    position: absolute;
    border: 1px solid var(--color-border);
    background: var(--color-background);
    border-radius: 8px;
    width: 50px;
    height: 50px;
  }

  .item:before {
    content: ' ';
    border-left: 1px solid var(--color-border);
    position: absolute;
    left: 0;
    bottom: calc(50% + 25px);
    height: calc(50% - 25px);
  }

  .item:after {
    content: ' ';
    border-left: 1px solid var(--color-border);
    position: absolute;
    left: 0;
    top: calc(50% + 25px);
    height: calc(50% - 25px);
  }

  .item:first-of-type:before {
    display: none;
  }

  .item:last-of-type:after {
    display: none;
  }
}
</style>

1.4、 改App.vue如下

在App.vue中使用組件來渲染要顯示的組件,在Tabbar組件中使用組件生成鏈接

<template>
    <div class="wrapper">
      <nav>
        <router-link to="/">home</router-link> |
        <router-link to="/about">About</router-link>
      </nav>
    </div>
  <Router-view/>
  <HelloWorld msg="You did it!" />
</template>

<script setup lang="ts">
import HelloWorld from './components/HelloWorld.vue'
</script>

<style lang="less" scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}

#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

nav {
  padding: 30px;

  a {
    font-weight: bold;
    color: #2c3e50;

    &.router-link-exact-active {
      color: #42b983;
    }
  }
}
</style>

1.5、 改 main.ts

注冊路由:在main.ts中導入上面創建的路由文件,并使用app.use注冊路由

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

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

至此,我們就完成了路由的配置與搭建,運行程序,刷新瀏覽器,可以看到頁面已經可以正常跳轉,實現了路由功能。

運行:

 

yarn

yarn dev

npm

npm run dev

 

運行結果:

 

Vue3 中使用 Vue Router 4.X

 

 

1.6、 Vue Router的基本概念

路由器:Vue Router 提供了一個路由器,用于管理應用程序中的路由。Vue Router 實例化一個 Vue Router 對象,注冊路由規則,并以它為中心連接其他組件。路由:路由是分發到不同組件的 URL 地址。在 Vue Router 中,路由通常是由 path 規則和相應的組件定義的。當瀏覽器的 URL 匹配到路由的 path 后,相應的組件將會被加載到頁面中。路由的信息可以從 route 對象中獲取。路由規則:路由規則是由 path、component、name、meta、props 等屬性組成的。其中,path 表示 URL 的路徑,component 表示要渲染的組件,name 表示路由名稱,meta 表示路由的元數據,props 表示路由 props 數據。路由規則可以注冊到 Vue Router 中。導航守衛:導航守衛是在路由跳轉時執行的鉤子函數,用于控制路由的訪問權限、處理路由跳轉前后的邏輯等。在 Vue Router 中,對于選項式 API,常用的導航守衛有 beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave 等;對于使用組合 API 和 setup 函數來編寫組件的,可以通過 onBeforeRouteUpdate 和 onBeforeRouteLeave 分別添加 update 和 leave 守衛。

1.7、routes中的配置項介紹

在 Vue Router 中,路由規則的配置是通過 routes 屬性來實現的。routes 屬性中常用的配置如下:

  • 1、name:路由規則的名字。可以用于編程式導航和組件內部的路由跳轉。
  • 2、path:路由的路徑,可以包含動態參數和正則表達式。例如,/user/:id 表示用戶頁面,:id 是一個動態參數。
  • 3、redirect:路由的重定向規則。例如,{ path: '/', redirect: '/home' } 表示路由根路徑的重定向。
  • 4、component:路由對應的組件。可以是一個普通的組件類或異步加載的組件。
  • 5、children:當前路由的子路由。可以是一個路由規則數組,也可以是一個函數,動態生成路由規則。
  • 6、meta:路由的元信息,用于描述路由的一些額外信息。例如,路由是否需要登錄、權限鑒定等。
  • 7、components:路由對應的多個命名視圖組件。

1.8、目錄結構

 

Vue3 中使用 Vue Router 4.X

 

以上項目源代碼,關注并私信留言:源代碼,逐一回復,給源代碼下載地址。

 


============ 補充說明 begin====================

yarn 補充說明

Yarn是Facebook最近發布的一款依賴包安裝工具。Yarn是一個新的快速安全可信賴的可以替代NPM的依賴管理工具。

Yarn是Facebook最近發布的一款依賴包安裝工具。Yarn是一個新的快速安全可信賴的可以替代NPM的依賴管理工具。

在官方介紹里有這么一句話

Yarn is a package manager for your code. It allows you to use and share code with other developers from around the world. Yarn does this quickly, securely, and reliably so you don't ever have to worry.

關鍵意思就是,快速,安全,可靠。你下載的包將不再重新下載。而且確保在不同系統中可以正常工作。

  • npm 的方式
    • npm install -g yarn
  • 安裝完成后,你可以測試下自己的版本
    • yarn --version

配置環境

在node.js安裝目錄下新建兩個文件夾 yarn_global和yarn_cache

  • yarn config set global-folder "D:xxnodejsyarn_global"
  • yarn config set cache-folder "D:xxnodejsyarn_cache"

查看相關路徑,如果都在D:xx...,則正確

  • 其他指令
    • 查看當前npm包的全局安裝路徑 npm prefix -g
    • 查看 yarn 全局bin位置 yarn global bin
    • 查看 yarn 全局安裝位置 yarn global dir
    • 查看 yarn 全局cache位置 yarn cache dir
  • 開始使用
    • 輸入命令: yarn init
    • 加一些依賴:yarn add gulp-less
    • 如果你要移除的話,可以使用yarn remove package_nameyarn remove gulp-less
    • 升級更新某個依賴可以使用這個:yarn upgrade [package]

分享到:
標簽:Vue3
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定