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 相关文章推荐
利用javascript/jquery对上传文件格式过滤的方法
Jul 25 Javascript
jquery 查找select ,并触发事件的实现代码
Mar 30 Javascript
jQuery之$(document).ready()使用介绍
Apr 05 Javascript
Javascript学习指南
Dec 01 Javascript
JavaScript的Date()方法使用详解
Jun 09 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
js 自带的 map() 方法全面了解
Aug 16 Javascript
利用Js的console对象,在控制台打印调式信息测试Js的实现
Nov 26 Javascript
vue异步加载高德地图的实现
Jun 19 Javascript
使用Vue实现图片上传的三种方式
Jul 17 Javascript
JS中的算法与数据结构之字典(Dictionary)实例详解
Aug 20 Javascript
微信小程序通过js实现瀑布流布局详解
Aug 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
PHP sprintf()函数用例解析
2011/05/18 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
PHP实现简单登录界面
2019/10/23 PHP
JS 修改URL参数(实现代码)
2013/07/08 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
Angular工具方法学习
2016/12/26 Javascript
JS组件系列之MVVM组件构建自己的Vue组件
2017/04/28 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
JS实现继承的几种常用方式示例
2019/06/22 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
Python中random模块生成随机数详解
2016/03/10 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
Python Opencv任意形状目标检测并绘制框图
2019/07/23 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
pandas的相关系数与协方差实例
2019/12/27 Python
flask 实现上传图片并缩放作为头像的例子
2020/01/09 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
医院实习介绍信
2014/01/12 职场文书
无房证明范本
2014/09/17 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
乌镇导游词
2015/02/02 职场文书
面试通知单大全
2015/04/20 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
Vue中foreach数组与js中遍历数组的写法说明
2021/06/05 Vue.js
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android