vue.js中Vue-router 2.0基础实践教程

前言

Vue.js的一大特色就是构建单页面应用十分方便,既然要方便构建单页面应用那么自然少不了路由,vue-router就是vue官方提供的一个路由框架。本文主要介绍了Vue-router 2.0的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:

一、基础用法:

<div id="app">
 <h1>Hello App!</h1>
 <p>
  <!-- 使用 router-link 组件来导航. -->
  <!-- 通过传入 `to` 属性指定链接. -->
  <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
  <router-link to="/foo">Go to Foo</router-link>
  <router-link to="/bar">Go to Bar</router-link>
 </p>
 <!-- 路由出口 -->
 <!-- 路由匹配到的组件将渲染在这里 -->
 <router-view></router-view>
</div> 

<template id='foo'>
 <p>this is foo!</p>
</template>
<template id='bar'>
 <p>this is bar!</p>
</template> 
// 1. 定义(路由)组件。
// 可以从其他文件 import 进来
const Foo = { template:'#foo' };
const Bar = { template:'#bar' };
// 2. 定义路由
// 每个路由应该映射一个组件。 其中"component" 可以是
// 通过 Vue.extend() 创建的组件构造器,
// 或者,只是一个组件配置对象。
const routes = [
 { path: '/foo', component: Foo },
 { path: '/bar', component: Bar }
];
// 3. 创建 router 实例,然后传 `routes` 配置
// 你还可以传别的配置参数, 不过先这么简单着吧。
const router = new VueRouter({ routes:routes });
// 4. 创建和挂载根实例。
// 记得要通过 router 配置参数注入路由,
// 从而让整个应用都有路由功能
const app = new Vue({ router:router }).$mount('#app'); 

二、动态路由匹配:

<div id="app">
 <h1>Hello App!</h1>
 <p>
  <router-link to="/user/foo/post/123">Go to Foo</router-link>
  <router-link to="/user/bar/post/456">Go to Bar</router-link>
 </p>
 <router-view></router-view>
</div> 

<template id='user'>
 <p>User:{{ $route.params.id }},Post:{{$route.params.post_id}}</p>
</template> 
// 1. 定义组件。
const User = {
 template:'#user',
 watch:{
  '$route'(to,from){
   console.log('从'+from.params.id+'到'+to.params.id);
  }
 }
};
// 2. 创建路由实例 (可设置多段路径参数)
const router = new VueRouter({
 routes:[
  { path:'/user/:id/post/:post_id',component:User }
 ]
});
//3. 创建和挂载根实例
const app = new Vue({ router:router }).$mount('#app'); 

三、嵌套路由:

<div id="app">
 <h1>Hello App!</h1>
 <p>
  <router-link to="/user/foo">Go to Foo</router-link>
  <router-link to="/user/foo/profile">Go to profile</router-link>
  <router-link to="/user/foo/posts">Go to posts</router-link>
 </p>
 <router-view></router-view>
</div> 

<template id='user'>
 <div>
  <h2>User:{{ $route.params.id }}</h2>
  <router-view></router-view>
 </div>
</template> 

<template id="userHome">
 <p>主页</p>
</template> 

<template id="userProfile">
 <p>概况</p>
</template> 

<template id="userPosts">
 <p>登录信息</p>
</template> 
// 1. 定义组件。
const User = {
 template:'#user'
};
const UserHome = {
 template:'#userHome'
};
const UserProfile = {
 template:'#userProfile'
};
const UserPosts = {
 template:'#userPosts'
};
// 2. 创建路由实例
const router = new VueRouter({
 routes:[
  { path:'/user/:id', component:User,
   children:[
    // 当 /user/:id 匹配成功,
    // UserHome 会被渲染在 User 的 <router-view> 中
    { path: '', component: UserHome},
    // 当 /user/:id/profile 匹配成功,
    // UserProfile 会被渲染在 User 的 <router-view> 中
    { path:'profile', component:UserProfile },
    // 当 /user/:id/posts 匹配成功
    // UserPosts 会被渲染在 User 的 <router-view> 中
    { path: 'posts', component: UserPosts }
   ]
  }
 ]
});
//3. 创建和挂载根实例
const app = new Vue({ router:router }).$mount('#app'); 

四、编程式路由:

<div id="app">
 <h1>Hello App!</h1>
 <p>
  <router-link to="/user/foo">Go to Foo</router-link>
 </p>
 <router-view></router-view>
</div> 

<template id='user'>
 <h2>User:{{ $route.params.id }}</h2>
</template> 

<template id="register">
 <p>注册</p>
</template> 
// 1. 定义组件。
const User = {
 template:'#user'
};
const Register = {
 template:'#register'
};
// 2. 创建路由实例
const router = new VueRouter({
 routes:[
  { path:'/user/:id', component:User },
  { path:'/register', component:Register }
 ]
});
//3. 创建和挂载根实例
const app = new Vue({ router:router }).$mount('#app'); 

