日博官网

NLP工具屋,专注NLP教练技术8年,为您自学NLP,教练技术助力打气!

【node.js的优势】

  【宓俊的回答(151票)】:

  我用

  Node.js 开发了 Am I Hacked,算是有一点用 Node.js 支持大流量的经验。先列一些数字

  以我的了解,Python 和 Ruby 上的非 Event Driven 的 Framework 根本不可能达到这样的性能。

  然后说说 Node.js 的其他优点

  当然也有一些缺点

  有没有大公司使用?

  【赵东炜的回答(16票)】:

  我们正在用 node.js 开发系统。系统架构和肉饼同学描述的一模一样:

  前端 javascript / app+JSONAPI+node后端。

  到目前为止的感觉是:

  好的部分

  1,统一语言。整个 team 里除了我,都是刚毕业(当然有个学习曲线了,但过了就好了),现在所有人前后端通吃,有问题谁都能从前端一直追到数据库。

  2,统一模型。如果你已经习惯异步和回调,那么配合 redis/mq 之类的设施,思考起来会很一致。

  3,社区活跃。各种包,几乎所有能想得到的需求,都有人做了包出来 npm 一装就好。

  不好的部分

  1,有的包成熟度不高,有时需要 debug 包的内部问题,已经碰到好几回,好在都是开源的,虽说费点劲,但大多都能解决。

  2,容易写出糟糕的代码,callback 的执行流程有时并不是很符合直觉,需要定期 review 和重构来加以避免。

  另外,澄清一下

  单线程,tcp,这些是常规误解,在 node 0.8 以上版本已经都不是问题。此外,我个人并不认为 node 不适合做 web 开发,虽然现在架构的趋势是比较偏向于 thin json api,但 express 框架确实也能很好地(而且很漂亮)解决上述诸如:路由、缓存、中间件、cookie、session、template 之类的 web 典型问题。

  至于是否面向对象,我觉得和代码的组织没有关系。node 提供了完备的 pacakge 机制。代码组织不是问题。

  【CatChen的回答(24票)】:

  Node.js 的优势是「高并发」,所以很适合用来做 IO 调度,但不太适合用来做复杂计算。

  Yahoo 在使用 Node.js,并且已经有了自己的 Node.js 云服务,使用起来类似于 Heroku 或 Google AppEngine——上传应用的源代码,云端自动处理好依赖关系,然后分配适当的资源来运行。Yahoo 使用的方式也很明确,后端真正复杂的逻辑不会用 Node.js 来写,而是 C++ 写好的 JSON API 接口。当来自 Internet 的请求来到 Node.js 时,Node.js 处理部分业务逻辑,但不做复杂计算,将业务逻辑分解为后端 JSON API 调用能解决的问题,然后发起调用。Node.js

  的优势在于这些 JSON API 调用都是异步的,等待返回期间不占用任何资源,所以 Node.js 作为前端服务器能够承载更高的并发度。