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 相关文章推荐
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
Dec 16 Javascript
浅析js中的浮点型运算问题
Jan 06 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
JavaScript的面向对象编程基础
Aug 13 Javascript
JavaScript实现图片滑动切换的代码示例分享
Mar 06 Javascript
JavaScript的==运算详解
Jul 20 Javascript
AngularJs上传前预览图片的实例代码
Jan 20 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
详解vue2.0脚手架的webpack 配置文件分析
May 27 Javascript
jQuery实现简单飞机大战
Jul 05 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
2015/09/23 PHP
PHP带节点操作的无限分类实现方法详解
2016/11/09 PHP
window.open的功能全解析
2006/10/10 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
2009/08/03 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
Js实现手机发送验证码时按钮延迟操作
2014/06/20 Javascript
$.each遍历对象、数组的属性值并进行处理
2014/07/18 Javascript
浏览器缩放检测的js代码
2014/09/28 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
2020/12/25 Vue.js
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
Python获取统计自己的qq群成员信息的方法
2019/11/15 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
2020/05/15 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
简述进程的启动、终止的方式以及如何进行进程的查看
2013/07/12 面试题
办公室年终个人自我评价
2013/10/28 职场文书
施工人员岗位职责
2013/12/12 职场文书
店面销售职位的职责
2014/03/09 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
详解Mysql和Oracle之间的误区
2021/05/18 MySQL