vue-cli 多页面应用

vue技术栈的同学,大多是用vue-cli来搭建单页面应用。如后台管理系统,H5活动等;

vue-cli多页面应用开发 在初学时可能你有浏览过这方面的知识,但是实际开发中却比较少用到;

其实多页面还是非常实用的,它可以用来实现组件库的功能预览、H5可视化系统的页面预览、个人站点的功能介绍等;

你可以直接跳到文末的仓库源码,也可以跟着本文逐步搭建一个vue-cli多页面应用

例如下面的网站,都可以用多页面应用来实现::

有赞:Vant

饿了么:Mint-UI

京东:Nutui

实现组件预览项目

本案例实现的功能:

1.左侧菜单栏,点击菜单后,中心区域页面、手机界面都会切换;

2.中间页面区域:是我们的组件介绍,用来编写组件参数、说明等;

3.右侧手机页:是一个iframe页面,用来预览组件具体的功能;

实际上,右侧手机页也可以使用 动态组件 来实现,为什么还要使用多页面应用开发呢? 主要是出于下面几个问题的考虑:

  • 组件可能涉及到生命周期等函数,使用iframe页面,可以更加真实模拟组件调用;
  • 使用iframe页面,可以避免主界面的全局样式、变量对预览页面的影响;
  • 使用多页面应用,可以分离主界面、预览界面的代码,使其成为两个相对独立的工程,便于维护;

多页面应用配置

用vue-cli搭建项目后,在vue.config.js文件配置多页面(如果没有该文件,就手动新建),参考官网案例 vue-cli多页面配置

多页面项目的工程目录(核心文件说明)

├── public                # html
    ├── index.html        # 主应用
    ├── view.html         # 子应用
├── src                   # 主应用
    ├── layout            # 页面布局
    ├── router            # 路由
    ├── view              # 页面
    ├── App.vue           # 视图入口
    ├── main.js           # 项目入口
├── srcview               # 子应用
    ├── router            # 路由
    ├── view              # 页面
    ├── App.vue           # 视图入口
    ├── main.js           # 项目入口

vue.config.js 配置

  pages: {
    index: {
      entry: './src/main.js',
      template: './public/index.html',
      filename: 'index.html',
      title: "主应用",
    },
    view: {
      entry: './srcview/main.js',
      template: './public/view.html',
      filename: 'view.html',
      title: "子应用",
    },
  }

页面布局

  • 左侧菜单栏:根据主应用路由,递归生成;
  • 中间区域:主应用的子页面,根据路由切换;
  • 左侧区域:手机预览页,使用iframe实现;

目录结构

├── layout                
    ├── menu              # 菜单
    ├── index.vue         # 主体
    ├── look.vue          # 手机页

左侧菜单栏

本次项目的菜单使用了组件递归,详细案例可参考之前的文章【业务实例】vue组件递归及其应用,菜单开发有两个注意点:

1. @src/layout/menu: index.vue

使用v-bind="$attrs"进行隔代组件的props属性传递;

使用v-on="$listeners"进行隔代组件的事件传递;

在组件开发中,可以减少代码编写,这个书写技巧非常实用(做好笔记,这是期末考试重点)

 <!-- 核心代码 -->
<el-menu class="p-el-menu">
      <p-el-menu v-bind="$attrs" v-on="$listeners" />
</el-menu>

2. @src/layout/menu:p-el-menu.vue

菜单使用组件递归生成,所以对于多层代码,我们需要通过v-on="$listeners"进行事件传递,否则无法正确获取菜单的点击事件

 <!-- 核心代码 -->
 <p-el-menu :menuList="menu.children" v-on="$listeners" />

中间区域

中间区域是比较常规的路由嵌套设置,直接上代码

@src/layout/menu:index.vue

<el-main>
    <transition name="fade-transform" mode="out-in">
        <!-- 核心代码 -->
        <router-view></router-view>
    </transition>
</el-main>

右侧手机页

@src/layout/menu:look.vue

手机界面用iframe实现,菜单点击后,将拿到最新的currentUrl,然后拼接上/view#/(因为在vue.config.js中配置该路径的页面),即可打开子应用的页面

<!-- 核心代码 -->
<iframe :src="src" frameborder="0" class="view-iframe"></iframe>

<!-- 计算属性-->
computed: {
    src() {
      let url = `${location.origin}/view#/${this.currentUrl}`;
      return url;
    },
},

功能扩展建议

本次项目对主界面、手机界面进行了项目分离,便于维护。你可以尝试二次改造,例如:

  • 子应用的路由,可以通过监听文件动态注册,可以实现文件映射路由,就不用繁琐的配置路由表了;
  • 主应用、子应用的路由你可以区分路由地址,或者动态显示手机页
  • 项目打包方面可以分目录,可以分开部署

更多功能实现,评论区交流

仓库源码

vue-multi-page

总结

到此这篇关于vue-cli多页面应用实践之实现组件预览项目的文章就介绍到这了,更多相关vue-cli多页面实现组件预览内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

vue-cli多页面应用实践之实现组件预览项目的更多相关文章

  1. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

  2. Android ListView UI组件使用说明

    这篇文章主要介绍了Android ListView UI组件使用说明,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  3. Flutter 首页必用组件NestedScrollView的示例详解

    今天介绍的组件是NestedScrollView,大部分的App首页都会用到这个组件。对Flutter 首页必用组件NestedScrollView的相关知识感兴趣的一起看看吧

  4. vue-cli使用stimulsoft.reports.js的详细教程

    Stimulsoft Reports.JS是一个使用JavaScript和HTML5生成报表的平台。它拥有所有拥来设计,编辑和查看报表的必需组件。该报表工具根据开发人员数量授权而不是根据应用程序的用户数量。接下来通过本文给大家介绍vue-cli使用stimulsoft.reports.js的方法,一起看看吧

  5. React进阶学习之组件的解耦之道

    这篇文章主要给大家介绍了关于React进阶之组件的解耦之道,文中通过详细的示例代码给大家介绍了组件分割与解耦的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。

  6. 使用Vant框架list组件遇到的坑及解决

    这篇文章主要介绍了使用Vant框架list组件遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. vue实现自定义组件挂载原型上

    这篇文章主要介绍了vue实现自定义组件挂载原型上方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  8. Vue组件如何设置Props实例详解

    props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data、el、ref是一个级别的配置项,下面这篇文章主要给大家介绍了关于Vue组件如何设置Props的相关资料,需要的朋友可以参考下

  9. React.js组件实现拖拽排序组件功能过程解析

    这篇文章主要介绍了React.js组件实现拖拽排序组件功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  10. 解决vue路由组件vue-router实例被复用问题

    这篇文章介绍了解决vue路由组件vue-router实例被复用的问题,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部