Node.js 适合用来做 web 开发吗?

linkedin 服务器就是用node 写的, yahoo也是。 所以这个问题答案是很明显的。
真正的问题应该是, 用node 如何开发最好的web app?

适合。而且我觉得作为demo系统来说,node 是不错的选择。题主之所以有疑问主要是没有理解和利用好node。node有多种异步处理的机制,而这些异步机制处理错误的方法都不尽相同。但有一点可以肯定,虽然是单线程,但出现错误并不会直接导致应用死掉;如果导致了只是因为错误处理不当。建议在开发前好好看看所用模块的api和文档说明。




异步的思维是js的特点,也是node高并发性能优势的原因之一,你从传统的同步语言过来可能不习惯,但是像我们这种从前端写js过来的人就自然得像说话一样,关键还是适应。熟悉之后可以用async,Promise系 (q, bluebird) 或者 eventproxy 之类的库来改善代码嵌套的问题。

异常的问题 - Node 核心库的 API 抛异常大致有三种常见情况:
1. 异步回调。按惯例,接收的回调函数第一个参数都是可能出现的异常,没有特殊情况的话你应该把异常按照同样的参数位置一层层传下去,直到最顶层的回调里进行统一处理。
2. 同步版本的api会直接抛异常。所以如果确实无法避免抛错的可能,直接 try catch,要么就避免用同步版本。
3. Stream形态的API,必须在stream对象上添加 error 的侦听函数,不然异常会直接抛出。

如果出现导致进程中断的异常,说明你的代码有逻辑层面的问题(以上几点没有完全做好),你应该在开发的时候发现并处理这些异常,而不是让它们在部署环境中发生。

如果你实在避免不了问题发生,你可以用 Node 的 Domain API 来对整块代码的异常进行捕捉。
另外可以用进程管理工具比如 forever, pm2 或是 monit 监视应用进程,崩溃后自动重启。

最后回到你的问题,node是否适合做web开发 - node的独特优势是高并发,高实时性,或者单页富前端的web应用,比如实时聊天,游戏,另外node也是写JSON API的最好选择。

 

posted on 2017-04-30 01:08  如凤中奇缘  阅读(201)  评论(0编辑  收藏  举报