Node.js开发简单,性能极好,一经发布便成了明星级项目。随着大前端领域的蓬勃发展,跨平台开发、API构建、Web应用开发等场景愈加常见,Node.js也成为大前端开发的必备“神器”。
本书以Node.js为主,讲解了Node.js的基础知识、开发调试方法、源码原理和应用场景,旨在向读者展示如何通过最新的Node.js和npm编写出更具前端特色、更具工程化优势的代码。本书还讲解了Node.js中相当核心且复杂的异步流程控制,展望了未来异步流程的发展方向,非常适合大前端领域及后端领域的测试、运维及软件开发从业者阅读、学习。
狼叔千日三卷始成,狼书之外再无Node!
狼叔(网名i5ting),Node.js 技术布道者,“Node全栈”公众号作者,全栈技术实践者。曾就职于多家知名IT企业,从事前端开发、后端开发、数据分析等工作,目前负责公司内的Node.js开发和基础框架开发工作。
前言
Node.js诞生于2009年,是由Joyent公司的员工Ryan Dahl开发完成的,之后Joyent公司一直扮演着Node.js孵化者的角色。由于诸多原因,Ryan于2012年离开了Node.js社区,随后在2015年,由于Node.js的贡献者们在ES6新特性集成问题上产生意见分歧,因此分裂出io.js。
io.js的分裂最终促成了2015年Node.js基金会的成立,同年Node.js v4.0顺利发布。Node.js基金会的创始成员包括Google、Joyent、IBM、Paypal、Microsoft、Fidelity和Linux基金会,创始成员将共同掌管过去由Joyent一家企业掌控的Node.js开源项目。此后,Node.js基金会发展得非常好,稳定地发布了5.x、6.x、7.x、8.x、9.x、10.x、11.x等多个版本,截止到本书完稿之时,最新版本已经是v11.14,最新的长期支持(LTS)版本是v10.15。
Node.js不是一门语言也不是一个框架,它是基于Chrome V8引擎的JavaScript运行时环境,同时结合libuv扩展了JavaScript功能,使得JavaScript能够支持浏览器DOM操作,同时具有只有后端语言才有的I/O、文件读写于操作数据库等能力,是目前使用最简单的全栈式环境。
本书内容
从整体上来说,本书以Node.js为主,首先介绍了Node.js的发展历史,然后简要概括了Node.js的特点和使用场景,之后讲解了Node.js实现过程中的新增内容(如语法、模块、单进程等)的基本用法。读者入门Node.js之后,可以继续从本书中了解Node.js的执行原理,深入解读源码。最后,本书还讲解了Node.js中非常核心且复杂的异步流程控制,对未来异步流程的发展方向进行了展望。
本书共分7章,每章的内容简介如下。
第1章 Node.js初识
本章介绍了Node.js的一些基础知识,包括什么是Node.js、Node.js和JavaScript的关系、Node.js的特点和应用场景等。
第2章 Node.js安装与入门
本章介绍了Node.js安装与使用的基本方法,包括3m(即nvm、nrm、npm)安装法、Node.js基础示例,以及编辑器和调试等内容。
第3章 更了不起的Node.js
本章更加详细地介绍了Node.js的各类应用场景,对Node.js的核心作用进行了概括与总结,还对如何成为全栈工程师提供了宝贵建议。
第4章 更好的Node.js
本章介绍了Node.js的各种写法,包括单线程与集群,以及各种优秀实践,包括ES语法、多模块管理器Lerna、npm的替代品Yarn等。
第5章 Node.js是如何执行的
本章介绍了Node.js的源码构建和调试过程,阐述了Node.js是如何执行的,还介绍了API的调用过程,以及事件循环机制。
第6章 模块与核心
本章介绍了Node.js中的CommonJS规范、SDK模块与核心技术,还对未来的ES6模块功能进行了预测与展望。
第7章 异步写法与流程控制
本章介绍了异步流程控制的演进过程、Node.js的核心异步写法,以及更好的异步流程控制机制,如Thunk、Promise、async函数等。
本书中的各章在内容上基本是相互独立的,因此各位读者可以挑选自己感兴趣的章节阅读。这本书是“狼书”系列的第1卷,还有第2卷和第3卷稍后会和各位读者见面,内容涉及Web应用和性能优化等,搭配阅读,效果更好。
目标读者
本书的目标读者有以下三类。
正在学习JavaScript开发,对JavaScript语言有基本的了解和熟悉度,且希望能够了解JavaScript发展情况的人。
正从事JavaScript开发相关工作,熟悉JavaScript的基本开发要领,在日常工作中经常接触Node.js,想要深入了解Web应用、BFF、API代理等内容,以进一步提升自我的Web工程师(此处不区分前端与后端)。
具有极客精神,想要深入研究JavaScript语言及Node.js的全栈工程师。
同时,本书也适合正使用其他编程语言(如Go、PHP、Python、Ruby、Java等)进行Web开发的工程师阅读、学习。
阅读准备
要想运行本书中的示例,需要安装以下系统及软件。
操作系统:推荐Linux,以及macOS X 10.9或以上版本,使用Windows操作系统可能会报错。
浏览器:Google Chrome、Safari、Firefox、Internet Explorer 11、Windows Edge。
运行环境:以Node.js 8.6为主。
不能通过require()来引入全局安装的包。
vim/Emace 是emacs嘛?
luanch.json -> launch.json
做后端开发开发也是需要具有一定沉淀的
方法2: 将所有模块都放到同一个仓库里 (Learn 建议)
—>
方法2: 将所有模块都放到同一个仓库里 (Lerna 建议)