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 相关文章推荐
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
禁止选中文字兼容IE、Chrome、FF等
Sep 04 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
Oct 20 Javascript
详解javascript事件冒泡
Jan 09 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
实现jquery放大镜的两种方法
Feb 22 jQuery
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
TypeScript 运行时类型检查补充工具
Sep 28 Javascript
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
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
Yii2框架数据验证操作实例详解
2018/05/02 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
nodejs批量修改文件编码格式
2015/01/22 NodeJs
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jQuery+JSON实现AJAX二级联动实例分析
2015/12/18 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
js使用formData实现批量上传
2020/03/27 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
[51:05]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第一局
2016/03/06 DOTA
python urllib urlopen()对象方法/代理的补充说明
2017/06/29 Python
python获取文件真实链接的方法,针对于302返回码
2018/05/14 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)
2012/11/22 HTML / CSS
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
分厂厂长岗位职责
2013/12/29 职场文书
简爱读书笔记
2015/06/26 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书