不同模块的区别
模块名 | 特点 | 环境 | 应用 |
---|---|---|---|
CommonJS | 1)模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就会缓存,以后再加载,直接读取缓存结果。要想让模块再次运行,必须清除缓存。2)模块加载时会阻塞接下来的代码的执行,需要等到模块加载完成时才能继续执行——同步加载。 | 服务器 | Node.js的模块是参照CommonJS实现的 |
AMD | 1)异步加载 2)管理模块之间的依赖性,便于代码的编写与维护 | 浏览器 | requireJS是参照AMD规范实现的 |
UMD | 兼容AMD和CommonJS规范的同时,还兼容全局引入的方式 | 浏览器或服务器 | 无 |
ES Module | 1)按需加载(编译时加载)2)import和export只能在模块的顶层,不能在代码块之中(如if语句中),import()语句可以在代码块中实现异步动态按需动态加载 | 浏览器或Node后端服务器 | ES6最新语法支持规范 |