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表格万条数据瞬间加载实现代码
Feb 20 Javascript
理解Javascript的动态语言特性
Jun 17 Javascript
JS/jQ实现免费获取手机验证码倒计时效果
Jun 13 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
Sep 20 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
Apr 19 Javascript
vue动态设置页面title的方法实例
Aug 23 Javascript
Openlayers实现测量功能
Sep 25 Javascript
使用AutoJs实现微信抢红包的代码
Dec 31 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
asp.net和asp下ACCESS的参数化查询
2008/06/11 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
js的一些常用方法小结
2011/06/29 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
微信小程序 navigation API实例详解
2016/10/02 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
使用Angular CLI生成路由的方法
2018/03/24 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
python远程邮件控制电脑升级版
2019/05/23 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
小学教育毕业生自荐信
2013/11/18 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
大学专科求职信
2014/07/02 职场文书
2015年人事科工作总结
2015/04/28 职场文书
Python操作CSV格式文件的方法大全
2021/07/15 Python
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android