Node.js学习小结
学习node.js,需要一些计算机网络预备知识:
1.HTML、CSS、JavaScript
2.TCP/IP、HTTP协议、W3C
大概是以上这些,在学习的过程中有不会的可以随时去查资料。
学习网址:菜鸟教程
推荐一个Node.js学习网站:狼叔的GitHub
- Node.js简介
简单的说,Node.js 就是运行在服务端的、异步事件驱动的、基于谷歌Chrome V8 引擎的JavaScript。 - 安装Node.js
这里就不在赘述了,有兴趣的朋友可以去“菜鸟教程”的网站上看一下,里面教程很详细。接下来我重点说下我认为Node.js里比较重要的,学起来感触比较深的一些内容。 - Node.js 回调函数
Node.js 异步编程的直接体现就是回调。
异步是啥?
来源于百度百科:计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。
简单的说,
同步:同步就是你要做的事你列了一个清单,按照清单上的顺序一个一个执行
异步:就是可以同时干好几件事(因为有好多个线程,可以同时处理)
异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了。
回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数。
例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件内容作为回调函数的参数返回。这样在执行代码时就没有阻塞或等待文件 I/O 操作。这就大大提高了 Node.js 的性能,可以处理大量的并发请求。
回调函数一般作为函数的最后一个参数出现:
function foo1(name, age, callback) { }
function foo2(value, callback1, callback2) { }
再简单的说,回调函数回调函数,就是等其他函数执行完了,上面的foo1、foo2(一般是readFile等消耗时间较大的函数)才执行(所以才叫异步嘛,效率更高),才调用回调函数执行。
- Node.js 事件循环、EventEmitter
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序
var connectHandler = function connected() {
console.log('连接成功。');
// 触发 data_received 事件
eventEmitter.emit('data_received');
}
// 绑定 connection 事件处理程序
eventEmitter.on('connection', connectHandler);
// 使用匿名函数绑定 data_received 事件
eventEmitter.on('data_received', function(){
console.log('数据接收成功。');
});
// 触发 connection 事件
eventEmitter.emit('connection');
console.log("程序执行完毕。");
这里的关键点在于两个,一个绑定事件on、一个发射事件emit。理解了这两个,就算基本理解了Node.js里的事件。
- Node.js流(Stream)
Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。
Node.js,Stream 有四种流类型:
Readable - 可读操作。
Writable - 可写操作。
Duplex - 可读可写操作.
Transform - 操作被写入数据,然后读出结果。
所有的 Stream 对象都是 EventEmitter 的实例。常用的事件有:
data - 当有数据可读时触发。
end - 没有更多的数据可读时触发。
error - 在接收和写入过程中发生错误时触发。
finish - 所有数据已被写入到底层系统时触发。
- Node.js函数
Node.js 中函数的使用与 JavaScript 类似,举例来说,你可以这样做:
function say(word) {
console.log(word);
}
function execute(someFunction, value) {
someFunction(value);
}
execute(say, "Hello");
- GET/POST请求
-
GET请求直接被嵌入在完整的URL路径中,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数。
-
POST 请求的内容全部的都在请求体中。恶意的POST请求会大大消耗服务器的资源,所以 node.js 默认是不会解析请求体的,当你需要的时候,需要手动解析请求体。
- Web模块
- Express 框架
以上的这些内容几乎都是参考菜鸟教程(www.runoob.com)的 ,博主目前的水平有限,就先写到这边了,想了解更详细的内容的小伙伴可以进一步访问网站学习哦。