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+iview实现分页及查询功能
Nov 17 Vue.js
Vue实现图书管理小案例
Dec 03 Vue.js
vue绑定class的三种方法
Dec 24 Vue.js
vue实现验证用户名是否可用
Jan 20 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 Vue.js
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 Vue.js
三种方式清除vue路由跳转router-link的历史记录
Apr 10 Vue.js
vue elementUI批量上传文件
Apr 26 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 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环境搭建最新方法
2006/09/05 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
smarty内置函数foreach用法实例
2015/01/22 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
学习ExtJS Column布局
2009/10/08 Javascript
jquery tab插件制作实现代码
2010/06/22 Javascript
lyhucSelect基于Jquery的Select数据联动插件
2011/03/29 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
初学js插入节点appendChild insertBefore使用方法
2011/07/04 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
javascript中动态函数用法实例分析
2015/05/14 Javascript
javascript实现树形菜单的方法
2015/07/17 Javascript
编写高质量JavaScript代码的基本要点
2016/03/02 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
jQuery简单实现列表隐藏和显示效果示例
2016/09/12 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
[51:50]完美世界DOTA2联赛 Magma vs GXR 第一场 11.07
2020/11/10 DOTA
python中Apriori算法实现讲解
2017/12/10 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
简单了解python PEP的一些知识
2019/07/13 Python
Python中调用其他程序的方式详解
2019/08/06 Python
python 实现提取log文件中的关键句子,并进行统计分析
2019/12/24 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
幼儿如何来做好自我评价
2013/11/05 职场文书
双十佳事迹材料
2014/01/29 职场文书
小区门卫岗位职责范本
2014/08/24 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
学校教师师德师风承诺书
2015/04/28 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS