js模块化解决方案规范

  • AMD

    • 是由RequireJS推动一个异步加载模块的规范,通过define定义模块,require去引用模块
    • 推崇依赖前置,在定义模块的时候就要声明其依赖的模块,提前执行
  • CMD

    • 是由SeaJS推动的模块化规范,推崇一个模块一个文件,通过define定义模块,seajs.use来加载模块
    • 推崇就近依赖,只有在用到某个模块的时候再去require,延迟执行
  • CommenJS是一种同步加载模块的规范,被nodejs推广开,使用module.exports和require开发

  • UMD是AMD和CommonJS的糅合,umd先判断是否支持Node.js的模块(exports)是否存在,存在则使用Node.js模块模式。在判断是否支持AMD(define是否存在),存在则使用AMD方式加载模块

模块的循环加载

CommonJS模块是加载时执行,即脚本代码在require时就全部执行。一旦出现某个模块被“循环加载”,就只输出已经执行的部分,没有执行的部分不会输出;再次加载直接从缓存中获取

S6模块对导出变量、方法、对象是动态引用,遇到模块加载命令import时不会去执行模块,只是生成一个指向被加载模块的引用,需要开发者保证真正取值时能够取到值,只要引用是存在的,代码就能执行

你可能感兴趣的:(前端)