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 面向对象之神奇的prototype
Feb 26 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
May 23 Javascript
JavaScript中的onerror事件概述及使用
Apr 01 Javascript
jquery ui对话框实例代码
May 10 Javascript
js导出格式化的excel 实例方法
Jul 17 Javascript
javascript关于继承解析
May 10 Javascript
Javascript中的对象和原型(二)
Aug 12 Javascript
js获取腾讯视频ID的方法
Oct 03 Javascript
使用openSpeDiv方法实现Ecshop登录弹窗框效果
Mar 13 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
Jul 28 Javascript
vue项目打包后打开页面空白解决办法
Jun 29 Javascript
记一次vue跨域的解决
Oct 21 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
php获取操作系统语言代码
2013/11/04 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
JavaScript打开word文档的实现代码(c#)
2012/04/16 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python语法分析之字符串格式化
2019/06/13 Python
Python考拉兹猜想输出序列代码实践
2019/07/05 Python
Python实现代码统计工具
2019/09/19 Python
python双向链表原理与实现方法详解
2019/12/03 Python
Python @property原理解析和用法实例
2020/02/11 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
车间主管岗位职责
2013/11/14 职场文书
班组长安全生产职责
2013/12/16 职场文书
个人职业及收入证明
2014/10/13 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
爱国主义教育主题班会
2015/08/13 职场文书