开发者学堂课程【Node.js 入门与实战:CommonJS规范介绍】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/588/detail/8298
CommonJS规范介绍
目录:
一、CommonJS规范介绍
二、补充ComonJS规范
三、关于node.js中Module详细介绍
四、ComonJS模块的合同
一、CommonJS规范介绍
1. JS规范了有哪些数据类型
2. 在JS中可以有数组、字符串等
3. 数组有哪些API,每个API有哪些参数
4. 规范了字符串有那些方法
5. 如何声明变量
6. 如何写循环
7. 核心模块都保存在lib目录下
8. 试图加载一个和核心模块 同名的 自定义模块(第三方模块)是不会成功的
9. +自定义模块要么名字不要与核心模块同名
10. +要么使用路径的方式加载
11. 9.核心模块只能通过模块名称来加载(错误示例: require('./http');这样是无法加载核心模块http的)
4.require() 加载模块使用./相对路径时,相对路径是相对当前模块,不受执行node命令的路径影响
10.建议加载文件模块的时候始终添加文件后缀名,不要省略。
二、补充ComonJS规范
官方JS只规范了最基本的能力,当用JS写一个庞大的项目模块话开发的时候,便需要学习ComonJS规范来分模块、模块化开发、不同文件间如何通信,提供了更丰富的API。
1.[CommonJS 规范](http://www.commonjs.org/)
2.[模块的定义]
(http://www.commonjs.org/specs/modules/1.0/)
3.总结:CommonJS是为JavaScript语言制定的种模块规范、编程API规范
示例规范:
ComonJS规范中需要Rquire函数加载其他函数
(1)node.js.遵循了CommonJS规范
(2)在一个模块中,有一个自由变量“require”,这是一个函数
(3)在一个模块中,有一个名为“exports”的自由变量,这个模块可以在执行时添加其API。
(4)模块必须使用“exports”对象作为唯一的导出方式。
三、关于node.js中Module详细介绍
[Module](https://nodejs.org/dist/latest-v6.x/docs/api/modules.html)
四、ComonJS模块的合同
模块上下文
1.在一个模块中,有一个自由变量"require",这是一个函数。
"require"功能接受模块标识符。
"require"返回外部楼块的导出API。
如果存在依赖关系周期,则外部模块可能没有在其传递依赖关系之一需要时完成执行;在这种情况下,"require"返回的对象必须至少包含外部模块在调用之前准备的导出,以导致当前模块的执行。
如果请求的模块无法返回,则"require"必须引发错误。
2.在一个模块中,有一个名为"exports"的自由变量,这个模块可以在执行时添加其API。
3.模块必须使用"exports"对象作为唯的导出方式。
模块标识符
1.模块标识符是由正斜杠分隔的“术语”字符串。
2.术语必须是camelCase标识符,"。"或".."。
3.模块标识符可能没有类似".js"的文件扩展名。
4.模块标识符可以是“相对或顶级"。如果第一项是“”,则模块标识符为"相对”。要么”..”。
顶级标识符从概念模块名称空间根目录中解析出来。
6.相对标识符相对于其中写入和调用require”的模块的标识符来解析。
本说明书未指明以下重要互操作点:
1.模块是否与数据库,文件系统或工厂功能起存储,或与链接库可互换。
2.模块加载程序是否支持PATH来解析模块标识符。