Node.js 入门 笔记
2018-01-27 15:02
696 查看
模块(Module)和包(Package)是Node.js 最重要的支柱。开发一个具有一定规模的程序不可能只用一个文件,通常需要把各个功能拆分、封装,然后组合一起,模块正是为了实现这种方式而诞生。Node.js 的模块和包机制的实现参照了CommonJS的标准,但并未完全遵循。
require 不会重复加载模块,也就是无论调用多少次require,获得的模块都是同一个,最终的输出由后者决定的。
注:exports 本身仅仅是一个普通的空对象,即{ },它专门用来声明接口,本质上是通过它为模块闭包的内部建立了一个有限的访问接口。因此它没有任何特殊的地方,所以可替代。不可以通过对exports 直接赋值代替对module.exports 赋值。exports 实际上是一个和module.exports 指向同一个对象的变量,它本身会在模块结束后释放,但module 不会,因此module.exports 来访问接口
Node.js 的包是一个目录,严格符合CommonJS 规范的包应该具备一下特征:
package.json 必须在包的顶层目录下;
二进制文件应该在bin 目录下;
JavaScript 代码应该在lib 目录下;
文档应该在doc 目录下;
单元测试应该在test 目录下;
package.json 是CommonJS 规定的用来描述包的文件,完全符合规范的package.json 文件应该包含有一下字段。
name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格。
description:包的简要说明。
version:符合语义化版本识别规范的版本字符串。
keywords:关键字数组,通常用于搜索。
maintainers:维护者数组,每个元素要包含name、email(可选)、web(可选)字段。
contributors:贡献则数组,格式与maintainers 相同。包含作者应该是贡献数组的第一个元素。
bugs:提交bug 的地址,可以是地址或者电子邮件地址。
licenses:许可证数组,每个元素要包含type(许可证的名称)和url(链接到许可证文本的地址)字段。
repositories:仓库托管地址数组,每个元素都包含type(仓库的类型,如git)、url(仓库的地址)和path(相对于仓库的路径,可选)字段。
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
终端通过 node –debug-brk=5858 debug.js
打开另一个终端 $node-inspector
什么是模块
模块是Node.js 应用程序的基本组成部分,文件和模块一一对应的。即一个Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON或者编程过的C/C++扩展。创建及加载模块
Node.js 提供了exports 和require 两个对象,其中exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即获取模块的exports 对象。require 不会重复加载模块,也就是无论调用多少次require,获得的模块都是同一个,最终的输出由后者决定的。
注:exports 本身仅仅是一个普通的空对象,即{ },它专门用来声明接口,本质上是通过它为模块闭包的内部建立了一个有限的访问接口。因此它没有任何特殊的地方,所以可替代。不可以通过对exports 直接赋值代替对module.exports 赋值。exports 实际上是一个和module.exports 指向同一个对象的变量,它本身会在模块结束后释放,但module 不会,因此module.exports 来访问接口
创建包
包是在模块基础上更进一步的抽象,类似于函数库、类库。将某个独立的功能封装起来,用于发布、更新、依赖管理和版本控制。Node.js 的包是一个目录,严格符合CommonJS 规范的包应该具备一下特征:
package.json 必须在包的顶层目录下;
二进制文件应该在bin 目录下;
JavaScript 代码应该在lib 目录下;
文档应该在doc 目录下;
单元测试应该在test 目录下;
package.json 是CommonJS 规定的用来描述包的文件,完全符合规范的package.json 文件应该包含有一下字段。
name:包的名称,必须是唯一的,由小写英文字母、数字和下划线组成,不能包含空格。
description:包的简要说明。
version:符合语义化版本识别规范的版本字符串。
keywords:关键字数组,通常用于搜索。
maintainers:维护者数组,每个元素要包含name、email(可选)、web(可选)字段。
contributors:贡献则数组,格式与maintainers 相同。包含作者应该是贡献数组的第一个元素。
bugs:提交bug 的地址,可以是地址或者电子邮件地址。
licenses:许可证数组,每个元素要包含type(许可证的名称)和url(链接到许可证文本的地址)字段。
repositories:仓库托管地址数组,每个元素都包含type(仓库的类型,如git)、url(仓库的地址)和path(相对于仓库的路径,可选)字段。
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
使用node-inspector 调试Node.js
使用npm install -g node-inspector 安装 node-inspector终端通过 node –debug-brk=5858 debug.js
打开另一个终端 $node-inspector
相关文章推荐
- Node.js学习笔记之一:入门
- node.js 入门笔记
- 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记
- Node.js 入门笔记(5) - child_process
- Node.js入门学习笔记(一)
- 创业笔记-Node.js入门之JavaScript与Node.js
- node.js学习笔记(3)_极客学院_服务器入门
- 创业笔记-Node.js入门之一个完整的基于Node.js的web应用
- Node.js 入门笔记(6) - mysql
- Node.js 入门笔记(4) - session
- 创业笔记-Node.js入门之基于事件驱动的回调
- Node.js入门笔记(1):基本概念
- Node.js入门笔记
- Node.js入门学习笔记-IDE选择/配置之WebStorm(windows)
- Node.js 入门笔记(2) - swig模板
- Node.js入门笔记(2):全局对象(1)
- Node.js入门学习笔记(三)
- 创业笔记-Node.js入门之阻塞与非阻塞
- Node.js入门笔记(3):全局对象(2)
- Node.js入门学习笔记-IDE选择/配置之WebStorm(windows)