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();
})

阮一峰Javascript模块化编程(一、二、三):模块的写法
Require的MVC方式

二:sea.js
CMD
sea.js

目的是解决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);
});

你可能感兴趣的:(JS模块化工具)