Vue触发式全局组件构建的方法


Posted in Javascript onNovember 28, 2018

前言

在开发中总会遇到一些全局组件,如果通过import导入,components挂载就显得冗余,而一些UI框架(诸如 elementUi、iview等)通过调用触发的形式就显得很便捷,本文就是简单的构建一个类似组件

背景

前几月公司开发一个小程序后台管理系统,客户可以通过在pc后台管理系统中定制自己的微信小程序,包括结构更改、数据上传等,通过将页面结构抽象成数据的方法,自由控制小程序的展示方式(横向抽出每个模块)

Vue触发式全局组件构建的方法

而这其中频繁使用到图片上传,每个模块都得使用,无论是cv大法还是import都显得不太方便,这就显现出触发式全局注册组件的优势

Vue触发式全局组件构建的方法

不废话直接开始吧

正文

1、文件结构

Vue触发式全局组件构建的方法

其中

  • template.vue: 是页面结构
  • init.js: 是初始化操作,就处理调用参数注入
  • index.js: 抛出接口,用于Vue.use()注册

2、文件解析

template.vue文件没有太多可说的,只是你要展示的DOM结构,除了本身逻辑,只要预留出显示隐藏的方法、数据回传等一些业务需要的功能

/**
   * onShow - 控制组件显示
   *
   * @return {type}
   */
  onShow() {
   this.uploadModalShow = true
  },

init.js:

import uploadModalComponent from './template.vue'
import Vue from 'vue'

// 构造组件
let uploadModalConstructor = Vue.extend(uploadModalComponent);
// 组件实例
let $vue;
// 生成dom
let initUploadModal = ()=>{
  // 实例化
  $vue = new uploadModalConstructor({
    el: document.createElement('div')
  });
  // 注入页面
  document.body.appendChild($vue.$el);
}

const UploadModal = (success = () => {}, fail = () => {}) => {
 // 初始化构架dom结构
 initUploadModal()
 // 注入回调函数
 if (success instanceof Function) $vue.success = success;
 else console.error('传入成功回调函数');
 if (fail instanceof Function) $vue.fail = fail;
 else console.error('传入失败回调函数');
 // 组件显示
 $vue.onShow()
}

export default UploadModal

index.js:

// 图片上传弹框工具

import uploadModel from './init.js'

const UploadModel = {
 install(Vue) {
   //注册全局组件
   Vue.component(uploadModel.name, uploadModel)

   //添加全局API
   Vue.prototype.$uploadModel = uploadModel
 }
}
export default UploadModel;

需要使用时通过

// 更换图片
import ShowUpLoadModal from './plugin/upLoadModal';
Vue.use(ShowUpLoadModal);

this.$uploadModel (opts)即可,这个例子逻辑简单,这里只是记录这种方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 硬盘序列号+其它硬件信息
Dec 23 Javascript
javascript中关于执行环境的杂谈
Aug 14 Javascript
jquery maxlength使用说明
Sep 09 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
ES6下React组件的写法示例代码
May 04 Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 Javascript
vue项目实战总结篇
Feb 11 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
JS隐藏号码中间4位代码实例
Apr 09 Javascript
基于vue 实现表单中password输入的显示与隐藏功能
Jul 19 Javascript
修改Vue打包后的默认文件名操作
Aug 12 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 #Javascript
jQuery实现购物车的总价计算和总价传值功能
Nov 28 #jQuery
vue与原生app的对接交互的方法(混合开发)
Nov 28 #Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 #Javascript
vue实现微信分享功能
Nov 28 #Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 #Javascript
详解小程序rich-text对富文本支持方案
Nov 28 #Javascript
You might like
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
2013/06/27 PHP
从刷票了解获得客户端IP的方法
2015/09/21 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
2016/05/18 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
ReactNative之FlatList的具体使用方法
2017/11/29 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
vscode中Vue别名路径提示的实现
2020/07/31 Javascript
js实现筛选功能
2020/11/24 Javascript
Python os模块介绍
2014/11/30 Python
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
给Python初学者的一些编程技巧
2015/04/03 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
python正则表达式的使用
2017/06/12 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
python 类之间的参数传递方式
2019/12/20 Python
基于python实现操作redis及消息队列
2020/08/27 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
CSS3 选择器 伪类选择器介绍
2012/01/21 HTML / CSS
一些Unix笔试题和面试题
2012/09/25 面试题
前厅收银主管岗位职责
2014/02/04 职场文书
白酒市场营销方案
2014/02/25 职场文书
投标保密承诺书
2014/05/19 职场文书
运动会方阵口号
2014/06/07 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
公司庆典主持词
2015/07/04 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL