JS模块化工具

AMD规范是依赖前置, CMD规范是依赖后置

AMD规范的加载器会把所有的JS中的依赖前置执行CMD是懒加载, 如果JS需要这个模块就加载, 否则就不加载, 导致的问题是符合AMD规范的加载器(requireJS), 可能第一次加载的时间会比较久, 因为他把所有依赖的JS全部一次性下载下来;

一:requirejs
AMD
JS模块化工具
亮点:
1、防止js加载阻塞页面渲染
2、防出现各种js引用丑陋的场景

define,require

require.config({
    paths : {
        "jquery" : ["http://libs.baidu.com/jquery/2.0.3/jquery", "js/jquery"],
        "a" : "js/a"
    }
})
require(["jquery","a"],function($){
    $(function(){
        alert("load finished");
    })
})
define(function(){ 
    function fun1(){
       alert("it works"); 
    } 
     fun1();
})

<a href="http://www.ruanyifeng.com/blog/2012/10/javascript_module.html">阮一峰Javascript模块化编程(一、二、三):模块的写法</a>
<a href="http://www.cnblogs.com/diligenceday/p/4504160.html">Require的MVC方式</a>

二:sea.js
CMD
<a href="http://seajs.org/docs/#docs">sea.js</a>

目的是解决nodejs的commonjs与前端统一
当然还有NPM兼容CommonJS, AMD, CMD 和 原生 JS写法

;(function(){ 
function MyModule() {
         // ... 
} 
var moduleName = MyModule; 
if (typeof module !== 'undefined' && typeof exports === 'object') { 
        module.exports = moduleName;
 } else if (typeof define === 'function' && (define.amd || define.cmd)) { 
        define(function() { return moduleName; }); 
} else { this.moduleName = moduleName; }
}).call(function() { 
        return this || (typeof window !== 'undefined' ? window : global);
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容