Node.js是我第一次接触后端开发,有些思想需要提炼出共性,以扩展到不同的语言,如Java与Python,甚至Go语言。这里只是基础介绍,后续会有Node.js进阶与框架Express实践,之后会学习其他语言的开发技术与框架(初步计划是成熟的Java框架,出名的Python,最新的Go都看一下),提炼一些重要的特点。

知识图谱

安装

特点

约定

NPM

Node.js包管理工具,统一管理包的依赖与版本,配置文件是package.json。一般各种语言都会有类似工具,如python的pip,javascript前端的bower,java的maven(还有gradle,ant主要是编译,没有依赖管理)。

npm 与bower区别:NPM主要运用于Node.js项目的内部依赖包管理,安装的模块位于项目根目录下的node_modules文件夹内。而Bower大部分情况下用于前端开发,对于CSS/JS/模板等内容进行依赖管理,依赖的下载目录结构可以自定义。npm设计之初就采用了的是嵌套的依赖关系树,这种方式显然对前端不友好;而Bower则采用扁平的依赖关系管理方式,使用上更符合前端开发的使用习惯。

基本知识

模块Module

核心模块

内置在node中的代码,会优先加载。源码都在Node的lib子目录中。为了提高运行速度,它们安装时都会被编译成二进制文件。

http

path && url

fs

child_process

crypto

提供通用的加密和哈希算法

util

其他模块

重要概念

Buffer对象

Buffer对象是Node处理二进制数据的一个接口。它是Node原生提供的全局对象,可以直接使用,不需要require('buffer')。fs模块有涉及。

Event模块

Node对“发布/订阅”模式(publish/subscribe)的实现。一个对象通过这个模块,向另一个对象传递消息。

流-Stream接口

异常处理