js进阶教程之模块化开发

本文详细介绍了如何在JavaScript中模仿layui的模块化开发方式,通过自定义模块和函数,实现了模块的定义、调用以及功能组合,展示了模块化开发的优势和灵活性。
摘要由CSDN通过智能技术生成

做过layui的小伙伴经常看到这样的代码

//定义一个模块
layui.define(['jquery'], function(exports){
	var $ = layui.jquery;
	//模块的具体实现
	var myModule = {
		sayHello: function(){
			console.log('Hello Layui!');
		}
	};
	//输出模块
	exports('myModule', myModule);
});
//使用模块
layui.use(['myModule'], function(){
	var myModule = layui.myModule;
	//调用模块的方法
	myModule.sayHello();
});

这种模块化开发的好处是,可以将大的模块拆分成多个小模块,然后进行调用组装,加下来我们自己来实现一个类似layui的模块化组件开发

	// 自定义模块
   let module = (function () {
   		// 存储模块列表
        let moduleList = []
        // 定义模块, name是模块的名字,  modules是模块的列表, action是模块执行的操作
        function define (name, modules, action) {
            modules.map((m, i) => {
            	// 把具体模块名称替换成之前已经注册好的模块对象
                modules[i] = moduleList[m]
            })
            // 把模块对象传给下一个调用者,下一个就能调用改模块了
            moduleList[name] = action.apply(null, modules)
        }
        return {define}
    })()
	// 定义hd模块,有first和max方法
    module.define('hd', [], function() {
        return {
            first(arr) {
                return arr[0]
            },
            max(arr, key) {
                return arr.sort((a, b) => b[key] - a[key])[0]
            }
        }
    }) 
	// 定义lesson模块,并调用hd模块
    module.define('lesson', ['hd'], function (hd) {
        let data = [
            {name: 'js', price: 199},
            {name: 'mysql', price: 78}
        ]
        console.log(hd.max(data, 'price'))
    })
	// 定义a模块
    module.define('a', [], function () {
        return {
            a: function (){
                console.log('a')
            }
        }
    })
	// 定义b模块
    module.define('b', [], function () {
        return {
            b: function (){
                console.log('b')
            }
        }
    })
	// 定义c模块,并调用 a 和 b模块
    module.define('c', ['a', 'b'], function (a, b) {
        console.log(arguments)
        a.a()
        b.b()
    })

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值