vue路由

vue-router详解——小白速会

为君一笑 提交于 2020-04-06 18:13:09
一、概述 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建 单页面应用 。 vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。 而传统的多页面应用 ,是用一些超链接来实现页面切换和跳转的。 在vue-router单页面应用中 ,则是路径之间的切换,也就是组件的切换。 路由中有三个基本的概念 route, routes, router。 1. route,它是一条路由,由这个英文单词也可以看出来,它是单数, Home按钮 => home内容, 这是一条route, about按钮 => about 内容, 这是另一条路由。 2. routes 是一组路由,把上面的每一条路由组合起来,形成一个数组。[{home 按钮 =>home内容 }, { about按钮 => about 内容}] 3. router 是一个机制,相当于一个管理者,它来管理路由。因为routes 只是定义了一组路由,它放在哪里是静止的,当真正来了请求,怎么办? 就是当用户点击home 按钮的时候,怎么办? 这时router 就起作用了,它到routes 中去查找,去找到对应的 home 内容,所以页面中就显示了 home 内容。 4. 客户端中的路由,实际上就是dom 元素的显示和隐藏。当页面中显示home 内容的时候,about

Vue 嵌套路由、路由守卫

给你一囗甜甜゛ 提交于 2020-04-03 21:01:24
嵌套路由 嵌套路由:一个路由配置中嵌套其他的路由配置。 嵌套路由挺常用的,比如导航栏有首页、文章、想法、留言4个模块,我们以嵌套路由的形式集成这些模块,在导航栏中点击对应的条目,就会路由到对应的页面(下方显示对应的页面),和html的<iframe>效果差不多。 demo 嵌套路由 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!-- 引入vue.js --> <script src="js/vue.js"></script> <!-- 引入路由插件 --> <script src="js/vue-router.js"></script> </head> <body> <div id="app"></div> <script> // 导航 var Nav={ template:` <div> <router-link :to="{name:'nav.index'}">首页</router-link> <router-link :to="{name:'nav.article'}">文章</router-link> <router-link :to="{name:'nav.idea'}">想法</router-link> <router-link :to="{name:'nav

vue路由router-link

混江龙づ霸主 提交于 2020-03-31 10:33:37
vue路由router-link 首先需要cnpm install vue-router 不过我之前在安装vue时已经顺便安装上了,哈哈 用法: 首先是最简单的写法: 带参数的跳转:(to前面有个冒号别忘了) 路由这里给path补充上参数,记得带冒号 在跳转之后的页面可以获取到传递过来的参数 跳转过来的页面 query定义url中,问号后面的键值对 可以在接收页面获取到query 浏览器上访问 使用js实现跳转: 简单跳转 新建demo2 路由文件 点击完成跳转 js实现命名的url,并且带参数 js实现带查询参数的跳转: 来源: https://www.cnblogs.com/chenyingying0/p/12603221.html

Vue-router路由系统介绍

扶醉桌前 提交于 2020-03-28 13:50:02
路由原理 传统开发方式 url改变后 立刻发起请求,响应整个页面,渲染整个页面 SPA 锚点值改变后 不会发起请求,发起ajax请求,局部改变页面数据 页面不跳转 用户体验更好 SPA single page application(单页应用程序) 前端路由 锚点值监视 ajax获取动态数据 核心点是锚点值 前端框架 Vue/angular/react都很适合开发单页应用 基本使用 vue-router 其是vue的核心插件 1:下载 npm i vue-router -S 1.5(重要):安装插件 Vue.use(VueRouter); 2:在main.js中引入vue-router对象 import VueRouter form './x.js'; 3:创建路由对象 var router = new VueRouter(); 4:配置路由规则 router.addRoutes([路由对象]); 路由对象 {path:'锚点值',component:要(填坑)显示的组件} 5:将配置好的路由对象交给Vue 在options中传递-> key叫做 router 6:留坑(使用组件) <router-view></router-view> router-link to <router-link to="/xxx/x">点我</router-link> 帮助我们生成a标签的href

Vue

