この記事では、FamilyBucket の Vue Vue-Router について詳しく説明し、ルーティングの知識を学びます。
ルーティングの概念はソフトウェア エンジニアリングで登場し、最初にバックエンド ルーティングで実装されました。エンド ルーティングの理由は、Web の開発が主に次の段階を経てきたためです:
初期の Web サイト開発 HTML 全体ページは サーバーによってレンダリングされます。つまり、サーバーは対応する HTML ページを直接生成してレンダリングし、それを表示のためにクライアントに返します。図に示すように:
利点: SEO の最適化に役立つ 欠点: ページ全体がバックエンド担当者によって維持され、HTMl コードとデータに対応するロジックが混在して書かれることになり、メンテナンス性が非常に悪いです。を提供する責任を負っています。
フロントエンドとバックエンドの分離:バックエンドは API の提供のみを担当し、フロントエンドはデータを取得しますAjax を介して、JavaScript を介してデータをページにレンダリングします
フロントエンドとバックエンドを分離するフロントエンド ルーティングの層が に基づいて追加されます。フロントエンドは、一連のルーティング ルール
npm install vue-router
vue ビデオ チュートリアル
]createRouter を通じてルーティング オブジェクトを作成し、routes と履歴モード
#アプリを使用してルーティング オブジェクトを登録する (メソッドを使用)
import { createRouter, createWebHashHistory } from "vue-router" import Home from "../views/Home.vue" import About from "../views/About.vue" // 创建一个路由:映射关系 const router = new createRouter({ history: createWebHashHistory(), routes: [ { path: "/", redirect: "/home" }, { path: "/home", component: Home }, { path: "/about", component: About } ] }) export default router
メタ属性: カスタム データ
router-link (補足)
router-link実際には、設定できるプロパティが多数あります。
動的ルーティング
例: すべてのユーザーに表示される User コンポーネントがありますが、ユーザーの ID は異なります。これを行うには、パス内の動的フィールド (パス パラメーターと呼びます) を使用します。次に、ジャンプを実装します。
获取动态路由的值(例如上面例子中 用户id 123),在template中,直接通过 $route.params获取值。
对于没有匹配到相应的路由,我们可以给用户匹配一个固定的页面。通过 $route.params.pathMatch获取到传入的参数
组件的本身也有组件需要内部切换,这个时候就可以采用嵌套路由,在第一层路由中也使用router-view来占位之后需要渲染的组件。
{ path: "/home", component: () => import("../views/Home.vue"), children: [ { path: "/show", component: () => import("../views/component/show.vue") }, { path: "/detail", component: () => import("../views/component/detail.vue") } ] },
通过代码来控制页面的跳转
栗子:点击一个按钮跳转页面
通过query的方式来传递参数,在界面中通过 $route.query 来获取参数。
使用push的特点是压入一个新的页面,那么在用户点击返回时,上一个页面还可以回退,但是如果我们希望当前页面是一个替换 操作,那么可以使用replace。这个时候已经不能回退了。
router 的 go 方法(指定向前(向后)跳转几步)
router 的back 方法 (回溯历史,向后一步)
router 的forward 方法(历史中前进,向前一步)
场景:根据用户的不同权限,注册不同的路由
补充:路由的其他方法
删除路由有以下三种方式:
router.hasRoute():检查路由是否存在。
router.getRoutes():获取一个包含所有路由记录的数组。
vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航
全局的前置守卫==beforeEach
==是在导航触发时会被回调的,它有两个参数:
返回值:
场景:只有登录了的用户才能看到的页面
Vue还提供了很多的其他守卫函数,目的都是在某一个时刻给予回调,可以更好的控制程序的流程或者功能
[导航守卫](导航守卫 | Vue Router (vuejs.org))
流程:
导航被触发。
在失活的组件里调用 beforeRouteLeave 守卫。
调用全局的 beforeEach 守卫。
在重用的组件里调用 beforeRouteUpdate 守卫(2.2+)。
在路由配置里调用 beforeEnter。 解析异步路由组件。
在被激活的组件里调用 beforeRouteEnter。
グローバル beforeResolve ガード (2.5) を呼び出します。
プログラミング入門をご覧ください。 !
以上がVue ルーティングについて詳しく説明した記事: vue-routerの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。