深入浅出Nodejs读书笔记

来源:互联网 发布:lol钻石知乎 编辑:程序博客网 时间:2024/05/09 05:09

http://tw93.github.io/2015-03-01/shen-ru-qian-chu-nodejs-reading-mind-map.html

今天终于把朴灵老师写的《深入浅出Node.js》给学习完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架、库的使用层面上,而是从不同的视角来揭示Node自己内在的特点和结构。建议有一定Node基础或者做过Node方面的小项目的同学阅读,看完以后你的思维会有很奇特的碰撞,我看的时候就常常会有这样的想法:“哦,原来这个功能是这样实现的哦”。下面这篇文章是我第二次阅读《深入浅出Node.js》的一些学习记录,并且通过百度脑图这个工具来画出思维导图,每天将自己的学习总结写在这篇文章下面。 

图片文字太小可以右键从新标签页打开图片,然后点击就可以放大显示。 新增原始文件脑图地址,这样大家就可以直接到脑图去看思维导图

Node简介

这一章简要介绍了Node,从中可以了解Node的发展历程及其带来的影响和价值。

为什么叫Node?起初,Ryan Dahl称他的项目为web.js,就是一个Web服务器,但是项目的发展超过了他当初单纯开发一个Web服务器的想法,变成构建网络应用的一个基本框架,这样可以在它的基础上构建更多的东西,诸如服务器、客户端、命令行工具等。Node发展为一个强制不共享任何资源的单线程、单进程系统,包括十分适宜网络的库,为构建大型分布式应用程序提供了基础设施,其目标也是成为一个构建快速、可伸缩的网络应用平台。它自身非常简单,通过通信协议来组织很多Node,非常容易通过扩展来达成构建大型网络应用的目的。每一个Node进程都构成这个网络应用中的一个节点,这是它名字所含意义的真谛。 脑图

Node简介

模块机制

这一章主要介绍Node的模块机制,从中了解到Node如何实现CommonJS模块和包规范的。在这一章中,我们详细的解释了模块在引用过程中的编译、加载规则。另外,我们还能读到更深度的关于Node自身源代码的组织架构。
CommonJS规范为JavaScript定制了一个美好的愿景—希望JavaScript能够在任何地方运行。脑图 Node模块机制

异步I/O

这一章展示了Node中我们将异步I/O作为主要设计理念的原因。另外,还会介绍到异步I/O的详细实现过程。 
事件循环是异步实现的核心,它与浏览器中的执行模型基本上保持一致。而向古老的Rhino,尽管是较早就能在服务器运行的JavaScript运行时但是执行模型并不像浏览器采用事件驱动,而是使用像其他语言一样采用同步I/O作为主要模型,这造成它在性能上面无法发挥。Node正是依靠构建了一套完善的高性能异步I/O框架,打破了JavaScript在服务器止步不前的局面。 脑图

Node异步I/O

异步编程

这一章主要介绍异步编程,其中最常见的异步编程问题介绍,也有详细的解决方案。在这一章中我们可以接触到Promise、事件、高阶函数是如何进行流程控制的。 (这一章建议多看书)脑图 
Node异步I/O

内存控制

这一章主要介绍了Node的内存控制,主要内容有垃圾回收、内存限制、查看内存、内存泄漏、大内存应用等细节。 
Node将JavaScript的主要应用场景帮到了服务器端,相应要考虑的细节也与浏览器端不同,在服务器端,资源向来是寸土寸金,要为海量用户服务,就使得一切资源都要高效循环利用,需要更严谨为每一份资源作出安排。脑图

Node内存控制

理解Buffer

这一章主要介绍了前端JavaScript里不能遇到的Buffer。由于Node中会涉及频繁的网络和磁盘I/O,处理字节流数据会是很常见的行为,这部分的场景与纯粹的前端开发完全不同。
体会过JavaScript友好字符串操作后,有些开发者可能会形成思维定势,将Buffer当作字符串来理解。但字符串与Buffer之间有实质性的差异,即Buffer是二进制数据,字符串与Buffer之间存在编码关系。因此,理解Buffer的诸多细节十分必要,对于如何高效处理二进制十分有用。脑图Node理解Buffer

