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 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
Jquery中getJSON在asp.net中的使用说明
Mar 10 Javascript
为jQuery添加Webkit的触摸的方法分享
Feb 02 Javascript
jquery防止重复执行动画避免页面混乱
Apr 22 Javascript
使用jQuery的attr方法来修改onclick值
Jul 07 Javascript
Javascript数组Array基础介绍
Mar 13 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
Sep 05 Javascript
angularjs ocLazyLoad分步加载js文件实例
Jan 17 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
Sep 12 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
Feb 16 Javascript
Vue双向绑定实现原理与方法详解
May 07 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
Jun 10 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中的多态性[译]
2011/08/02 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
一个基于jquery的文本框记数器
2012/09/19 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
JS中的==运算: [''] == false —>true
2016/07/24 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
Angular2 PrimeNG分页模块学习
2017/01/14 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
2018/09/05 jQuery
Vuex实现数据共享的方法
2019/12/20 Javascript
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
用yum安装MySQLdb模块的步骤方法
2016/12/15 Python
python中的随机函数小结
2018/01/27 Python
Python打印输出数组中全部元素
2018/03/13 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
优秀实习自我鉴定
2013/12/04 职场文书
出售房屋委托书范本
2014/09/24 职场文书
李白故里导游词
2015/02/12 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
小学运动会前导词
2015/07/20 职场文书
深入理解Pytorch微调torchvision模型
2021/11/11 Python