//4.router.push(location)
router.push({ path: 'register', query: { plan: 'private' }}); 

五、命名路由:

<div id="app">
 <h1>Named Routes</h1>
 <p>Current route name: {{ $route.name }}</p>
 <ul>
  <li><router-link :to="{ name: 'home' }">home</router-link></li>
  <li><router-link :to="{ name: 'foo' }">foo</router-link></li>
  <li><router-link :to="{ name: 'bar', params: { id: 123 }}">bar</router-link></li>
 </ul>
 <router-view class="view"></router-view>
</div> 

<template id='home'>
 <div>This is Home</div>
</template> 

<template id='foo'>
 <div>This is Foo</div>
</template> 

<template id='bar'>
 <div>This is Bar {{ $route.params.id }}</div>
</template> 
const Home = { template: '#home' };
const Foo = { template: '#foo' };
const Bar = { template: '#bar' }; 

const router = new VueRouter({
 routes: [
  { path: '/', name: 'home', component: Home },
  { path: '/foo', name: 'foo', component: Foo },
  { path: '/bar/:id', name: 'bar', component: Bar }
 ]
}); 

new Vue({ router:router }).$mount('#app'); 

六、命名视图:

<div id="app">
 <router-link to="/">Go to Foo</router-link>
 <router-view class="view one"></router-view>
 <router-view class="view two" name="a"></router-view>
 <router-view class="view three" name="b"></router-view>
</div> 

<template id='foo'>
 <div>This is Foo</div>
</template> 

<template id='bar'>
 <div>This is Bar {{ $route.params.id }}</div>
</template> 

<template id='baz'>
 <div>This is baz</div>
</template> 
const Foo = { template: '#foo' };
const Bar = { template: '#bar' };
const Baz = { template: '#baz' }; 

const router = new VueRouter({
 routes: [
  {
   path: '/',
   components: {
    default:Foo,
    a:Bar,
    b:Baz
   }
  }
 ]
}); 

