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正确获取元素样式详解
Aug 07 Javascript
javascript cookie操作类的实现代码小结附使用方法
Jun 02 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 Javascript
获取客户端电脑日期时间js代码(jquery)
Sep 12 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
Dec 25 Javascript
AngularJS基础 ng-href 指令用法
Aug 01 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
Aug 23 Javascript
详解vue+css3做交互特效的方法
Nov 20 Javascript
基于JavaScript实现每日签到打卡轨迹功能
Nov 29 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
Dec 06 Javascript
vue 单页应用和多页应用的优劣
Oct 22 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实现小型站点广告管理(修正版)
2006/10/09 PHP
与数据库连接
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
Jquery Ajax学习实例6 向WebService发出请求,返回DataSet(XML) 异步调用
2010/03/18 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
jQuery实现页面顶部显示的进度条效果完整实例
2015/12/09 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
jQuery操作css样式
2017/05/15 jQuery
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
python ip正则式
2009/05/07 Python
git进行版本控制心得详谈
2017/12/10 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
python字典的值可以修改吗
2020/06/29 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
计算机专业个人求职信范例
2013/09/23 职场文书
大学生关于奋斗的演讲稿
2014/01/09 职场文书
火箭队口号
2014/06/18 职场文书
辞旧迎新演讲稿
2014/09/15 职场文书
工程部部长岗位职责
2015/02/12 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
NoSQL优缺点与MongoDB数据库简介
2022/06/05 MongoDB