vue 开发之路由配置方法详解


Posted in Javascript onDecember 02, 2019

本文实例讲述了vue 开发之路由配置方法。分享给大家供大家参考,具体如下:

概要

用 Vue.js + vue-router 创建单页应用,是非常简单的。使用 Vue.js ,我们已经可以通过组合组件来组成应用程序,当你要把 vue-router 添加进来,我们需要做的是,将组件(components)映射到路由(routes),然后告诉 vue-router 在哪里渲染它们。

实现代码

1.在main.js 中引入 router.3

import router from './router/index'

2.在main.js 中使用router

global.globalVm = new Vue({
  el: '#app',
  router,
  render: function(h) {
    return h(App);
  },
  store,
  watch: {
    '$route' (to, from) {
      globalVm.$dialog.loading.close();
      curPath = to.name;
    }
  }
});

这里导入了 router 配置,页面使用这个路由进行页面切换。

3. 组件渲染的位置。

我们可以看到 App.vue 组件,页面组件渲染到 <router-view ></router-view>标签中。

<template>
 <div id="app">
   <transition :name='direction'>
      <keep-alive>
        <router-view :resize="Resize" v-if="$route.meta.keepAlive"></router-view>
      </keep-alive>
    </transition>
    <transition :name='direction'>
        <router-view :resize="Resize" v-if="!$route.meta.keepAlive"></router-view>
      </transition>
    <loading v-model="isLoading" String="加载中" ></loading>
 </div>
</template>

router-view 这个是vue 组件渲染的地方。

4.组件路由配置

vue 开发之路由配置方法详解

index.js 配置如下:

export default new Router({
 routes: [
  {
   path: '/login',
   name: 'login',
   component: Login,
   meta:{
     layer:0
   }
  },
    {
   path: '/',
   name: 'root',
   redirect:"/index",
   meta:{
     layer:1
   }
  },
  {
   path: '/myToDo',
   name: 'myToDo',
   component: resolve => require(['@/components/bpm/MyToDo'], resolve),
   meta:{
     layer:2
   }
  },
  {
   path: '/MyAttend',
   name: 'myAttend',
   component: resolve => require(['@/components/bpm/MyAttend'], resolve),
   meta:{
     layer:2
   }
  },
  {
   path: '/getInstInfo/:instId/:type',
   name: 'getInstInfo',
   component:resolve => require(['@/components/bpm/GetInstInfo'], resolve),
   mata:{
     layer:3
   }
  },

4.1 根组件的配置

{
   path: '/',
   name: 'root',
   redirect:"/index",
   meta:{
     layer:1
   }
  • path 是浏览器显示的路径。
  • name:是组件的命令,我们在流程跳转是,使用name 进行跳转,而不要使用路径跳转,因为 路径可以修改,只要name 不做修改,就可以正常工作。
  • redirect: 这里表示 直接跳转到 /index 组件。
  • meta :这个是可以扩展的属性,我们在这里扩展了一个layer属性。

这个属性是用来组件做切换使用的,通过这个layer 属性,我们可以决定组件的动画。

App.vue 文件

vue 开发之路由配置方法详解

4.2 登录组件的配置

import Login from '@/components/Login'

{
   path: '/login',
   name: 'login',
   component: Login,
   meta:{
     layer:0
   }
}

component: Login

引入组件,指定登录组件。

4.3 懒加载组件

当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。

{
   path: '/myToDo',
   name: 'myToDo',
   component: resolve => require(['@/components/bpm/MyToDo'], resolve),
   meta:{
     layer:2
   }
  }

component: resolve => require(['@/components/bpm/MyToDo'], resolve),

4.4 组件参数配置

{
   path: '/task/:taskId',
   name: 'task',
   component:resolve => require(['@/components/bpm/TaskDetail'], resolve),
   mata:{
     layer:3
   }
}

这里我们定义了一个 taskId 参数。

4.5 组件切换

1.页面中进行切换。

<rx-list-item 
          v-for="item in list" 
          :key="item.id" 
          :href="{name:'task',params:{taskId:item.id}}" rel="external nofollow" 
          type='link'
          class="item-a"
        >

这里我们可以看到 ,指定了组件的名称,还有参数配置。

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

2.编程方式进行切换。

我们在保存数据成功后,需要跳转到提示组件,我们可以使用一下代码。

router.push({ name: 'user', params: { userId: 123 }})

4.6 路由HISTORY模式

vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。

url 路径样式为:

http://yoursite.com#/user/1

如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。

当你使用 history 模式时,URL 就像正常的 url,例如 http://yoursite.com/user/id,也好看!

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
JObj预览一个JS的框架
Mar 13 Javascript
JS实现多物体缓冲运动实例代码
Nov 29 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
用jQuery实现圆点图片轮播效果
Mar 19 Javascript
JS实现的点击按钮图片上下滚动效果示例
Jan 28 Javascript
js实现无缝轮播图
Mar 09 Javascript
关于AngularJS中几种Providers的区别总结
May 17 Javascript
JavaScript中window和document用法详解
Jul 28 Javascript
jQuery实现朋友圈查看图片
Sep 11 jQuery
vue 开发企业微信整合案例分析
Dec 02 #Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 #Javascript
node使用mysql获取数据库数据中文乱码问题的解决
Dec 02 #Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 #Javascript
angular8和ngrx8结合使用的步骤介绍
Dec 01 #Javascript
angular异步验证防抖踩坑实录
Dec 01 #Javascript
如何利用node.js开发一个生成逐帧动画的小工具
Dec 01 #Javascript
You might like
为查询结果建立向后/向前按钮
2006/10/09 PHP
PHP生成Flash动画的实现代码
2010/03/12 PHP
PHP的基本常识小结
2013/07/05 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
浅谈PHP的反射机制
2016/12/15 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
jQuery登陆判断简单实现代码
2013/04/21 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
2016/12/08 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python用threading实现多线程详解
2017/02/03 Python
Python如何快速实现分布式任务
2017/07/06 Python
Python3 log10()函数简单用法
2019/02/19 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
keras-siamese用自己的数据集实现详解
2020/06/10 Python
浅析NumPy 切片和索引
2020/09/02 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
SQL中where和having的区别
2012/06/17 面试题
计算机维护专业推荐信
2014/02/27 职场文书
委托书模板
2014/04/04 职场文书
大型公益活动策划方案
2014/08/20 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2014年信用社工作总结
2014/11/25 职场文书
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫
教你如何用cmd快速登录服务器
2022/06/10 Servers