别等时光非礼了梦想. 提交于 2020-03-26 02:07:55
路由:vue-router 1)name使用 路由配置 import Main from './views/Main' routes: [ { path: '/main', name: 'main', component: Main } ] 视图使用 <router-link :to="{name: 'main'}">主页</router-link> 2)router-link与系统a标签的区别 router-link:会被vue渲染成a标签,但是点击这样的a标签不能发生页面的转跳,只会出现组件的替换 a:也可以完成同样的效果,但是会发生页面的转跳 3)路由重定向 routes: [ { path: '/', name: 'home', component: Home }, { path: '/home', redirect: '/', // 重定向 } ] 4)路由传参-1 路由:router.js { // path如果是通过to直接访问,路由必须完全对应 // :id代表可以完成任意内容匹配,用变量id保存 // 请求/course/detail/1 和 /course/detail/abc,id变量分别存的1和abc // path: '/course/detail/1', // 死的 path: '/course/detail/:id', // 活的 name:

vue路由(基于VScode开发)

纵然是瞬间 提交于 2020-03-26 02:00:51
index.js如果在router目录下,代表这个js文件只是路由使用 main.js中为全局,需要引入使用到的组件,一般vue中不用写东西 vue中el挂载哪个就哪个组件为根目录, 传值数据绑定的时候在组件(即app.vue之类的),必须返回data值,写data数据格式为: export default { name: 'App',//组件名字 data(){//固定格式,里面和data一样 return{ message: 'Welcome to Your Vue.js App' } } } 路由: APP.vue里面写 <router-link to="/">hello</router-link> <router-link to="/news">news</router-link> <router-link to="/about">about</router-link> <script> export default { name: 'App',//组件名字 data(){//固定格式,里面和data一样 return{ message: 'Welcome to Your Vue.js App' } } } index.js里面写 import News from '@/components/News' import About from '@/components

vue 路由懒加载

拥有回忆 提交于 2020-03-22 20:59:08
当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。 有如下三种方法: vue异步组件 es提案的import() webpack的require,ensure() 1.vue异步组件 将异步组件和 webpack 的 code-splitting 功能一起配合使用 vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 . 但是,这种情况下一个组件生成一个js文件 1 /* vue异步组件技术 */ 2 { 3 path: '/home', 4 name: 'home', 5 component: resolve => require(['@/components/home'],resolve) 6 },{ 7 path: '/index', 8 name: 'Index', 9 component: resolve => require(['@/components/index'],resolve) 10 },{ 11 path: '/about', 12 name: 'about', 13 component: resolve => require(['@/components/about'],resolve) 14 } 2

vue路由懒加载的几种方式

雨燕双飞 提交于 2020-03-22 19:02:28
基础写法,没有懒加载,打包分离代码 import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld } ] }) 路由懒加载,ES6的import()方法。(按需加载) 这个是最常用的 import Vue from 'vue' import Router from 'vue-router' const HelloWorld = () => import('@/components/HelloWorld') Vue.use(Router) export default new Router({ routes: [ { path: '/', name: 'HelloWorld', component: HelloWorld    //或者   component: () => import("@/components/HelloWorld") } ] }) vue的异步组件,require()方法。(按需加载) import

Vue路由以及组件生命周期之间的顺序

Deadly 提交于 2020-03-17 09:54:43
先上vue生命周期图。 这个生命周期图很明确的顺序,但是router这个时候会有所不同。 vue-router提供了三个钩子,beforeRouterEnter、beforeRouterUpdate、beforeRouteLeave。 beforeRouterEnter是讲道理是在最开始执行的,这个时候应该是没有$el,没有挂载,没有this的。所以这个时候就没有所谓的数据了,父组件子组件都没有。但是很多时候我们要在这里面操作data。我们会传入一个vm来获取this,这个时候路由next里面的函数就要等到挂载完成以后才会执行。如果不传入vm这时候beforeRouterEnter是最先执行的。 beforeRouterEnter(to,from,next){   next(vm=>{     //某些不可告人的操作   }) } 这个时候你会发现你可以读取this里面的所有东西,这个时候vm其实就等于this。 然后我打印了一下发现这时候父级组件子级组件和beforeRouterEnter打印的顺序是 父级beforeCreate>父级created>父级beforeMount>子级beforeCreat>子级created>子级beforeMount>子级mounted>父级mounted>路由 其中前面的都比较好理解主要在路由和父级mounted两个地方

vue+ts下集----ts配置路由、路由守卫、数据交互-axios、登录验证逻辑、状态管理

匆匆过客 提交于 2020-03-17 03:13:06
### ts配置路由 ①安装:npm i vue-router -S ②src下新建pages/Home.vue(还有Goods.vue、Detail.vue等页面): <template> <div class="home"> <h2>首页</h2> </div> </template> <script lang="ts"> import Vue from 'vue'; import {Component} from "vue-property-decorator"; @Component({}) export default class Home extends Vue{ } </script> ③src下新建plugins/router.ts:(注意Reg.vue和Detail.vue分别是以import和require的方式实现路由懒加载) import Vue from "vue"; import VueRouter from "vue-router"; Vue.use(VueRouter);// 安装插件 import Home from "../pages/Home.vue"; import Goods from "../pages/Goods.vue"; import User from "../pages/User.vue"; import Login from