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 相关文章推荐
SlideView 图片滑动(扩展/收缩)展示效果
Aug 01 Javascript
js 代码优化点滴记录
Feb 19 Javascript
jquery创建一个ajax关键词数据搜索实现思路
Feb 26 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
Javascript中String的常用方法实例分析
Jun 13 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
Sep 08 Javascript
基于JS实现翻书效果的页面切换样式
Feb 16 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
JS中的防抖与节流及作用详解
Apr 01 Javascript
vue项目中在可编辑div光标位置插入内容的实现代码
Jan 07 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/09/30 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Javascript 汉字字节判断
2009/08/01 Javascript
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
利用node.js+mongodb如何搭建一个简单登录注册的功能详解
2017/07/30 Javascript
Angular.js中数组操作的方法教程
2017/07/31 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
python监控文件并且发送告警邮件
2018/06/21 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
python3判断url链接是否为404的方法
2018/08/10 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
用python读取xlsx文件
2020/12/17 Python
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
阿联酋航空官方网站:Emirates
2017/10/17 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
学校师德承诺书
2014/05/23 职场文书
新闻传播专业求职信
2014/07/22 职场文书
建筑施工安全责任书
2014/07/24 职场文书
新学期主题班会
2015/08/17 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android
Golang获取List列表元素的四种方式
2022/04/20 Golang
Python使用DFA算法过滤内容敏感词
2022/04/22 Python