读《Node.js项目实践:构建可扩展的Web应用》 ——引编程慢慢变成系统化的“砌砖活”
读《Node.js项目实践:构建可扩展的Web应用》
——引编程慢慢变成系统化的“砌砖活”
眼里的Node.JS
初初接触node是一年前的事,那时候年少不更事。还在纠结什么语言可以编写出牛逼的程序,想必每个码农都会经历这个月经性的问题:微信用什么语言写的?facebook为什么推荐系统这么智能,用什么语言写的?dota2的外挂这么牛逼,用什么语言写的?……用什么语言写这句话,困扰人也是阻碍人!当然我也时不时来这个月经性的问题,早在大学的时候,ruby刚在国外火火的,我还在宿舍敲着自己的asp代码,那一年我也受到D语言,Perl等等新型的解释型的语言影响,开始觉得虚拟机这么强大,是不是要去过渡呢?反复反复这些问题,让我望而却步,没有专注什么语言的学习,更别用说什么库了。直到PHP那一年,我沉下心来,因为当时戴志康的dizcus!系统活了,phpwind火了,很多单枪匹马的码农闯出了一片天空。这是很多八零后的偶像,PHP语言在中国扎根七八年了,这让很多vps和虚拟空间都是支持lamp的架构,这让php更加根深蒂固着。的确在开发效率上,各种库的配合下,在猪八戒做威客基本可以所向披靡的抢到任务,而且顺利完成之。这日益发展的电商网站,社交软件,很多需求对于php,java都不能好好的解决的时候,方法就是烧钱、请大牛、加服务器、各种头痛医头,脚痛医脚的方法。
对建站,对服务端的编程变得太零散,而且消耗大量人力物力。尤其大型网站根本没有办法做到像Facebook重写虚拟机,重写代码,创造前端框架,交互框架。怎么办呢?这多谢一般国外的极客,nodejs应运而生。重要的是,node借助Google的V8发展得势不可挡,在编程语法上,node不需要你忘记一切,而是让更多前端开发人员可以兼顾服务器端的开发,这不单是语法上零基础,更多是编程思想上的一次解放,处理高并发场景性能更高。在我其中一个项目里在用 socket.io 之前,推送服务是用 ajax polling 做的。我用 Tornado 和 Node.js 做过两个版本的推送服务。在当时的测试环境下,Node.js 的 CPU 时间是 Tornado 的三分之一,内存使用是 Tornado 的一半,代码行数只有 Tornado 的三分之一。后来我们使用了 socket.io,CPU 开销进一步降低。另外,函数式编程非常适合写异步回调链,用 Node.js 配合 CoffeeScript 写异步操作链非常便利,相比之下 Tornado 无论是写命名函数的回调,还是 yield 一个 Task 都没那么自然。
谈谈你对这本书试读章节的看法
之前看过nodejs实践,那书很多东西基本可以在网上找到,而且很少涉及深层的东西。让我还是宁愿泡泡论坛,看看一些实践和项目代码。刚看了《 Node.js项目实践:构建可扩展的Web应用》 的目录层次,和试读内容。更多偏向细节上的讲解,当然这也是很多论坛提问积累下来的知识,慢慢汇编成书介绍给大家。在第六章位置,很大篇幅说到授权的问题,这是每种语言在讲解时欠缺的地方,这本书很好的介绍了很多授权上的方法,有效让小白弄明白怎么操作才能进去sina或者腾讯一些open平台里遍历想要的资料。总体感觉这本书更多是这几年来,nodejs中读者和论坛上总结和分享的结晶。在研读之下,更有效了解日后nodejs和io.js分分合合后应该选择哪个适配自己的项目。