我的朋友和我说 单纯的这么去看文档是没有效果的 你需要先有需求 再去看文档 这样才能真正的一步步学会Node 我觉得他说的很对 但是每个人的学习方法都会有些许不一样 我想按照我自己的思路走下去
Event
事件是整个Nodejs的基础,所以我们一定要去理解这个模块
Class: events.EventEmitter
这么一个核心模块说起来也不难 总的来说的一下几点
- 可以为特定事件添加监听(永久监听或者只监听一次)
- 可以删除事件监听
- 可以发射事件
比较进阶的用法就是自己创建类继承这个类实现事件的功能
HTTP
非常核心的一个类 能够创建服务器 和客户端
Class: http.Server
是由http.createServer([requestListener])
创建 其中requestListener是一个function 直接响应 request事件
是EventEmitter的子类
它拥有一系列的事件可以去监听 比如 request connection ....
你需要使用 listen来开启这个服务器
你当然也可以关闭它, 也可以设置每一个socket链接超时时间
Class: http.ServerResponse
它是由server创建的 是request事件的第二个参数,而且实现了 Writable Stream 接口
这里需要注意的一点就是可以使用writeHead来添加header,但是这个方法只能使用一次,而且只要使用了这个方法,其他的便利设置header的方法都会失效
response.write()可以被多次调用 但是第二次以及之后的调用不会发送header而且数据会变成数据流传输,调用end()结束回复
http.request(options[, callback])
我们可以通过这个方法去作为客户端进行http通信
Class: Class: http.ClientRequest
这个和response有些相似 实现了 Writable Stream 接口 值得注意的是 这个是通过 http.request()创建的 请求 ,而 作为客户端请求得到的response 还有 作为服务器得到的 req 其实他们都是 http.IncomingMessage 对象 而不是这个 http.ClientRequest
Query String
这个类其实是处理对象序列化的问题 主要应用在url解析上面
通过 querystring.stringify(obj[, sep][, eq][, options]) ``querystring.parse(str[, sep][, eq][, options])
序列化和反序列化对象
当然,可以选择重写默认的分隔符('&'
) 和分配符 ('=')。
URL
这是一个专门生成和解析URL的模块,和Query string结合能够更好地工作
Utilities
这是一个实用工具类
首先这个类提供了多个输出方法
inspect() 这个方法可以输出对象 你可以设置一些参数
还是拥有一些类判断对象类型的方法
这个类里面最有用的的方法就是 util.inherits(constructor, superConstructor)
这个方法能帮助我们简单的实现类的继承
Globals
这个模块记录了一些全局对象,在使用这些的事后不需要require
__filename和__dirname是会经常实用的
setTimeout(cb, ms),clearTimeout(t),setInterval(cb, ms),clearInterval(t)这是一系列的延迟执行的方法