在线试读
1 Node简介
Node应该是如今*火热的技术了,从本章开始,我们将逐步揭示它的诸多细节。
1.1 Node的诞生历程
NodelJ,3诞生历程如下所示。
2009年3月,RyanDahl在其博客上宣布准备基于V8创建一个轻量级的Web务器并提供一套库。
2009年5月,RyanDalai在GitHub上发布了*初的版本。
2009年12月和2010年4月,两届JSConfJ(会都安排了Node的讲座。
2010年年底,Node获得硅谷云计算服务商Joyent公司的资助,其创始人Joyent公司全职负责Node的发展。
2011年7月,Node在微软的支持下发布了其Windows版本。
2011年1lYl,Node超越RubyonRails,成为GitHub上关注度*高的项目(随后被Bootstrap项目超越,目前仍居*二)。
2012年1月底,RyanDahl在~Node架构设计满意的情况下,将*门人的身份转交给IsaacZ.Schlueter,自己转向一些研究项目。IsaacZSchlueter是Node的包管理器NPM的作者,之后Node的版本发布和bug修复等工作由他接手。截到笔者执笔之曰(2013年7月13日),发布的Node稳定版为v0.10.13,非稳定版为v0.11.4,NPM的官方模块数达到34943个,模块的周下载量为1479万次。
随后,Node的发布计划主要集中在性能提升上,在v0.14之后,正式发布vI.O版本。
1.2 Node的命名与起源
在Node的官方网站之外,N0dc具有很多别称:Nodejs、NodeJS、Node.is等。本书在写作过程中遵循官方的说法,将会一直使用Node这个名字,但是在当前语境之外,为了与其余表示节点的技术或名词相区别,均可以带上is表明它是Node。在听到这些词汇时,应该意识到,它们说的是一码事。除了本书的封面和此处会用到N0dejs外,其余地方都会以Node作为正式称谓。
Node名字的来由,其实跟它的起源是有密切关系的。
1.2.1 为什么是JavaScript
RvanDahl是一名*深的C/C++程序员,在创造出N0de之前,他的主要工作都是围绕高性能we服务器进行的。经历过一些尝试和失败之后,他找到了设计高性能,WebH~务器的几个要点:事件驱动、非阻塞I/O。
所以RvanDahl*初的目标是写一个基于事件驱动、非阻塞I/O的Web服务器,以达到更高的性能,提供Apache等服务器之外的选择。他提到,大多数人不设计一种更简单和更有效率的程序的主要原因是他们用到了阻塞I/O的库。写作Node的时候,RyanDahl~评估过C、Lua、Haskell、Ruby等语言作为备选实现,结论为:C的开发门槛高,可以预见不会有太多的*发者能将它用于日常的业务开发,所以舍弃它;RyanDahl觉得自己还不足够玩转Haskell,所以舍弃它;Lua自身已经含有很多阻塞I/0库,为其构建非阻塞I/O库也不能改变人们继续使用阻塞I/0库的习惯,所以也舍弃它;而Ruby的虚拟机由于性能不好而落选。
相比之下,JavaSCriptt:gC的开发门槛要低,比Lua的历史包袱要少。尽管服务器端JavaScript存在已经很多年了,但是后端部分一直没有市场,可以说历史包袱为零,为其导人非阻塞I/0库没有额外阻力。另外,JavaScript4览器中有广泛的事件驱动方面的应用,暗合RyanDahl喜好基于事件驱动的需求。当时,*二次浏览器大战也渐渐分出高下,Chrome浏览器的JavaSCript引擎V8摘得性能*一的桂冠,而EL其基于新BSD许可证发布,自然受到RyanDahl的欢迎。考虑到高性能、符合事件驱动、没有历史包袱这3个主要原因.JavaScript成N(Node~J实现语言。
1.2.2 为什么叫Node
起初,RyanDahl称他的项目为web.js,就是一个We服务器,但是项目的发展超过了他*初单纯开发一个Web服务器的想法,变成了构建网络应用的一个基础框架,这样可以在它的基础上构建更多的东西,诸如服务器、客户端、命令行工具等。Node为一个强制不共享任何资源的单线程、单进程系统,包含十分适宜网络的库,为构建大型分布式应用程序提供基础设施,其目标也是成为一个构建快速、可伸缩的网络应用平台。它自身非常简单,通过通信协议来组织许多N0de,非常容易通过扩展来达成构建大型网络应用的目的。每一个Node进程都构成这个网络应用中的一个节点,这是它名字所含意义的真谛
……
查看全部
内容介绍
《深入浅出Node.js》从不同的视角介绍了Node内在的特点和结构。由首章Node介绍为索引,涉及Node的各个方面,主要内容包含模块机制的揭示、异步I/O实现原理的展现、异步编程的探讨、内存控制的介绍、二进制数据Buffer的细节、Node中的网络编程基础、Node中的Web开发、进程间的消息传递、Node测试以及通过Node构建产品需要的注意事项。最后的附录介绍了Node的安装、调试、编码规范和NPM仓库等事宜。 《深入浅出Node.js》适合想深入了解Node的人员阅读。
朴灵,真名田永强,文艺型码农,就职于阿里巴巴数据平台,资深工程师,Node.js布道者,写了多篇文章介绍Node.js的细节。活跃于CNode社区,是线下会议NodeParty的组织者和JSConf China(沪JS和京JS)的组织者之一。热爱开源,多个Node.js模块的作者。个人GitHub地址:http://github.com/JacksonTian。叩首问路,码梦为生。
发货方式
自动:在特色服务中标有自动发货的商品,拍下后,源码类 软件类 商品会在订单详情页显示来自卖家的商品下载链接,点卡类 商品会在订单详情直接显示卡号密码。
手动:未标有自动发货的的商品,付款后,商品卖家会收到平台的手机短信、邮件提醒,卖家会尽快为您发货,如卖家长时间未发货,买家也可通过订单上的QQ或电话主动联系卖家。
退款说明
1、源码类:商品详情(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、功能不能正常使用等)!有演示站时,与实际源码不一致的(但描述中有"不保证完全一样、可能有少许偏差"类似显著公告的除外);
2、营销推广类:未达到卖家描述标准的;
3、点卡软件类:所售点卡软件无法使用的;
3、发货:手动发货商品,在卖家未发货前就申请了退款的;
4、服务:卖家不提供承诺的售后服务的;(双方提前有商定和描述中有显著声明的除外)
5、其他:如商品或服务有质量方面的硬性常规问题的。未符合详情及卖家承诺的。
注:符合上述任一情况的,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法修改描述!
注意事项
1、在付款前,双方在QQ上所商定的内容,也是纠纷评判依据(商定与商品描述冲突时,以商定为准);
2、源码商品,同时有网站演示与商品详情图片演示,且网站演示与商品详情图片演示不一致的,默认按商品详情图片演示作为纠纷评判依据(卖家有特别声明或有额外商定的除外);
3、点卡软件商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
4、营销推广商品,默认按商品详情作为纠纷评判依据(特别声明或有商定除外);
5、在有"正当退款原因和依据"的前提下,写有"一旦售出,概不支持退款"等类似的声明,视为无效声明;
6、虽然交易产生纠纷的几率很小,卖家也肯定会给买家最完善的服务!但请买卖双方尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于送码网快速介入处理。
送码声明
1、送码网作为第三方中介平台,依据双方交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;
2、非平台线上交易的项目,出现任何后果均与送码网无关;无论卖家以何理由要求线下交易的(如:要求买家支付宝转账付款的,微信转账付款的等),请联系管理举报,本平台将清退卖家处理。
正版 steam 原子之心 Atomic Heart 国区激活码 cd...
steam 英雄连3 国区激活码CDKEY PC游戏正版 Compan...
M,日朋礼送男友老公创意实人用星人际机器蓝牙音箱走心情节生礼...
zippo之宝官方正品打火机古银双面贴章机器人煤油机送男友礼物女...
秋季圆领卫衣套头男友风秋天长袖时尚潮流印花卡通机器派大星上衣...
机器猫情侣衬衫小叮当落肩短袖衬衣男友外套大码潮流套装上衣薄款...
PDPAOLA小机器人情侣手链女男生日礼物520送男友男士款闺蜜Rob...
兼容乐高复仇者联盟4战争机器积木人仔钢铁侠救援机甲玩具WM723...
兼容乐高复联4钢铁侠X0252灭霸MK50 MK1战争机器拼装积木人仔...
XBOX ONE SERIES X|S 中文 战争机器4与光环5守护...
Steam 英雄传说闪之轨迹2 The Legend of Heroe...
steam 全面战争罗马重置版 Total War ROME REMA...
PC中文正版steam 坚守国家战争 Holdfast: Nation...
steam 三国志14 威力加强版套装 国区激活码CDKEY PC游戏...
鹅鸭杀兑换码金币充值港湾鹅鸭杀扭蛋机代币激活码cdkey皮肤礼包goo...
PC中文正版 steam游戏 The Evil Within 2 恶灵...
电机定子拔铜机废旧转子拆铜线机马达全自动拆解机器工具设备...
C51单片机开发板+智能小车 二合一免焊接编程机器人套件...
UTEE魔兽世界T恤游戏电影周边潮牌WOW部落联盟纯棉黑色圆领短袖...
汽车维修视频教程电路诊断解码新能源机修师变速箱发动机资料大全...