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类中定义原型方法的两种实现的区别
Mar 08 Javascript
JS与框架页的操作代码
Jan 17 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
Apr 07 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
Nov 23 Javascript
layer弹出层框架alert与msg详解
Mar 14 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
Vue 组件间的样式冲突污染
Aug 31 Javascript
微信小程序实现弹出菜单功能
Jun 12 Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 Javascript
js实现简单的秒表
Jan 16 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 eval函数使用介绍
2013/12/08 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
vue中appear的用法
2017/08/17 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
Python中自定义函数的教程
2015/04/27 Python
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
全网首秀之Pycharm十大实用技巧(推荐)
2020/04/27 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
学生操行评语大全
2014/04/24 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
医学专业大学生职业生涯规划书
2014/10/25 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
高中生物教学反思
2016/02/20 职场文书