第一章:基础知识
1、IO调用的结果是怎么返回给调用的线程/进程?
答:在Linux下,大致的流程是IO的数据会先被内核空间读取,然后内容将数据复制给用户进程。还有一种零复制技术,大致是内核进程和用户进程共享一块内地址,这避免了内存的复制。
2.IO编程模型:
1、blocking I/O
2、non-blocking I/O
3、I/O multi
3、Node中的事件循环
第二章: 常用模块
1、流行两种模块规范
2、require运行机制
3、重复引用
4、require缓存策略
5、作用域问题:
6、buffer
Response中的一些方法:
1、setHeader():设置响应头
2、writeHead():设置响应头多个属性。
REPL 命令
ctrl + c - 退出当前终端。
ctrl + c 按下两次 - 退出 Node REPL。
ctrl + d - 退出 Node REPL.
向上/向下 键 - 查看输入的历史命令
tab 键 - 列出当前命令
.help - 列出使用命令
.break - 退出多行表达式
.clear - 退出多行表达式
.save filename - 保存当前的 Node REPL 会话到指定文件
.load filename - 载入当前 Node REPL 会话的文件内容。
node.js事件驱动:
1.、首先require(“events”)
2、接着创建eventEmitter对象。
3、可以使用eventEmitter对象的on方法来绑定事件,on方法第一个参数传递事件类型,可以是已定义事件例如:connect,click或者是自定义事件。第二个参数是触发的事件执行的操作,可以用匿名函数来创建。
4、怎么触发事件呢,用eventEmitter对象的emit方法触发事件,方法内传递被触发事件的名称。
EventEmitter类:
EventEmiter类的核心功能就是事件监听 和事件触发。分别是on方法和emit方法。
对于每个事件,EventEmitter 支持 若干个事件监听器。意思是每个事件可以被多个监听器触发。
Event的一些方法:
1、addListener((event, listener):为指定事件添加一个监听器在监听器列表的尾部。
2、on(event, listener):为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。
3、once(event, listener)
为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。
4、removeListener(event, listener):移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。它接受两个参数,第一个是事件名称,第二个是回调函数名称。
5、removeAllListeners([event]):移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
6、setMaxListeners(n):默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于提高监听器的默认限制的数量。
7、listeners(event)返回指定事件的监听器数组。
8、emit(event, [arg1], [arg2], […]):按监听器的顺序执行执行每个监听器,如果事件有注册监听返回 true,否则返回 false。