网络编程

这一章介绍了Node支持的TCP,UDP,HTTP编程,还讲了有关于Websocket与TSL、HTTPS的介绍。
利用Node可以十分方便地搭建网络服务器,不需要专门的Web服务器作为容器,仅仅需要几行代码就可以构建服务器。Node提供了net、dgram、http、https这4个模块,分别用于处理TCP、UDP、HTTP、HTTPS,适用于服务端和客户端。脑图

Node网络编程

构建Web应用

这一章主要介绍了构建Web应用过程中用到的大多数技术细节,如数据处理、路由、MVC、模板、RESTful等。 我觉得这一章对于我么开发一个Nodejs方面的应用很有指导性作用,整理本章细节就可以完成一个功能的Web开发框架,这章的目的也就是希望读者学习过这一章后能够对Node开发带来地图式的启发,在开发Web应用时能够心有轮廓,明了细微。脑图

Node构建Web应用

玩转进程

这一章主要介绍Node的多进程技术,以及如何借助多进程方式来提升应用的可用性和性能。从严格意义上面来讲,Node并非真正的单线程架构,在第3章我们还叙述过Node自身还有一定的I/O线程存在,这些I/O线程由底层libuv处理,这部分线程对于JavaScript开发者是透明的,只在C++扩展开发时才会关注到。JavaScript代码永远运行在V8上,是单线程的。本章将围绕JavaScript部分展开,所以屏蔽底层细节的讨论。脑图 
Node玩转进程

测试

这一章主要介绍Node的单元测试和性能测试技巧。测试的意义在于,在用户消费产出的代码之前,开发者首先消费他,给予其重要的质量保证。 
测试包括单元测试、性能测试、安全测试和功能测试等几个方面,本章将从Node实践的角度来介绍单元测试和性能测试。脑图 
Node玩转进程

产品化

“行百里路半九十”,完成产品开发的代码编写后,才完成了项目的第一步。这是一章介绍了将Node产品化所需要的注意到的细节,如项目工程化、代码部署、日志、性能、监控报警、稳定性、异构共存。 对于Node开发者而言,很多其他语言走过的路需要开发者带着Node特效重新践行一遍。这并不是坏事,Node更接近底层使得开发者对于细节的可控性非常高。脑图Node玩转进程


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 iphone触屏不灵怎么办 平板进水屏幕失灵怎么办 小米平板屏幕失灵怎么办 手机内屏变脏怎么办? 苹果手机屏幕触摸不灵敏怎么办 苹果6触控坏了怎么办 手机触摸屏不好使怎么办 手机触摸屏不好用怎么办 平板触屏不准怎么办 小米手机锁屏键失灵怎么办 三星手机锁屏键失灵怎么办 魅族2屏幕失灵怎么办 屏幕触屏不行怎么办 手机触屏失控怎么办 手机触屏不灵怎么办 电脑触屏不灵敏怎么办 iphone屏坏了怎么办 荣耀手机充电慢怎么办 苹果电池胶拉断怎么办 iphone8耳机丢了怎么办 华为p10进水了怎么办 苹果手机屏幕老是闪怎么办 苹果充电没反应怎么办 6sp开胶了怎么办 夜场ic微信怎么办 手机壳影响信号怎么办 三星开机键失灵怎么办 手机待机键失灵怎么办 手机关机键失灵怎么办 华为开关键失灵怎么办 iphone6plus屏幕碎了怎么办 苹果手机屏幕点不动怎么办 手机屏幕失灵划不动怎么办 苹果手机像素不好怎么办 苹果8指纹不灵敏怎么办 手机摔侧面裂缝怎么办 电脑触摸板进水怎么办 iphone部分屏幕失灵怎么办 苹果屏幕按键不灵怎么办 苹果4s老卡机怎么办 坚果2手机黑屏怎么办