NodeJS 学习笔记

1. NodeJs的事件模型被称为非阻塞式IO或者事件驱动IO

2. Node.js 几乎每一个 API 都是支持回调函数的。

3. Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

4. Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。

5. 在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时触发回调函数。

6. 

JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。

7. 一个NodeJS文件就是一个模块。

8. NodeJS提供了exports和require两个对象。

9. 

有时候我们只是想把一个对象封装到模块中,格式如下:

module.exports = function() { // ... }

例如:

//hello.js 
function Hello() {     var name;     this.setName = function(thyName) {         name = thyName;     };     this.sayHello = function() {         console.log('Hello ' + name);     }; }; module.exports = Hello;

这样就可以直接获得这个对象了:

//main.js 
var Hello = require('./hello'); hello = new Hello(); hello.setName('BYVoid'); hello.sayHello();

10. 

由于 Node.js 中存在 4 类模块(原生模块和3种文件模块),尽管 require 方法极其简单,但是内部的加载却是十分复杂的,其加载优先级也各自不同。如下图所示:

11. 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global。

12. 常见的客户端存储有几种:第一种,Web存储,其中包含localStorage对象和sessionStorage对象;第二种,Cookie,其作为一种被服务端脚本使用的客户端存储机制。

13. NodeJS虽然是单线程的,但是这里的单线程仅仅是JavaScript执行在单线程中罢了,其内部完成I/O任务的是线程池。

14. 异步I/O的实现主要包含两个阶段:提交请求和处理结果。这两个阶段中间有事件循环的调度,两者彼此不关联。

15. NodeJS在处理异常上形成了一种约定,将异常做为回调函数的第一个实参传回,如果为空值,则表明异步调用没有异常抛出。

async(function (err, results) {
// TODO
});

16. 异步编程的难点:

  • 异常处理
  • 函数嵌套过深
  • 阻塞代码
  • 多线程编程
  • 异步转同步

  

猜你喜欢

转载自www.cnblogs.com/zunzunQ/p/10112680.html