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 onmouseout 解决办法
Jul 17 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
JavaScript实现数组随机排序的方法
Jun 26 Javascript
javascript如何写热点图
Dec 08 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
泛谈JS逻辑判断选择器 || &&
May 24 Javascript
Vue实现商品分类菜单数量提示功能
Jul 26 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
微信小程序vant弹窗组件的实现方式
Feb 21 Javascript
JavaScript中的this基本问题实例小结
Mar 09 Javascript
Vue-Element-Admin集成自己的接口实现登录跳转
Jun 23 Vue.js
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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
2019/09/04 PHP
PHP+MySql实现一个简单的留言板
2020/07/19 PHP
input 高级限制级用法
2009/03/26 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
英国医生在线预约:Top Doctors
2019/10/30 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
计算机专业自荐信
2013/10/14 职场文书
五一手机促销方案
2014/03/08 职场文书
我的长生果教学反思
2014/04/28 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
赔偿协议书范本
2014/09/12 职场文书
2014年工程师工作总结
2014/11/25 职场文书
幼儿园中班教学反思
2016/03/03 职场文书