从零开始,零基础,一点一点探索vue-router(vue2.0)

首先我们用vue-cli搭建一个vue开发的脚手架,删除它的原来的代码,开始写自己的代码,实现最简单的router功能:

一,开始

新建几个自己需要的页面,随便写点东西

<template>
<div id = "movie">
    I‘m moive!
</div>
</template>
<script>
export default {};
</script>
<style>

</style>

看入口文件main.js,可以看到

import router from ‘./router‘;

router从router这个文件夹引入,我们打开router这个文件夹下的index.js,在这里配置路由

import Vue from ‘vue‘;
import Router from ‘vue-router‘;
import post from ‘../components/post/post‘;
import movie from ‘../components/movie/movie‘;
import music from ‘../components/music/music‘;

// 记住用之前要先注册
Vue.use(Router);

export default new Router({
  routes: [
    { path: ‘/post‘, component: post },
    { path: ‘/movie‘, component: movie },
    { path: ‘/music‘, component: music }
  ]
});

再来写我们的app.vue文件(to和path是一一对应的)

<template>
  <div id="container">
    <div class="header">
      <div class="tab-item">
        <router-link to="/post">日志</router-link>
      </div>
      <div class="tab-item">
        <router-link to="/movie">电影</router-link>
      </div>
      <div class="tab-item">
        <router-link to="/music">音乐</router-link>
      </div>
    </div>
    <router-view></router-view>
  </div>
</template>

记住我们的这个模板文件是挂载在id=app的div中的,所以在index.html中要有<div id="app"><app></app></div>,

然后保存,就可以看到:

二、动态路由匹配

修改router/index.js

Vue.use(Router);

export default new Router({
  routes: [
    { path: ‘/user/:id‘, component: post }
  ]
});

修改app.vue

<template>
  <div id="container">
    <div class="header">
      <div class="tab-item">
        <router-link to="/user/post">日志</router-link>
      </div>
      <div class="tab-item">
        <router-link to="/user/movie">电影</router-link>
      </div>
      <div class="tab-item">
        <router-link to="/user/music">音乐</router-link>
      </div>
    </div>
    <router-view></router-view>
  </div>
</template>

修改post.vue

<template>
    <div id = "post">
        I‘m {{ $route.params.id }}!
    </div>
</template>
<script>
export default {};
</script>

看下效果:

虽然效果一样,但这其实是post一个模板的三次复用,至于$route.params.id,可以参考文档:http://router.vuejs.org/zh-cn/api/route-object.html

三、嵌套路由

首先先改写app.vue

<template>
  <div id="container">
    <div class="header">
      <div class="tab-item">
        <router-link to="/user">日志</router-link>
      </div>
      <router-view></router-view>
    </div>
  </div>
</template>

再改写post.vue

<template>
    <div id = "post">
         <router-link to="/user/music">音乐</router-link>
         <router-link to="/user/movie">电影</router-link>
      <router-view></router-view>
    </div>
</template>

再把movie.vuemusic.vue,改写成如下形式

<template>
<div id = "movie">
    I‘m Movie!
</div>
</template>

最后改router/index.js

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: ‘/user‘,
      component: post,
      children: [
        {
          path: ‘/user/movie‘,
          component: movie
        },
        {
          path: ‘/user/music‘,
          component: music
        }
      ]
    }
  ]
});

看结果,这就实现了最简单的嵌套路由:

四、router.push()

其实你在点击router-link时执行的就是router.push()的方法,我们可以单独给它一个点击事件,同样可以实现跳转

post.vue

<template>
    <div id = "post">
         <router-link to="/user/foo/music">音乐</router-link>
         <router-link to="/user/foo/movie">电影</router-link>
         <div class = "button">
         <button @click="goMusic">音乐</button>
         <button @click="goMovie">电影</button>
         </div>
      <router-view></router-view>
    </div>
</template>
<script>
export default {
  methods: {
    goMusic(){
        this.$router.push(‘/user/foo/music‘);
    },
    goMovie(){
        this.$router.push(‘/user/foo/movie‘);
    }
  }
};
</script>

看结果和直接点击是一样的:

五、路由的命名和参数传递

路由的命名实际上就是给路由绑定一个那么的属性,通过name的值来跳转;而参数的传递则可以在页面进行绑定,下面做一个最简单的例子

先把app.vue修改:

<template>
  <div id="container">
    <div class="header">
      <div class="tab-item">
        // 注意:,这里需要绑定
        <router-link :to="{ name: ‘post‘ }">日志</router-link>
      </div>
      <div class="tab-item">
        <router-link :to="{ name: ‘movie‘ }">电影</router-link>
      </div>
      <div class="tab-item">
         //传递两个自定义参数
        <router-link :to="{ name: ‘music‘, params: { id: 123, dataId:456} }">音乐</router-link>
      </div>
    </div>
      <router-view></router-view>
  </div>
</template>

在修改接收参数的music.vue:

