Vue.js系列之vue-router(上)(3)


Posted in Javascript onJanuary 03, 2017

说明:

我们项目现在用的是:vue2.0 + vue-cli + webpack + vue-router2.0 + vue-resource1.0.3

如果大家在实践的过程中与本文所说的内容有较大区别的话看看是不是版本问题。

本文是一系列文章,在我对Vue有了更深刻的理解认识之后会对文章及时进行修改或更正。欢迎大家批评指出错误。以下是已完成的文章列表。

概述

Vue非常适用于实践单页面应用程序也就是平时大家说的比较多的SPA(single page application),这点应该了解过Vue的应该都知道吧。一般的单页面应用是基于路由或页面之间的链接来形成的,Vue是基于路由和组件的,所以我们今天就来了解下vue-router。vue-router是Vue.js官方的路由插件,它和vue.js深度集成,用于设定访问路径,并将路径和组件映射起来,我们给每个组件一个路由地址,跳转路由相当于组件切换。vue-router的内容还是比较多的,这里我只分享我自己项目中用到的地方,其他地方大家可以看文档啦。

vue-router官网:http://router.vuejs.org/zh-cn/(中)

英文官网你知道啦,直接去掉后面的"zh-cn/"就好了。

开始使用vue-router

这里我假设大家之前都用模块工程的方式实践了一个vue Demo,在此基础上我们添加vue-router。

1.安装

npm install vue-router

2.在项目main.js中安装路由插件

import Vue from 'vue' 
import VueRouter from 'vue-router' 
Vue.use(VueRouter)

3.在组件中使用路由

先看下路由跳转的效果吧,大家注意看地址栏变化哈。

Vue.js系列之vue-router(上)(3)

下面这个tabBar就是一个组件(偷偷告诉你,在微信小程序中,这个功能直接配置app.json文件就好了)

每个tab点击时路由地址会相应变化,其实是渲染相应的组件,具体我们来看代码。

footer.vue组件

<template> 
  <div class="footer"> 
    <div class="readType" v-if="readType.count">{{readType.count}}</div> 
    <ul class="main-nav"> 
      <li> 
        <router-link to="/home"> 
          <i class="icon-nav icon-nav1"></i><span>首页</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/quan" v-bind:class="{rrouter:activ}"> 
          <i class="icon-nav icon-nav2"></i><span>学友圈</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/friend"> 
          <i class="icon-nav icon-nav3"></i><span>学友</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/find"> 
          <i class="icon-nav icon-nav4"></i><span>发现</span> 
        </router-link> 
      </li> 
      <li> 
        <router-link to="/mine"> 
          <i class="icon-nav icon-nav5"></i><span>我的</span> 
        </router-link> 
      </li> 
    </ul> 
  </div> 
</template>

这里有几点需要知道:

1.使用 router-link 组件来导航.

2.通过传入 `to` 属性指定链接.

3.<router-link> 默认会被渲染成一个 `<a>` 标签

路由出口

我们前面说了,路由跳转就是相应组件在渲染,那么渲染的内容是怎么显示也页面中的呢,那就是路由出口'<router-view></router-view>'做的事了,路由匹配到的组件将渲染在这里。

路由出口我们可以设置在当前组件中也可以设置在其他组件中,项目中我们就将所有组件都渲染在最大的容器App.vue组件中(我们项目中App组件只作为渲染容器)。

<template> 
 <div id="app"> 
  <router-view></router-view> 
 </div> 
</template>

JavaScript

定义路由文件可以直接写在main.js文件中,也可以新建一个js文件,因为我们的组件比较多,所以单独把路由拿出来写了一个router.js文件。

// 0. 如果使用模块化机制编程,进入Vue和VueRouter,要调用 Vue.use(VueRouter) 
import Vue from 'vue' 
import VueRouter from 'vue-router' 
Vue.use(VueRouter) 
// 1. 定义(路由)组件。 
// 可以从其他文件 import 进来,我们一般都是建好了组件再来写路由的 
// 所以就会有好多这样的语句。 
import home form "./components/home" 
import login form "./components/login" 
// 2. 定义路由 
 routes: [ //这里跟1.x有挺大区别,有接触的自己看清楚哦 
  { 
   path: '/',  //浏览器网路请求走通之后默认就会去找域名下的根目录, 
   name: 'home', //所以我们就把这个组件作为默认首页 
   component: home 
  }, 
  { 
   path: '/login', 
   name: 'login', 
   component: login 
  } 
  ] 
// 3. 创建 router 实例,然后传 `routes` 配置 
// 你还可以传别的配置参数, 不过先这么简单着吧。 
const router = new VueRouter({   //你就当const是var 
 routes 
//(缩写)相当于 routes: routes 
}) 
// 4. 创建和挂载根实例。 
// 记得要通过 router 配置参数注入路由, 
// 从而让整个应用都有路由功能 
const app = new Vue({ 
 router 
}).$mount('#app') 
// 现在,应用已经启动了!

总结

上篇先分享到这里,主要了解了有以下几点:

1.vue-router的安装和使用

2.在组件模板中的书写格式

3.知道了路由出口

4.如何定义一个路由

5.创建路由实例和挂载实例

下篇我将给大家继续分享路由的其他用法(项目中用到的):

1.如何实现当前页激活,tab标签同时也激活,即active-class

2.路由跳转时添加过渡动效

3.路由传参及命名路由

4.实现资源懒加载

5.编程式导航

6.router-link的其他表现形式

7.Router构造详细配置

内容有点多,可能还要再分细一点,写详细点。但还是想把自己遇到过的问题,用到的知识点通过自己的理解分享出来。

以上所述是小编给大家介绍的Vue.js系列之vue-router(上)(3),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
May 03 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
js jquery获取随机生成id的服务器控件的三种方法
Jul 11 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
JS实现漂亮的淡蓝色滑动门效果代码
Sep 23 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
解析预加载显示图片艺术
Dec 05 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
Oct 17 Javascript
关于Vue单页面骨架屏实践记录
Dec 13 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
Sep 21 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
JavaScript 监听组合按键思路及代码实现
Jul 28 Javascript
JavaScript实现自定义媒体播放器方法介绍
Jan 03 #Javascript
JS求解三元一次方程组值的方法
Jan 03 #Javascript
Vue.js系列之项目结构说明(2)
Jan 03 #Javascript
Vue.js系列之项目搭建(1)
Jan 03 #Javascript
jquery实现下拉框多选方法介绍
Jan 03 #Javascript
jQuery实现可拖拽3D万花筒旋转特效
Jan 03 #Javascript
详解JavaScript常量定义
Jan 03 #Javascript
You might like
PHP的ASP防火墙
2006/10/09 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
JavaScript 程序编码规范
2010/11/23 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
动态加载权限管理模块中的Vue组件
2018/01/16 Javascript
详解ES6 Promise的生命周期和创建
2019/08/18 Javascript
vue实现将一个数组内的相同数据进行合并
2019/11/07 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
使用Python脚本将文字转换为图片的实例分享
2015/08/29 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
聚网科技C++面试笔试题
2015/09/01 面试题
数字天堂软件测试面试题
2012/12/23 面试题
加拿大留学自荐信
2014/01/28 职场文书
静心口服夜广告词
2014/03/20 职场文书
幼儿园教师师德师风演讲稿:爱我所爱 无悔青春
2014/09/10 职场文书
缓刑人员思想汇报500字
2014/09/12 职场文书
法人委托书范本
2014/09/15 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
Android Gradle 插件自定义Plugin实现注意事项
2022/06/16 Java/Android