一 NodeJS简介
NodeJS优缺点总结:
优点:
1.以事件和异步为特点最成功的服务器解决方案
2.部署简单方便;命名注重约定(统一标准);项目所需的扩展,插件资源相对独立,不易冲突
3.事件驱动(根据系统当前出现的事件来调度资源)
4.异步编程(大部分语言都是同步执行,一个操作出问题会影响整个操作,有IO时必须等待其完成才能执行后面的操作,而js作为异步执行,当有IO时,不会光等它,会继续执行后面的操作,IO完成时,以事件来通知,进而执行其相关的操作;所以快!)
实现异步编程的方式:
a.回调函数(操作完成之后调用,高耦合,程序流程复杂,不易维护,一事件只能绑定一个函数)
b.事件监听(对事件进行监视,发生时进行某个操作,一个事件可以绑定多个函数,耦合度低,但程序流程会更复杂)
c.发布/订阅模式(维护一个专门的注册机构,所以特定的事件发生时都通知注册机构,需要监听某个事件只需要像注册机构订阅即可)
5.高效与性能
单个操作没有优势,但通过资源调配和对IO操作的优化实现高效(对比如php对IO处理是开多线程(浪费))
6.单线程与多线程
Node.js单进程
为更好利用cpu资源,可以利用子进程和多进程
子进程:child_process模块
多进程:pm2等第三方工具
缺点:
1.大量采用匿名函数,使得抛出的异常不易阅读(也是js的大缺点之一,所以给匿名函数命名是很好的习惯,但做的人不多)
2.try/catch限于同步代码,使得异常捕获较复杂(如果是异步代码,就需要在异步代码内部(使用错误标志参数)进行捕获)
3.单线程(最大的好处是不存在不同线程之间的资源调度),最大的缺点在于可靠性,错误如果没有捕获将无能为力(解决:1.写代码时周全考虑到错误,测试时尽量百分百覆盖,模拟所有常见的错误。 2避免使用同步代码 3使用多进程工具,当