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 相关文章推荐
使用js检测浏览器是否支持html5中的video标签的方法
Mar 12 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
Dec 15 Javascript
实例详解ECMAScript5中新增的Array方法
Apr 05 Javascript
微信小程序 倒计时组件实现代码
Oct 24 Javascript
js实现键盘自动打字效果
Dec 23 Javascript
前端开发必知的15个jQuery小技巧
Jan 22 Javascript
jQuery实现遍历复选框的方法示例
Mar 06 Javascript
每周一练 之 数据结构与算法(Stack)
Apr 16 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
Apr 28 Javascript
Vue.js中的组件系统
May 30 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
Sep 26 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
多人战的战术与战略
2020/03/04 星际争霸
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
硬盘浏览程序,保存成网页格式便可使用
2006/12/03 Javascript
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
jquery实现div拖拽宽度示例代码
2013/07/31 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
JavaScript事件对象深入详解
2018/12/30 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
JavaScript中的相等操作符使用详解
2019/12/21 Javascript
在antd中setFieldsValue和defaultVal的用法
2020/10/29 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
python获取linux系统信息的三种方法
2020/10/14 Python
Hunkemöller西班牙:欧洲最大的内衣连锁店
2018/08/15 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
中科软笔试题和面试题
2014/10/07 面试题
求职自荐书范文
2013/12/04 职场文书
校园达人秀策划书
2014/01/12 职场文书
负责人任命书范本
2014/06/04 职场文书
2015年大学社团工作总结
2015/04/09 职场文书
签证工作证明模板
2015/06/15 职场文书