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 相关文章推荐
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
HTML5之lang属性与dir属性的详解
Jun 19 Javascript
js数组操作常用方法
May 08 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 Javascript
angularJs中datatable实现代码
Jun 03 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
将 vue 生成的 js 上传到七牛的实例
Jul 28 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
ES6 Promise对象概念及用法实例详解
Oct 15 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输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
php合并数组中相同元素的方法
2014/11/13 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
2017/02/04 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
图标线性回归斜着移动到指定的位置
2013/08/16 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
webpack使用 babel-loader 转换 ES6代码示例
2017/08/21 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
简单实现vue中的依赖收集与响应的方法
2019/02/18 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
浅谈scrapy 的基本命令介绍
2017/06/13 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
python opencv实现切变换 不裁减图片
2018/07/26 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
四年大学自我鉴定
2014/02/17 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
服务员岗位职责范本
2015/04/09 职场文书
2015年学生会个人工作总结
2015/04/09 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书