javascript的模块化封装技巧:同时支持AMD和原生直接引用

并不是什么新鲜东西,很多JS库都使用这种方式进行模块化封装,便于各种情况下的引用。

假设开发完成的JS库(模块):myjssdk.js,使用原生及AMD的引用方式如下:

1、原生方式:

<script src="//www.test.com/myjssdk.js"></script>

2、AMD方式:

<!-- 需要先引入requirejs库,并在config文件中注册“myjssdk” -->
<script>
require(['myjssdk'], function(jssdk){
  jssdk.info();
});
</script>

 

实现方式:

(function (global, factory) {
	
    if (typeof define === 'function' && define.amd) {
        // AMD规范
        define(factory);
    } else {
        // 浏览器注册全局对象,自定义对象名:MyJSSDK
        global.MyJSSDK = factory();
    }
	
})(this, (function () {
	
    //主要业务逻辑
    function say() {
        console.log('hello jssdk');
    }

    //对外暴露方法
    return {
        say: say
    }
	
}))

 

还可以按照这种方式继续扩展,支持CMD、CommonJS、ES6等模块的封装。

posted @ 2021-12-13 22:33  网无忌  阅读(269)  评论(0编辑  收藏  举报