vue-router2.0的用法
随着vue越来越火,而vue-router却是一个项目不可或缺的,所以在这里结合实例总结一下router的用法,也是给自己的一个总结。
1、首先第一步当然是安装vue-router依赖,当然也可直接script引用。接着新建一个router文件下新建一个index.js,这个文件主要用于配置路由。index.js代码如下:
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
const Recommend = () => import('components/recommend/recommend')
const Rank = () => import('components/rank/rank')
const Search = () => import('components/search/search')
const SingerDetail = () => import('components/singer-detail/singer-detail')
const TopList = () => import('components/top-list/top-list')
export default new Router({
routes: [
{
path: '/',
redirect: '/recommend'
},
{
path: '/rank',
component: Rank,
children: [
{
path: ':id',
component: TopList
}
]
},
{
path: '/search',
component: Search,
children: [
{
path: ':id',
component: SingerDetail
}
]
}
]
})
我相信看过官网的都大概明白上面代码的意思,path:’/’意思是默认指定的路由路径,也就是刚进去指定的路由,这里默认指向recommend;而每个children代表子路由,比如Search这个组件的子路由是SingerDetail,当然可以指定三级、四级路由。
2、第二步就是在main.js文件下引入router这个文件,并初始化。代码如下:
import Vue from 'vue';
import App from './App';
import router from './router';
new Vue({
el: '#app',
router,
render: h => h(App)
});
3、第三步在App.vue这个文件下定义一个容器用于展示路由指定下的组件。代码如下:
<template>
<div id="app" @touchmove.prevent>
<div class="tab">
<router-link tag="div" to="/recommend">
<span class="tab-link">推荐</span>
</router-link>
<router-link tag="div" to="/rank">
<span class="tab-link">排行</span>
</router-link>
<router-link tag="div" to="/search">
<span class="tab-link">搜索</span>
</router-link>
</div>
<keep-alive>
<router-view></router-view>
</keep-alive>
</div>
</template>
<router-view></router-view>就是路由容器,之所以放在keep-alive这个标签下是对数据进行缓存,这样用户每次返回列表的时候,都能从缓存中快速渲染,而不是重新渲染。To=”/recommend”表示点击”推荐”这个标签就跳转到recommend这个路由,也就是我们之前配置的路径。
讲到这里我们已经简单的完成一个单页面应用了。这里我采用的是模块化编程。我把路由配置、初始化、渲染写在各个文件下。这样也符合大家的组件化开发思路。下面我在进行一些路由用法的补充。
4、多级路由的用法
<template>
<div class="recommend">
<ul>
<li @click="selectItem(item)" v-for="item in discList" class="item">
item.text
</li>
</ul>
<router-view></router-view>
</div>
</template>
<script type="text/ecmascript-6">
export default {
data() {
return {
discList: [
{dissid:,text:'条目1'},
{dissid:,text:'条目2'},
{dissid:,text:'条目2'}
],
}
}
methods: {
selectItem(item) {
this.$router.push({
path: `/recommend/${item.dissid}`
})
}
}
}
</script>
在这里我通过在recommend这个组件下实现二级路由跳转。首先渲染discList列表里面的数据,点击li标签跳转到第一步在index.js定义的Recommend组件下的子路由Disc。通过$router.push()这个方法,带上这条数据的唯一id值即可实现子路由跳转。
router.push()方法就是用来动态导航到不同的链接的。它会向history栈添加一个新的记录,点击<router-link :to="...">等同于调用router.push(...)。
5、router.go()的用法
router.go(n)
这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。
例子
// 在浏览器记录中前进一步,等同于 history.forward()
router.go(1)
// 后退一步记录,等同于 history.back()
router.go(-1)
// 前进 3 步记录
router.go(3)
// 如果 history 记录不够用,那就默默地失败呗
router.go(-100)
router.go(100)
vue-router2.0的用法的更多相关文章
- 新手入门指导:Vue 2.0 的建议学习顺序
起步 1. 扎实的 JavaScript / HTML / CSS 基本功.这是前置条件. 2. 通读官方教程 (guide) 的基础篇.不要用任何构建工具,就只用最简单的 <script> ...
- Vue 2.0基础语法:系统指令
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. Vue初体验 新建一个空的项目,引入vue.js文件.写如下代码: &l ...
- 新手向:Vue 2.0 的建议学习顺序
新手向:Vue 2.0 的建议学习顺序 尤雨溪 1 年前 注:2.0 已经有中文文档 .如果对自己英文有信心,也可以直接阅读英文文档.此指南仅供参考,请根据自身实际情况灵活调整.欢迎转载,请注明出 ...
- Vue插件编写、用法详解(附demo)
Vue插件编写.用法详解(附demo) 1.概述 简单来说,插件就是指对Vue的功能的增强或补充. 比如说,让你在每个单页面的组件里,都可以调用某个方法,或者共享使用某个变量,或者在某个方法之前执行一 ...
- 说一说Vue(2.0)组件的通信方式
Vue(2.0)是组件化的开发模式,在不借助vuex框架的前提下,组件之间如何通信呢?接下来我在开发中总结了几种情况.1.父组件给子组件传值(props): 父组件给子组件传值的方式主要是用函数pro ...
- 使用 Vue 2.0 实现服务端渲染的 HackerNews
Vue 2.0 支持服务端渲染 (SSR),并且是流式的,可以做组件级的缓存,这使得极速渲染成为可能.同时, 和 2.0 也都能够配合 SSR 提供同构路由和客户端 state hydration.v ...
- vue 2.0 无法编译ES6语法
# vue2.0 webpack 无法编译 ES6 语法 之前在使用 vue 1.x 时用 vue-loader@8.0.0 版本可以正常打包vue的代码,包括ES6语法也能正常转为ES5语法,但是当 ...
- Vue 2.0初学后个人总结及分享
摘要:最近在上海找工作,发现Vue前景还不错,于是就打算先学习一下(之前了解过,但是一直没提到日程上)这篇随笔当是为了自己学习之后,做一个小的阶段性总结.希望本文的内容对于刚开始接触vue的朋友们有点 ...
- 《vue.js2.0从入门到放弃》学习之路
原文地址: Vue.js2.0从入门到放弃---入门实例(一):http://blog.csdn.net/u013182762/article/details/53021374 Vue.js2.0从入 ...
- vue 2.0 路由切换以及组件缓存源代码重点难点分析
摘要 关于vue 2.0源代码分析,已经有不少文档分析功能代码段比如watcher,history,vnode等,但没有一个是分析重点难点的,没有一个是分析大命题的,比如执行router.push之后 ...
随机推荐
- step()动画
<style type="text/css"> .hi { width: 50px; height: 72px; background-image: url(" ...
- Ubuntu 16.04 LTS安装Docker最新版
一.安装Docker的先决条件 1.运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU.2.运行Linux 3.8或更高版本内核.一些老版本 ...
- 从页面获取form表单提交的数据
1 使用HttpServletRequest,方便灵活 页面代码,使用action提交一个表单,里边有球的id,球的主人,球的颜色,所在省份,区域 <form action="ball ...
- day18 17.c3p0连接池使用
连接池时间长不用空闲着,dbcp是不回收的,性能可能有些问题.c3p0是可以自动回收.实际开发中c3p的生产力比dbcp强,性能上更强. package cn.itcast.datasource; i ...
- 洛谷P1967 [NOIP2013提高组Day1T2]货车运输
P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过 ...
- 问题解决:在js中绑定onclick事件为什么不加括号,在html代码中必须要加?(转载)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 7. 18 test 砍树题解
(题面保密,内部人员可览) 首先观察题面,可得出如下公式 ∑(ceil(a[i] /d)*d−a[i])≤k 其中,ceil(a[i] /d)表示在需要被砍伐之前所经过的轮数,ceil函数是为了保证一 ...
- ACdream 1099求第k大
题目链接 瑶瑶的第K大 Time Limit: 10000/5000MS (Java/Others)Memory Limit: 512000/256000KB (Java/Others) Submit ...
- Codeforces Round #275 (Div. 2) A. Counterexample【数论/最大公约数】
A. Counterexample time limit per test 1 second memory limit per test 256 megabytes input standard in ...
- jQuery 图片上传
1. 概述 1.1 说明 在一些前后端不分离的项目中,经常有一些需要把文件或者图片上传的功能,故记录此代码以便后期使用. 1.2 要求 1.上传,10M以内,限bmp,jpg,png,jpeg等图片格 ...