new Vue({ router:router }).$mount('#app'); 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • vue.js 使用v-if v-else发现没有执行解决办法

    使用v-if v-else发现没有执行 最近在学习Vue,因为刚开始学习,所以总会遇到这样那样的问题,今天要说的一个错误就是在看Vue的官方文档的时候,发现在使用v-if和v-else指令的时候,相应的内容都出现了 初始代码: <div v-if="Math.random > 0.5"> " Math.random > 0.5 " </div> <div v-else> " Math.random <=

  • 详解vue.js2.0父组件点击触发子组件方法

    之前关于vue.js2.0父组件的一点学习,最近需要回顾,就顺便发到随笔上了 <body> <div id="counter-event-example"> <p>{{ total }}</p> <button-counter v-on:ee="incrementTotal"></button-counter> <button-counter v-on:ee="increment

  • vue.js中mint-ui框架的使用方法

    本文为大家分享了vue.js中mint-ui框架的使用方法,具体内容如下 1.安装vue2.0的mint-ui框架 npm install mint-ui -save 2.引用和使用框架,我用的是全部组件,也可以按需选择加载相应的组件,不过要使用babel-plugin-component import Mint from 'mint-ui'; Vue.use(Mint); 3.创建一个header.vue组件,里面写入mint-ui的头部组件 <template> <mt-header

  • vue.js的安装方法

    一.简介 Vue.js 是什么 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用. Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. Vue.js是一个MVVM模式的框架,如果读者有angula

  • Vue.js 2.0学习教程之从基础到组件详解

    前言 最近这段时间里不停的做着Vue的技术分享,虽然不是什么深层次的代码底能架构,如果底层架构真说出来,我就不会做Vue.js 2.0从基础到组件了,就会分享Vue从底层到还是到底层.我相信能来看我这次分享的朋友都是在工作开发层面上面临着一些问题.此次分享我们先抛开Vue - router和Vuex,很多朋友都觉得Vuex和router比较难,大错特错! 对Vue 2.0的介绍 我对Vue 2.0认知,能it前端框架的认知,在我们不算底层原理的情况下,什么才是精髓,那就是基础的方法和一些api介

  • vue.js父组件使用外部对象的方法示例

    最近在碰到有同学问我,vue父组件怎么使用外部对象,具体例子如下: 有组件a: <div @click="onClick">component a</div> // componet a ... methods: { onClick(evt) { // doSomething 这里只能拿到 mouseEvent this.outsideClickHandler(evt); // 调用外部处理函数 } } ... 有组件B,引用组件a,并传入outsideClic

  • 如何在 Vue.js 中使用第三方js库

    在诸多 Vue.js 应用中, Lodash, Moment, Axios, Async等都是一些非常有用的 JavaScript 库. 但随着项目越来越复杂, 可能会采取组件化和模块化的方式来组织代码, 还可能要使应用支持不同环境下的服务端渲染. 除非你找到了一个简单而又健壮的方式来引入这些库供不同的组件和模块使用, 不然, 这些第三方库的管理会给你带来一些麻烦. 本文将介绍一些在 Vue.js 中使用第三方库的方式. 全局变量 在项目中添加第三方库的最简单方式是讲其作为一个全局变量, 挂载到

  • vue.js中Vue-router 2.0基础实践教程

    前言 Vue.js的一大特色就是构建单页面应用十分方便,既然要方便构建单页面应用那么自然少不了路由,vue-router就是vue官方提供的一个路由框架.本文主要介绍了Vue-router 2.0的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 一.基础用法: <div id="app"> <h1>Hello App!</h1> <p> <!-- 使用 router-link 组件来导航. --> <!-- 通

  • 实例讲解Vue.js中router传参

    Vue-router参数传递 为什么要在router中传递参数 设想一个场景,当前在主页中,你需要点击某一项查看该项的详细信息.那么此时就需要在主页传递该项的id到详情页,详情页通过id获取到详细信息. vue-router 参数传递的方式 Parma传参 贴代码: /router/index.vue export default new Router({ routes: [ { path: '/', name: 'Home', component: Home }, { path: '/work

  • 解析Vue.js中的组件

    介绍 在使用Vue.js时,Vue.js组件非常重要.在本教程中,我们将深入研究Vue.js组件,理解基础知识并将其应用于应用程序.让我们开始吧. 什么是组件? 组件使我们能够将 复杂的 应用程序分解成小块.例如,典型的Web应用程序将具有标题,侧边栏,内容和页脚等部分. Vue.js允许我们将每个部分分解成单独的模块化代码,称为组件.这些组件可以扩展,然后附加到 你 正在处理的应用程序. 使用 组件是 在 整个应用程序 编写 中重用代码的好方法. 假设 你 有一个博客应用程序,并且 你 想要显

  • vue.js中实现登录控制的方法示例

    本文实例讲述了vue.js中实现登录控制的方法.分享给大家供大家参考,具体如下: vue中使用vue-router实现登录的控制在做后台管理系统中很常见,但是不想之前熟悉的流程那样,不过只要大家理解vue-router的使用也是很好实现的. 首先我们需要编写登录页面和主页面: <template> <div class="login"> <table width="100%" height="100%"> &l

  • vue.js中指令Directives详解

    想必喜欢前端开发的小伙伴们都或多或少接触过MVVM这个概念,说起MVVM,第一时间想到的便是angularjs,knockoutjs等已经被广泛运用的MVVM框架,之前我也没有在这方面有很多了解,最近在做项目的过程中接触了Vue.js,这是一个小巧精致,性能优异的MVVM框架,可以说对初学者是比较容易入门的,该框架的英文文档写得很好,但是中文版访问还不太稳定,翻译也有待改进,所以自己一遍学习,一遍记录自己的思考,与各位共享学习的经验. 第一篇主要是想谈谈vue.js中的Directives即指令

  • Vue.js中数组变动的检测详解

    前言 最近在尝试用Vue.js重构公司的现有业务代码,组件化的设计思路和MVVM的思想让我深深沉迷于其中.但是是踩到了不少坑,就比如这篇文章介绍的数组绑定后的更新检测. 相信大家都知道Observer,Watcher,vm 可谓 Vue 中比较重要的部分,检测数据变动后视图更新的重要环节.在 vue.js中$watch的用法示例 中,我们讨论了如何实现基本的 watch . 接下来,我们来看看如何实现数组变动检测. 例子: // 创建 vm let vm = new Vue({ data: {

  • 深入理解vue.js中$watch的oldvalue与newValue

    $watch中的oldvalue和newValue 大家都知道,在vue.js中给我们提供了$watch的方法来做对象变化的监听,而且在callback中会返回两个对象,分别是oldValue和newValue. 顾名思义,这两个对象就是对象发生变化前后的值. 但是在使用过程中我发现这两个值并不总是预期的.下面来一起看看详细的介绍: 定义data的值 data: { arr: [{ name: '笨笨', address: '上海' }, { name: '笨笨熊', address: '北京'

  • Vue.js中数据绑定的语法教程

    数据绑定语法 Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue 模板因而从根本上不同于基于字符串的模板,请记住这点. 插值 文本 数据绑定最基础的形式是文本插值,使用 "Mustache" 语法(双大括号): <span>Message: {{ msg }}</span> Mustache 标签会被相应数据对象的 msg 属性的值替换.每当这个属性变化时它也会更新.

随机推荐