你认为 nodejs 有哪些比较重要的知识点?


你认为 nodejs 有哪些比较重要的知识点?

node.js web前端开发 JavaScript

guoquan 9 years, 8 months ago

语法方面要理解异步的原理和编程注意事项,此外要学会使用一些常见的第三方库express、request、mongoskin之类的。

dousky answered 9 years, 8 months ago

1 首先了解它的机制 事件循环
2 了解一些新语法 es6
3 关注好用的框架 KOA Express之类 学习他们
4 既然Node了 还是关注下MongoDB把

TYPE90 answered 9 years, 8 months ago

我认为nodejs应该切成两个部门,一个是JS,还有一个是node api。
语言层面上的JS,是非常重要,理解原型链、词法作用域(闭包)、Object/Array/Function内置方法,都是必须的,不能跳过。

还有简化callback的promise,ES6带来的生成器yield等都是语言相关的,应当熟悉。

node这边,我认为有以下几点比较重要:
1.HTTP网络请求的request和response,在node demo上的第一个演示就是一个http输出hello world,所以可以看出node.js的重心就在于web服务端,特别是在于HTTP,这也是req和res这两个概念为什么这么重要的原因。

2.buffer,node.js因为天生异步的关系,对IO比较友好,buffer这个东西,实际上是为了数据流服务的,在很多IO里都会把数据用buffer来表示,要知道用Buffer.concat(bufferArr)来组装buffer,而不是用加号,要懂得buffer的编码规则,toString的几种形式。

这里还牵涉到编码问题,理论上拿到buffer过后,可以用任何文字编码来解析,在做采集的时候这个概念比较重要。

3.事件循环,要理解node.js的异步,需要对事件循环有所了解,对node实现的timer函数、fs里事件调度应该有所认识,这里面如果有时间也可以追到libuv那边去,它是对操作系统IO异步的封装。

4.stream,既然是IO,必然少不了流这个概念,这个在所有IO里都有的,要对几种类型的stream都有了解,知道流的内部是怎么完成push操作的,比如说.data()这种接收活动流的,也可以停了它然后自己read()。

还有对pipe应有认知,别pipe过后就不管了,它也是异步的。

5.cluster,对于多进程的相关知识应当有了解,知道cluster是Child Processes和net的相结合,知道如何在进程间相互通讯,如何保持状态的同步。

6.UDP/TLS/SSL,这些更偏重网络那边,如果要架设https的话,必须要把相关的内容掌握,node带的api已经很多,一般来说足够使用。

剩下还有一些比如说vm模块(用于沙盒执行代码),os模块(获取当前执行机器的基本信息),path、dns等等,在用到的时候都需要掌握。。

第三方那边也有很多东西要会用,比如渲染模板、ORM以及包装好的工具模块,像async这种用于串并联异步任务的第三方,都应了解。

Jud.ah answered 9 years, 8 months ago

Event Loop

有一只胖达 answered 9 years, 8 months ago

Your Answer