标签:time src component hid 函数 路由 sed 使用 nts
vue-router是Vue的路由系统,定位资源的,我们可以不进行整页刷新去切换页面内容。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <router-link to="/">首页</router-link> <!--用于展示页面中那个点击跳转的标签--> <router-link to="/course">课程</router-link> <div> <router-view></router-view> <!--用于展示每个路由中的模板--> </div> </div> <script src="vue.js"></script> <script src="vue_router_js.js"></script> <script> let all_routes = [ { path: "/", component: { template: `<div><h1>这是首页</h1></div>` } }, { path: "/course", component: { template: `<div><h1>{{msg}}</h1></div>`, data(){ return { msg: "这是课程页面" } } } } ]; let vue_router = new VueRouter({ routes:all_routes }); const app = new Vue({ el: "#app", router: vue_router }) </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <router-link to="/">首页</router-link> <router-link to="/user/ggg?age=18">ggg的页面</router-link> <router-link to="/user/hhh/?age=19">hhh的页面</router-link> <div> <router-view></router-view> </div> </div> <script src="vue.js"></script> <script src="vue_router_js.js"></script> <script> let routes = [ { path: "/", component: { template: `<div><h1>这是首页</h1></div>` } }, { path: "/user/:name", component: { template: `<div> <h1>这是用户{{this.$route.params.name}},年龄是{{this.$route.query.age}}</h1> <h2>试试: {{name}}</h2> </div>`, data(){ return { name: this.$route.params.name // 直接用这个name数据 有坑,永远是页面第一次刷新时那个值 } }, mounted(){ console.log(this.$route); // 包含了该路由的所有信息 console.log(this.$router) } } } ]; let vue_router = new VueRouter({ //注册到vueRouter对象中 routes: routes }); const app = new Vue({ el: "#app", router: vue_router // 注册到Vue中 }) </script> </body> </html>
注意: router-link里to一定要v-bind
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <router-link to="/">首页</router-link> <!--<router-link to="/course/ggg/?age=18">ggg页面</router-link>--> <router-link :to="{name:‘courses‘, params:{name:‘ggg‘}, query: {age:18}}">ggg页面</router-link> <div> <router-view></router-view> </div> </div> <script src="vue.js"></script> <script src="vue_router_js.js"></script> <script> let routes = [ { path: "/", component: { template: `<div><h1>首页</h1></div>` } }, { path: "/course/:name", name: "courses", component: { template: `<div> <h1>这是用户{{this.$route.params.name}},年龄是{{this.$route.query.age}}</h1> </div>`, } } ]; vue_router = new VueRouter({ routes: routes }); const app = new Vue({ el: "#app", router: vue_router }) </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <router-link to="/">主页</router-link> <router-link to="/course">课程</router-link> <div> <router-view></router-view> </div> </div> <script src="vue.js"></script> <script src="vue_router_js.js"></script> <script> let routes = [ { path: "/", component: { template: `<div><h1>主页</h1></div>` } }, { path: "/course", redirect: "/course/more1", // 页面上默认显示跳转的这个子路由 component: { template: `<div> <h1>课程页面</h1> <router-link to="/course/more1">详情1</router-link> <router-link to="/course/more4">详情4</router-link> <router-link to="/more2">错误写法--->详情2</router-link> <router-link to="more3">错误写法---> 详情3</router-link> <router-view></router-view> </div>` }, children: [ // 在这里注册子路由 { path: "/course/more1", // 一般写这种,不会出错 component: { template: `<div><h3>课程详情页面1</h3></div>` } }, { path: "/course/more4", // 一般写这种,不会出错 component: { template: `<div><h3>课程详情页面4</h3></div>` } }, // { // path: "/more2", // 错误的写法 // component: { // template: `<div><h3>课程详情页面2</h3></div>` // } // }, // { // path: "more3", // 这个需要 写append,但是append2次都会连续追加,有错 // component: { // template: `<div><h3>课程详情页面3</h3></div>` // } // }, ] } ]; let vue_router = new VueRouter({ routes: routes }); const app = new Vue({ el:"#app", router: vue_router }) </script> </body> </html>
// 基于上面例子追加 // html 代码 <div id="app"> <div> <router-link to="/">首页</router-link> <router-link to="/about">关于我们</router-link> <router-link to="/user/琴女?age=20">琴女</router-link> <router-link to="/user/提莫">提莫</router-link> // 添加一个button按钮 <button @click="on_click">旅游</button> </div> <div> <router-view></router-view> </div> </div> // js 代码 // 注意路由name的使用 这是在原例子追加 var app = new Vue({ el: ‘#app‘, router: router, methods: { on_click: function () { setTimeout(function () { this.$router.push(‘/about‘) setTimeout(function () { this.$router.push({name: "user", params:{name: "琴女"},query:{age: 20}}) }, 2000) }, 2000) } } }); 手动路由~以及传参
就是在components中注册多个组件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <router-link to="/">首页</router-link> <router-link to="/course">课程</router-link> <div> <router-view></router-view> <router-view name="my_header"></router-view> <router-view name="my_header"></router-view> </div> </div> <script src="vue.js"></script> <script src="vue_router_js.js"></script> <script> let all_routes = [ { path: "/", component: { template: `<div> <h1>这是首页</h1> </div>` } }, { path: "/course", components: { my_header: { template: `<div> <h1>这是课程头部</h1> </div>` }, my_footer: { template: `<div><h1>这是课程尾部</h1></div>` } } }, ]; let vue_router = new VueRouter({ routes: all_routes }); const app = new Vue({ el: "#app", router: vue_router }) </script> </body> </html>
$route以及$router的区别~~
-- $route为当前router调转对象,里面可以获取name, path, query, params等~
-- $router为VueRouter实例,有$router.push方法等~~
路由的生命周期就是从一个路由跳转到另一路由整个过程,在这个过程中暴露两个钩子router.beforeEach() router.afterEach()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <router-link to="/">主页</router-link> <router-link to="/course">课程</router-link> <router-link to="/login">登陆</router-link> <div> <router-view></router-view> </div> </div> <script src="vue.js"></script> <script src="vue_router_js.js"></script> <script> let routes = [ { path: "/", meta: {"xxx": "ooo"}, component: { template: `<div><h1>这是主页</h1></div>` } }, { path: "/course", // redirect: "/course/more", meta: {required_login: true}, component: { template: `<div> <h1>课程页面</h1> <router-link :to="{name: ‘more‘}">详情</router-link> <router-view></router-view> </div>` }, children: [ { path:"/course/more", meta: {required_login: true}, name:"more", component: { template: `<div><h1>课程详情页面</h1></div>` } } ] }, { path: "/login", component: { template: `<div><h1>登陆页面</h1></div>` } }, ]; let vue_router = new VueRouter({ routes: routes }); vue_router.beforeEach(function (to, from, next) { console.log(to); console.log(from); console.log(next); // if(to.fullPath === "/course/more"){ // next("/login") // }else{ // next() // } if(to.meta.required_login){ // 做登陆限制 next("/login") }else{ next() } }); vue_router.afterEach(function (to, from) { console.log(to); // 和beforeEach中的to一样 console.log(from) }); const app = new Vue({ el: "#app", router: vue_router, data: { test1: "", } }) </script> </body> </html>
next:function 一定要调用这个方法来resolve这个钩子函数。 执行效果依赖next方法的调用参数 next() 什么都不做继续执行到调转的路由 next(false) 中断当前导航 没有跳转 也没有反应 next("/") 参数是路径 调转到该路径 next(error) 如果next参数是一个Error实例 导航终止该错误 会传递给router.onError()注册过的回调中
标签:time src component hid 函数 路由 sed 使用 nts
原文地址:https://www.cnblogs.com/glh-ty/p/9630853.html