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 26 Vue.js
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue中配置scss全局变量的步骤
Dec 28 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
详解Vue的options
May 15 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php创建session的方法实例详解
2015/01/27 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
Javascript模板技术
2007/04/27 Javascript
JavaScript中的类继承
2010/11/25 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
JS控制一个DIV层在指定时间内消失的方法
2014/02/17 Javascript
Javscript删除数组中指定元素并返回新数组
2014/03/06 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
js中调用微信的扫描二维码功能的实现代码
2020/04/11 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
python用pickle模块实现“增删改查”的简易功能
2017/06/07 Python
python读写LMDB文件的方法
2018/07/02 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
2019/08/27 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
python如何提升爬虫效率
2020/09/27 Python
HTML5 Canvas绘制文本及图片的基础教程
2016/03/14 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
主治医师岗位职责
2013/12/10 职场文书
超市营业员岗位职责
2013/12/20 职场文书
关于人生的感言
2014/01/17 职场文书
寒假实习自荐信
2014/01/26 职场文书
个人对照检查材料
2014/02/12 职场文书
生活小常识广播稿
2014/09/16 职场文书
优秀团队申报材料
2014/12/26 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
医德医风学习心得体会
2016/01/25 职场文书
担保书怎么写 ?
2019/04/22 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
python可视化之颜色映射详解
2021/09/15 Python