Vue路由系統詳述
一切分離都是為了更好的結合,本文詳細介紹了前後端架構分離之後,前端如何實現路由的控制,即Vue路由系統——VueRouter.
VueRouter實現原理:
根據錨點值的改變,修改元件內容.
我們先來看看不使用VueRouter,自己實現路由的控制,如下程式碼:
<body>
<div id="app"></div>
<script>
let oDiv = document.getElementById('app');
window.onhashchange = function () {
// vue-router的實現原理是根據錨值的改變來對頁面進行切換
switch (location.hash) {
case '#/login':
oDiv.innerHTML=`<h1>我是登陸頁面</h1>`;
break;
case '#/register':
oDiv.innerHTML = `<h1>我是註冊頁面</h1>`;
break;
// 輸入其他路徑將顯示為首頁
default :
oDiv.innerHTML = `<h1>我是首頁</h1>`;
break;
}
};
console.log(location.hash);
</script>
</body>
測試效果如下圖: 可以看到,通過改變錨點值,頁面跳轉到我們需要的內容.
再來看看VueRouter實現路由的控制:
<body>
<div id="app"></div>
<script>
// 第一步:在Vue根例項中使用VueRouter
Vue.use(VueRouter);
let Home = {
template: `
<div>
<h1>我是首頁</h1>
</div>
`,
};
let Login = {
template: `
<div>
<h1>我是登陸頁面</h1>
</div>
`,
};
let Register = {
template: `
<div>
<h1>我是註冊頁面</h1>
</div>
`,
};
let App = {
// 下面的router-link會渲染成a標籤,to為標籤的href屬性,to後面是router中定義的路徑
// 下面的router-view是頁面內容的渲染出口
template: `
<div>
<router-link to="/">首頁</router-link>
<router-link to="/login">登陸</router-link>
<router-link to="/register">註冊</router-link>
<router-view></router-view>
</div>
`,
};
// 第二步:例項化一個router物件(本質上是將路徑和頁面綁定了對應關係)
let router = new VueRouter({
routes: [
// 注意:routes,不是routers
{
path: '/',
component: Home,
},
{
path: '/login',
component: Login,
},
{
path: '/register',
component: Register,
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
// 第三步:在根例項中註冊router物件
router: router,
components: {
App,
},
});
</script>
</body>
測試效果如下圖:
路由命名
方式一: 通過在vue-router物件中增加name屬性來指定路由名稱. 呼叫方式:v-bind:to={ name: “路由名稱” }
<body>
<div id="app"></div>
<script>
// 在Vue根例項中使用VueRouter
Vue.use(VueRouter);
let Home = {
template: `
<div>
<h1>我是首頁</h1>
</div>
`,
};
let Login = {
template: `
<div>
<h1>我是登陸頁面</h1>
</div>
`,
};
let Register = {
template: `
<div>
<h1>我是註冊頁面</h1>
</div>
`,
};
let App = {
// 下面的router-link會渲染成a標籤,to為a標籤的href屬性,to後面的name指定的是路由別名
// 下面的router-view是頁面內容的渲染出口
// 通過v-bind繫結定義的路由名稱, v-bind:to="{ ... }", 可簡寫為:to="{ ... }"
template: `
<div>
<router-link v-bind:to="{ name: 'home' }">首頁</router-link>
<router-link :to="{ name: 'login' }">登陸</router-link>
<router-link :to="{ name: 'register' }">註冊</router-link>
<router-view></router-view>
</div>
`,
};
// 例項化一個router物件(本質上是將路徑和頁面內容綁定了對應關係)
let router = new VueRouter({
// 注意:routes, 不是routers
routes: [
{
// 路由命名
name: 'home',
path: '/',
component: Home,
},
{
name: 'login',
path: '/login',
component: Login,
},
{
name: 'register',
path: '/register',
component: Register,
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
// 在根例項中註冊router物件
router: router,
components: {
App,
},
});
</script>
</body>
方式二:
<body>
<div id="app"></div>
<script>
Vue.use(VueRouter);
let App = {
template: `
<div>
<router-link to="/">首頁</router-link>
<router-view name="header"></router-view>
<router-view name="footer"></router-view>
</div>
`,
};
let router = new VueRouter({
routes: [
{
path: '/',
components: {
header: {
template: `
<div>頭部</div>
`,
},
footer: {
template: `
<div>底部</div>
`,
},
},
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
router: router,
components: {
App,
},
});
</script>
</body>
路由引數
<body>
<div id="app"></div>
<script>
/*
在真實的場景中,有以下兩種路徑形式:
1. xx.html/user/1
2. xx.html/user/?userId=1
*/
// 在Vue根例項中使用VueRouter
Vue.use(VueRouter);
let Home = {
template: `
<div>
<h1>我是主頁面</h1>
</div>
`,
};
let userParams = {
template: `
<div>
<h1>我是使用者1的資訊</h1>
</div>
`,
};
let userQuery = {
template: `
<div>
<h1>我是使用者2的資訊</h1>
</div>
`,
};
let App = {
// 下面的router-link會渲染成a標籤,to為a標籤的href屬性,to後面的name指定的是路由別名
// 下面的router-view是頁面內容的渲染出口
// 通過v-bind繫結路由名稱, v-bind:to="{ ... }", 可簡寫為:to="{ ... }"
// 下面params與query引數分別對應上面所說的兩種路徑形式
template: `
<div>
<router-link :to="{ name: 'home' }">首頁</router-link>
<router-link :to="{ name: 'userParams', params: {userId: 1 } }">登陸</router-link>
<router-link :to="{ name: 'userQuery', query: { userId: 2 } }">註冊</router-link>
<router-view></router-view>
</div>
`,
};
// 建立一個vue-router物件(本質上是將路徑和頁面內容綁定了對應關係)
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
// 1. xx.html/user/1
name: 'userParams',
path: '/user/:userId',
component: userParams,
},
{
// 2. xx.html/user/?userId=1
name: 'userQuery',
path: '/user',
component: userQuery,
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
// 在跟例項中註冊router物件
router: router,
components: {
App,
},
});
</script>
</body>
測試效果如下圖:
路由引數的實現原理
<body>
<div id="app"></div>
<script>
/*
在真實的場景中,有以下兩種路徑形式:
1. xx.html/user/1
2. xx.html/user/?userId=1
*/
// 在Vue根例項中使用VueRouter
Vue.use(VueRouter);
let Home = {
template: `
<div>
<h1>我是主頁面</h1>
</div>
`,
};
let userParams = {
template: `
<div>
<h1>我是使用者1的資訊</h1>
</div>
`,
created () {
console.log('this.$route:', this.$route);
console.log('userId:', this.$route.params.userId);
// 此時可以傳送ajax請求到後端獲取資料
},
};
let userQuery = {
template: `
<div>
<h1>我是使用者2的資訊</h1>
</div>
`,
created () {
console.log('this.$route:', this.$route);
console.log('userId:', this.$route.query.userId);
// 此時可以傳送ajax請求到後端獲取資料
}
};
let App = {
// 下面的router-link會渲染成a標籤,to為a標籤的href屬性,to後面的name指定的是路由別名
// 下面的router-view是頁面內容的渲染出口
// 通過v-bind繫結路由名稱, v-bind:to="{ ... }", 可簡寫為:to="{ ... }"
// 下面params與query引數分別對應上面所說的兩種路徑形式
template: `
<div>
<router-link :to="{ name: 'home' }">首頁</router-link>
<router-link :to="{ name: 'userParams', params: {userId: 1 } }">登陸</router-link>
<router-link :to="{ name: 'userQuery', query: { userId: 2 } }">註冊</router-link>
<router-view></router-view>
</div>
`,
};
// 建立一個vue-router物件(本質上是將路徑和頁面內容綁定了對應關係)
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
// 1. xx.html/user/1
name: 'userParams',
path: '/user/:userId',
component: userParams,
},
{
// 2. xx.html/user/?userId=1
name: 'userQuery',
path: '/user',
component: userQuery,
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
// 在跟例項中註冊router物件
router: router,
components: {
App,
},
});
</script>
</body>
測試效果如下圖:
子路由
<body>
<div id="app"></div>
<script>
// 在Vue根例項中使用VueRouter
Vue.use(VueRouter);
let Home = {
template: `
<div>
<h1>我是首頁</h1>
</div>
`,
};
let Test = {
template: `
<div>
<h1>我是測試頁面</h1>
<router-link to="childpages01">子頁面01</router-link>
<router-link to="childpages02">子頁面02</router-link>
<router-view></router-view>
</div>
`,
};
let ChildPages01 = {
template: `
<div>
<h1>我是子頁面01</h1>
</div>
`,
};
let ChildPages02 = {
template: `
<div>
<h1>我是子頁面02</h1>
</div>
`,
};
let App = {
template: `
<div>
<router-link :to="{ name: 'home' }">首頁</router-link>
<router-link :to="{ name: 'test' }">測試頁面</router-link>
<router-view></router-view>
</div>
`,
};
// 例項化一個router物件(本質上是將路徑和頁面內容綁定了對應關係)
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'test',
path: '/courses',
component: Test,
// children實現子路由(子頁面)
children: [
{
path: 'childpages01',
component: ChildPages01,
},
{
path: 'childpages02',
component: ChildPages02,
},
],
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
// 在根例項中註冊router物件
router: router,
components: {
App,
},
});
</script>
</body>
測試效果如下圖: 可見,使用此方法,子頁面不能正常顯示.
子路由之append
append引數會在路徑後面追加子路由的路徑,注意:會在後面一直追加. append引數只適用於只需一層子路由的情況.
<body>
<div id="app"></div>
<script>
// 在Vue根例項中使用VueRouter
Vue.use(VueRouter);
let Home = {
template: `
<div>
<h1>我是首頁</h1>
</div>
`,
};
let Test = {
// 新增append引數
template: `
<div>
<h1>我是測試頁面</h1>
<router-link to="childpages01" append>子頁面01</router-link>
<router-link to="childpages02" append>子頁面02</router-link>
<router-view></router-view>
</div>
`,
};
let ChildPages01 = {
template: `
<div>
<h1>我是子頁面01</h1>
</div>
`,
};
let ChildPages02 = {
template: `
<div>
<h1>我是子頁面02</h1>
</div>
`,
};
let App = {
template: `
<div>
<router-link :to="{ name: 'home' }">首頁</router-link>
<router-link :to="{ name: 'test' }">測試頁面</router-link>
<router-view></router-view>
</div>
`,
};
// 例項化一個router物件(本質上是將路徑和頁面內容綁定了對應關係)
let router = new VueRouter({
routes: [
{
name: 'home',
path: '/',
component: Home,
},
{
name: 'test',
path: '/test',
component: Test,
// children實現子路由(子頁面)
children: [
{
path: 'childpages01',
component: ChildPages01,
},
{
path: 'childpages02',
component: ChildPages02,
},
],
},
],
});
new Vue({
el: '#app',
template: `<App/>`,
// 在根例項中註冊router物件
router: router,
components: {
App,
},
});
</script>
</body>
測試效果如下圖: 這裡只點擊了一次 子頁面01,顯示的內容是正常的,後面的路徑也是正常的.
下面的是點選了兩次: 可見,內容顯示不正常了,後面的路徑也不正常了——append引數會在後面一直新增子路徑中的路徑.
使用以上方式,路徑是寫死在屬性中的,所以子路徑會不斷的append到追後面,導致後續訪問不到響應的頁面,可以採用另一種方式——動態繫結屬性.
動態繫結屬性
動態繫結屬性即給子路由命名,使用子路由命的名稱來實現子路徑的正常切換.
<body>
<div id="app"></div>
<script>
// 在Vue根例項中使用VueRouter
Vue.use(VueRouter
相關推薦
Vue路由系統詳述
一切分離都是為了更好的結合,本文詳細介紹了前後端架構分離之後,前端如何實現路由的控制,即Vue路由系統——VueRouter.
VueRouter實現原理:
根據錨點值的改變,修改元件內容.
我們先來看看不使用VueRouter,自己實現路由的控制,如下程
Vue-router VUE路由系統
close value tcs -c aps put 訪問路徑 tps lose
一:定義:
是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將路徑和組件映射起來。傳統的頁
Day84 前端框架--Vue路由系統&Vue生命週期
一,Vue路由系統
Vue Router是Vue.js的官方路由器。它與Vue.js核心深度整合,能夠輕鬆構建單頁應用
1.路由的註冊
<body>
<div id="app">
<router-link to="/">首頁<
Vue專題-路由系統
一切分離都是為了更好的結合,本文詳細介紹了前後端分離架構之後,前端如果實現路由控制,即Vue路由系統。
Vue路由系統
VueRouter實現原理
VueRouter的實現原理是根據監控錨點值的改變,從而不斷修改元件內容來實現的,我們來試試不使用VueRouter,自己實現路由控制,如下程式碼:
Vue.js之路由系統
Vue.js生態之vue-router
vue-router是什麼?
vue-router是Vue的路由系統,定位資源的,我們可以不進行整頁重新整理去切換頁面內容。
vue-router的安裝與基本配置
vue-router.js 可以下載 也可以用cdn,基本配置資訊看如下程式碼
// ht
Vue 路由許可權控制,只能從登陸頁面進入系統
實現這種校驗分幾個步驟
1.設定路由是否需要校驗的閾值
在路由配置加上meta的判斷
routes: [{
path: '/',
name: 'Login',
component: () => import('@/pages/log
Vue管理系統前端系列六動態路由-許可權管理實現
[toc]
-----------------------
## 為什麼要使用動態路由?
一般系統中,都會有不同許可權的操作人員,這時候他們看到的頁面也將會不同,因此都需要根據他們的許可權來生成對應的選單,這個就得通過動態路由來實現。
## 主流的兩種實現方式
控制一般都是由前端的路由中設定。後端返
ASP.NET MVC5路由系統機制詳細講解
提交 eas 找文件 網址 自動調用 提取 ges pri stat 請求一個ASP.NET mvc的網站和以前的web form是有區別的,ASP.NET MVC框架內部給我們提供了路由機制,當IIS接受到一個請求時,會先看是否請求了一個靜態資源(.html,css,js
路由系統
模板 resp solver max quest 空間 new 不同的 查看 路由系統
根據Django約定,一個WSGI應用裏最核心的部件有兩個:路由表和視圖。Django框架 的核心功能就是路由:根據HTTP請求中的URL,查找路由表,將HTTP請求分發到 不同的
免費的上網行為管理系統和軟路由系統推薦。
上網行為管理 網絡安全網關路由系統、又稱RouterOS,已經是一個非常開源的技術了。不管是在LINUX系統上的,還是在windows系統上的,都很很多這樣的開源項目,技術簡單,結構也非常單一。而隨著時代發展,後期又加上了VPN和基礎的包過濾防火墻,也都是開源成熟的項目。大部分廠家也是在這些項目上修修改改,包
vue-路由-多層
path tail view -s document name div ctype out
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
Django 路由系統簡述
url django 在前面的例子裏面,我們已經了解,Django裏面可以通過在Project同名的那個目錄下的urls.py文件裏面配置路由,根據用戶輸入的url,調用不同的函數或者類的方法。下面看看具體的一些例子。單一的路由對應關系。這種方式最直接,前面已經多次出現, 可以是fbv或者cbv類型的
vue 路由
path export pre one use name 頁面 out fault 1、在 src/router/index.js 裏定義新的路由數據
import Vue from ‘vue‘
import Router from ‘vue-router‘
import
vue-路由
meta code pan () xtend src ews htm art 1
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
vue路由復習(轉載)
log home scrip 自己的 isam 監聽 響應 函數式 comment
回頭看 vue-router 復習
我的github iSAM2016
目錄
響應路由參數的變化
嵌套路由
函數式導航
路由的命名
示例:切換路由的時候可以
Django入門2:路由系統
-c clas sdfas ret war 3-0 生成 實例 eee 1、單一路由對應
url(r‘^index/‘, views.index), # FBV url(r‘^home/‘, views.Home.as_view()), # CBV
django中admin路由系統工作原理
blog items module 程序 email asc @property 目的 urn 一、如圖所示
from django.contrib import admin
from . import models
class zhangsan(admin.ModelA
Django之(URL)路由系統
ces strong end 其中 意思 string 查找 hid example 路由系統
簡而言之,django的路由系統作用就是使views裏面處理數據的函數與請求的url建立映射關系。使請求到來之後,根據urls.py裏的關系條目,去查找到與請求對應的處理方法,從
django-路由系統url
四種 表達 方式 pan ase html class htm 路由 一:django路由系統說明
路由都在urls文件裏,它將瀏覽器輸入的url映射到相應的業務處理邏輯
二:django 常用路由系統配置
1)URL常用有模式一FBV(functi
vue路由相關知識收集
details tail blog vue htm 知識 article detail .net http://blog.csdn.net/sinat_17775997/article/details/76474892
http://blog.csdn.net/k491