vue 基于abstract 路由模式 实现页面内嵌的示例代码


Posted in Vue.js onDecember 14, 2020

abstract 路由模式

abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,充当fallback,而不论是hash还是history模式都会对浏览器上的url产生作用,本文要实现的功能就是在已存在的路由页面中内嵌其他的路由页面,而保持在浏览器当中依旧显示当前页面的路由path,这就利用到了abstract这种与浏览器分离的路由模式。

路由示例

export const routes = [
 {
  path: "/",
  redirect: "abstract-route",
 },
 {
  path: "/embed-route",
  name: "embedded",
  component: () =>
   import(/* webpackChunkName: "embed" */ "../views/embed.vue"),
 },
 {
  path: "/abstract-route",
  name: "abstract",
  component: () =>
   import(/* webpackChunkName: "abstract" */ "../views/abstract.vue"),
 },
];

const router = new VueRouter({
 mode: "history",
 base: process.env.BASE_URL,
 routes,
});

本次示例有两个路由,分别为abstract,embedded,其中abstract视图上展开一个抽屉,抽屉当中显示embedded的视图。即:

<template>
 <div>
  <RouterDrawer
   :visible.sync="visible"
   :path="{ name: 'embedded' }"
   size="50%"
   title="drawer comps"
  ></RouterDrawer>
  <el-button @click="visible = true">open drawer</el-button>
 </div>
</template>


// embedded views
<template>
 <div>
  embedded views
 </div>
</template>

vue 基于abstract 路由模式 实现页面内嵌的示例代码

router-drawer 封装

当前项目默认是history 的路由模式,因此在进入abstract页面时,浏览器Url为http://127.0.0.1:8010/abstract-route,而router-drawer要做的是在此基础上,重新实例化一个abstract模式的路由,然后在组件当中利用<router-view />去挂载要被内嵌的目标页面。即:

<template>
 <el-drawer
  :visible.sync="visible"
  v-bind="$attrs"
  :before-close="handleClose"
 >
  <router-view />
 </el-drawer>
</template>
<script>
import { routes } from "../router/index";
import VueRouter from "vue-router";

export default {
 name: "router-drawer",
 props: {
  path: {
   type: Object,
   required: true,
  },
  visible: {
   type: Boolean,
   required: true,
   default: false,
  },
 },
  // 此处实例化一个新的router来配合当前页面的router-view
 router: new VueRouter({
  mode: "abstract",
  base: "/",
  routes,
 }),
 methods: {
  handleClose() {
   this.$emit("update:visible", false);
  },
 },
 mounted() {
  console.log("drawer router", this.$router);
  this.$router.push(this.path);
 },
};
</script>

通过打印日志可以得出两个实例化的路由:

vue 基于abstract 路由模式 实现页面内嵌的示例代码

这样即可实现在不改变当前页面path的前提下加载其他路由中的views了。

代码示例

以上就是vue 基于abstract 路由模式 实现页面内嵌的示例代码的详细内容,更多关于vue 实现页面内嵌的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
VUE+Element实现增删改查的示例源码
Nov 23 Vue.js
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
vue响应式原理与双向数据的深入解析
Jun 04 Vue.js
浅谈Vue的computed计算属性
Mar 21 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
Vue+TypeScript中处理computed方式
Apr 02 Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 Vue.js
解决vue中provide inject的响应式监听
Apr 19 Vue.js
Vue实现点击当前行变色
Dec 14 #Vue.js
Vue实现简单购物车功能
Dec 13 #Vue.js
vue使用element-ui实现表单验证
Dec 13 #Vue.js
vue+element实现动态加载表单
Dec 13 #Vue.js
vue实现两个区域滚动条同步滚动
Dec 13 #Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 #Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 #Vue.js
You might like
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
2011/07/03 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
根据分辩率调用不同的CSS.
2007/01/08 Javascript
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
2013/12/27 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
nodeJs内存泄漏问题详解
2016/09/05 NodeJs
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
简析Python的闭包和装饰器
2016/02/26 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Python 必须了解的5种高级特征
2020/09/10 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
领导视察欢迎词
2014/01/15 职场文书
公司会议策划方案
2014/05/17 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
python获取字符串中的email
2022/03/31 Python