基于原生JS封装的Modal对话框插件

本文介绍了一种基于原生JavaScript封装的Modal对话框插件,包括API配置、核心功能开发如DOM创建、参数处理、事件处理及发布订阅机制。提供使用示例和完整代码,适合学习和拓展。
摘要由CSDN通过智能技术生成

基于原生JS封装Modal对话框插件

原生JS封装Modal对话框插件,个人用来学习原理与思想,只有简单的基本框架的实现,可在此基础上添加更多配置项

API配置

		//基本语法
    let modal = ModalPlugin({
   
        //提示的标题信息
        title:'系统提示',
        //内容模板 字符串 /模板字符串/DOM元素对象
        template:null,
        //自定义按钮信息
        buttons:[{
   
            //按钮文字
            text:'确定',
            click(){
   
                //this:当前实例
            }
        }]
    })
    modal.open()//=>打开
    modal.close()//=>关闭

//基于发布订阅,实现回调函数的监听
    modal.on('input/open/close/dragstart/dragmove/dragend',[func])
		modal.fire(...)
    modal.off(...)

Modal插件核心功能的开发

导出

(function () {
   
    function ModalPlugin() {
   
        return 
    }

    // 浏览器直接导入,这样的方法是暴露到全局的
    window.ModalPlugin = ModalPlugin;
    //如果还需要支持ES6Module/CommonJS模块导入规范,在react项目当中,vue项目当中也想用
    if (typeof module !== 'undefined' && module.exports !== 'undefined') {
   //如果module不存在,typeof不会出错,会返回undefined
        module.exports = ModalPlugin;//CommonJS规范,只有在webpack环境下才支持
    }
})()

使用对象和函数创建实例

想使用创建对象的方式new ModalPlugin()创建实例或当做普通函数执行ModalPlugin(),创建实例,需要这样做

(function () {
   
    function ModalPlugin() {
   
        return new init()
    }
//想使用创建对象的方式`new ModalPlugin()`创建实例或当做普通函数执行`ModalPlugin()`,创建实例,需要这样做

    //类的原型: 公共的属性方法
    ModalPlugin.prototype = {
   
        constructor: ModalPlugin
    }

    function init() {
   }
    init.prototype = ModalPlugin.prototype;
    // 浏览器直接导入,这样的方法是暴露到全局的
    window.ModalPlugin = ModalPlugin;
    //如果还需要支持ES6Module/CommonJS模块导入规范,在react项目当中,vue项目当中也想用
    if (typeof module !== 'undefined' && module.exports !== 'undefined') {
   //如果module不存在,typeof不会出错,会返回undefined
        module.exports = ModalPlugin;//CommonJS规范,只有在webpack环境下才支持
    }
})()

配置项

 //封装插件的时候,需要支持很多配置项,有的配置项不传递有默认值,此时我们千万不要一个个定义形参,用对象的方式传形参,好处是可以不传,而且可以不用考虑顺序
    function ModalPlugin(options) {
   
        return new init(options)
    }
//想使用创建对象的方式创建实例new ModalPlugin()或当做普通函数执行也能创建实例ModalPlugin(),需要这样做
    ModalPlugin.prototype = {
   
        constructor: ModalPlugin
    }

    function init(options) {
   
        //接下来将所有的操作全部写在init里面
        //参数初始化:传递进来的配置项替换默认的配置项
        options = Object.assign({
   
            title:'系统提示',
            template:null,
            frag:true,
            buttons:[{
   
                text:'确定',
                click(){
   
                }
            }]
        },options)

    }

命令模式init()执行逻辑

file

创建DOM

/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值