nodejs的总结

来源:互联网 发布:淘宝上下架规则 编辑:程序博客网 时间:2024/06/05 00:46
   

简介:
     Javascript之所以能在浏览器运行,是因为浏览器提供一个“上下文环境”,它定义了Javascript可以做什么事情。
     Nodejs,说白了,其实也是一个“上下文环境" , 这个上下文环境,允许在后端运行Javascript代码。
     Nodejs使用Google的V8虚拟机,来解析和执行Javascript代码。
     所以,nodejs = 运行时环境 + 库。

应用:
    nodejs可以写web(网站后台,网站前端),写服务(游戏后台,IM...),写工具(抢票,爬虫....)。还可以写更多的东西。

优点:
   1:单线程+非阻塞IO = 性能提升,代码简洁
        它通过事件轮询(event loop)来实现并行操作。由于是单线程,所以基本不用考虑多线程的问题,例如线程上下文切换,变量加锁解锁等等。
   2:强大的npm 设计 = 海量代码库
        Node.js 的包管理器 npm 设计得比 python 和 ruby 好很多。有很多的 module 开发者。
   3:精准控制每个细节 = 高性能,大并发
        nodejs是一个非常靠近底层的工具库(+ 环境)。Node.js 可以精细的控制 Request 和 Response 的时间和内容,websocket 似乎就是为 Node.js 而生的。(配合 http://socket.io 这库之后,在 realtime webapp 这个领域,Node.js 已经没有对手了。看淘宝对nodejs的重视度和使用量就知道了。)
   4:DIY空间很大。
        蛋疼无聊的时候,自己用nodejs写爬虫,写抢课工具,搞破坏(破解妹子的相册).......

使用经验小结:
   1:javascript语法是非常自由的,而且nodejs也支持用c/c++去写addon(nodejs的插件)。但是,由于js的性能。。。所以,如果你的需求业务非常复杂的话,不建议使用。如果你的需求是轻业务,重性能,那么可以考虑一下nodejs。

   2:很少的业务需求,高强度的密集计算。业务用js实现,计算用c++实现。但是,用c++写addon之前,会有一定的学习曲线。
     (备注:Java + C++/ PHP + C++ / Nodejs + C++ ,这三种做法,第一种更多的是大型架构的结合使用做法,第二种很多中小型项目都在使用,最后者就是我刚刚提到的,目前很少人用,但是性能测试确实不错,有一定的潜力。)

   3:写blog,写小型的网站,基本没什么学习曲线,前后端都是javascript,方便前端的同学接触后端,js一统天下?。

   4:nodejs的调试困难,编码不方便等等很多“缺点”,老早就不存在了。现在的nodejs对于线程的管理使用,也在发展的很不错。

总结:
   nodejs现在发展很快,非常出名(出名不代表很多人用)。BUT,nodejs在后端的世界怎么算,都只是一个很有潜力的小孩子,现在的地位和java,php的地位还是差距非常大。因为nodejs本来就不合适写复杂的业务,nodejs目前更多的合适去做工具之类的开发。除非nodejs在设计的方向上能做出更大的变革,否则也很难和java平分天下。当然,nodejs本来的诞生目的也不是做“大佬”。nodejs很像geek,追求自由发展。

上面说了一大堆废话,接下来,来一个简单的教程:http://blog.csdn.net/l402398703/article/details/9993785