<template>
    <div id="music">
        I‘m Music!
        // 可以直接接收
        <span>传递参数id: {{$route.params.id }}</span>
        <button @click="showData">调用参数</button>
        <span>接收参数:{{dataId}}</span>
    </div>
</template>
<script>
    export default {
        data() {
            return {
                dataId: ‘‘
            }
        },
        methods: {
         // 也可以在这里接收后,赋值
            showData() {
                let dataId = this.$route.params.dataId;
                this.dataId = dataId;
            }
        }
    };
</script>

最后看一下结果:

这样,我们就对vue-router进行了一个最简单的了解,以及最简单的应用

时间: 2024-10-29 19:05:45

从零开始,零基础,一点一点探索vue-router(vue2.0)的相关文章

[原]零基础学习SDL开发之移植SDL2.0到Android

在[原]SDL开发教程我们知道了如何在pc下使用SDL进行开发,在android上面是否一样可以使用呢?答案是肯定的. 下面我们进行移植SDL到Android,这里都是基于SDL最新版进行移植的,在Eclipse中编译. 开发环境:Ubuntu 14.04 64位,Eclipse + CDT + ADT,NDK 一.到官网下载http://www.libsdl.org/hg.php 下载2.0的源码也可以通过hg来clone最新的源码 hg clone http://hg.libsdl.org/

从零开始, 探索transition(vue-2.0)

这里是官方文档:http://cn.vuejs.org/v2/guide/transitions.html 一.开始结构如上一篇文章,我们在movie.vue中来写我们的第一个小过渡效果: 在movie.vue写入: <template> <div id="movie"> <button @click="showMenu" class="btn">{{text}}</button> <tran

vue 专题 vue2.0各大前端移动端ui框架展示

Vue 专题 一个数据驱动的组件,为现代化的 Web 界面而生.具有可扩展的数据绑定机制,原生对象即模型,简洁明了的 API 组件化 UI 构建 多个轻量库搭配使用 请访问链接: https://www.awesomes.cn/subject/vue#%E5%BA%94%E7%94%A8-%E6%A1%86%E6%9E%B6 原文地址:https://www.cnblogs.com/maqingyuan/p/9737236.html

Vue:Vue2.0搭建脚手架

随着Vue.js越来越火爆,更多的项目都用到Vue进行开发,在实际的开发项目中如何搭建脚手架呢?今天就来跟大家分享一下如何使用vue-cli搭建脚手架. 一.安装node.js 1.进入官网https://nodejs.org/en/download/ 根据电脑操作系统,选择相应版本的文件进行下载. 2.下载文件后双击进行安装 安装完成以后进入node.js的安装目录:D:\Program Files\nodejs\(这里是我本机安装的目录,其他机器目录可能不同),你会发现里面自带了npm,直接

初学vue,vue2.0+vue-router+vuex的小项目

名字:Todos 功能:待办事项的增删改查,学习vuex的思想,充分使用了mountain和action,引入了charts 做的图表分析,支持拖拽排序和滑动设置 说明:因为没有时间搭建后台服务,直接用的locaStroge做的数据存储,也就没有用到axios,设置页面本来想做个数据导出和导入,现在也没做 ui框架用的是 vux,yd-ui,mint-ui 自己懒得写样式,就只好全用别人家的咯 别人家的不全,就只好多用几家喽 地址:https://github.com/zhaowanhua/To

[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图

关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境:Ubuntu 14.04 64位,Eclipse + CDT + ADT+NDK 博主曾经自己使用NDK编译出了libSDL2.so,然后使用共享库的方式来调用libSDL2中的函数,结果发现SDL\src\core\android\SDL_android.c 这个jni函数写的实在是不够自己另外做

[原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图

关于如何移植在android上使用SDL,可以参考[原]零基础学习SDL开发之移植SDL2.0到Android 和 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 . 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示,同时叠加一张图作为背景图. 博主的开发环境:Ubuntu 14.04 64位,Eclipse + CDT + ADT+NDK 在前面两篇文章我们知道了如何移植SDL2.0到android上面来,并且可以在Android上面来显示一张图片,这篇

[原]零基础学习在Android进行SDL开发系列文章

[原]零基础学习SDL开发之移植SDL2.0到Android [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图 [原]零基础学习SDL开发之在Android使用SDL2.0渲染PNG图片 [原]零基础学习SDL开发之在Android使用SDL2.0加载字体 [原]零基础学习在Android进行SDL开发后记 [原]零基础学习在Android进行SDL开发系列文章,布布扣,bubuko.com

零基础小白建立自己的导航网站

前言 我就是那个零基础小白,前端.网页什么的我都没有学习过,只是有一点C#的Winform编程工作经验.做这些东西只是兴趣使然,遇到不懂的地方也只能自己找资料自学. 本文只是想记录一下自己的学习经历,也为其他有兴趣的同胞提供一些参考. 使用的是开源项目geekape/geek-navigation,这是最终的导航网站 猿导航 http://quyonghu.cn. 准备工作 开始之前,你必须准备好下面的工作: 安装了node.js.npm(安装过程参考安装Node.js和npm) 安装了git