一:JS模块规范(为了将js文件像java类一样被import和使用而定义为模块, 组织js文件,实现良好的文件层次结构、调用结构)
A:CommonJS就是为JS的表现来制定规范,因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中。
CommonJS是主要为了JS在后端的表现制定的,他是不适合前端的!
这么理解:单独的JS文件中,需要用到另一个JS文件(当然了,将多个JS文件分开是为了提高代码的可读性、可维护性); 在html或动态页面文件中
我们可以<script src="..js"></script>来引入,但在.js文件中不支持或者是为了寻求更好的解决方案,我们定义一种模块机制! 来实现JS
文件或模块的引用! 使得JS的运行环境不再停留于html或动态视图页面(浏览器环境)
npm是模块管理器的子集?
B:AMD(异步模块定义)出现了,它就主要为前端JS的表现制定规范。
RequireJS就是实现了AMD规范的呢。
C: CMD(同步模块定义): seajs实现了CMD规范。
二:前端的模块管理器(package management)
1.文件依赖关系管理,模块的安装、升级和删除()
2.文件加载管理: 减少http请求(加载时机、加载方式)
工具: Bower
Browserify:让服务器端的CommonJS格式的模块可以运行在浏览器端(<script src=""></script>)。 模块——》 文件
Duo: 模块——》 文件 js、css