引: 当我们开始学习 Node.js ,一定会不可避免的被好多资料直接带入到某个情景,各种入门和资料一定已经让很多小白觉得无从下手,授人以鱼不如授人以渔,本文是从个人经历来给小白做一种指向,如何认识 Node.js ,以及入手 Node.js。
一、 Node.js 特点
1. Node.js是当前(2018)大前端的基础设施。前端的开发过程,模块化,构建,辅助工具,调优,架构调整,可以说对于现在的前端来说Node.js是无处不在的。
简单来说 Node.js 有以下几个特点: 单线程、异步I/O、事件驱动;(相关的特性介绍文章非常多,本文不多做赘述) 基于以上特点,总的来说,Node.js 适合以下场景(特性):
- (1)实时性应用,比如在线多人协作工具,网页聊天应用等。
- (2)以 I/O 为主的高并发应用,比如为客户端提供 API,读取数据库。
- (3)流式应用,比如客户端经常上传文件。
- (4)前后端分离。
实际上前两者可以归结为一种,即客户端广泛使用长连接,虽然并发数较高,但其中大部分是空闲连接。
二、 Node.js 学习方法
1. 当我们去学习 Node.js ,首先应该认识到它是一门语言,而且是一门后端语言。它有自己的适应场景也要自己的不足。单从学习的角度,应该划分为三部分来看:
- (1) Node.js 的表象: ECMA规范;
对于前端来说,ECMA规范属于必修课,对于后端同学来说可能会相对陌生,但是如果我们把js应用在服务端场景,很多写法和规范一定要遵从语言本身的具体规范。规范中有几百条规则,我们并不必熟记所有规则,而应该有查询规范手册的能力,比如设计 js 中常见的 "==" 比较,设计具体哪些条目和规则,我们应该可以落实到手册的条目快速查询到我们想要的结果。同时我们也知道JS的发展非常迅速,目前ES5, ES6, ES7语法现在都已经被 Node.js 的最新稳定版支持,可以直接使用我们在前端编程中的 const, let ,awync ,await等语法。
- (2) Node.js api:
学习语言必然绕不过对应的 api,我们大多只需要记住并熟练使用常用的一些api和模块即可,其余的就仰仗实时翻阅 Node.js 文档,以及关注 Node.js 新版本发布时候的 Changelog,尤其是那些 Notable changes。
- (3)表象到内里: 进阶
学习的最终是为开发服务,利用 Node.js 做企业级开发的时候,还需要某些前置知识: 比如数据库,数据量到一定程度,分表分库数据分离 如何更好的设计数据库,表/索引设计;同时,我们在服务端应当更有一些后端思维和代码抽象:包括但不限于安全、编程基本功--设计模式和数据结构和算法、服务化、性能和服务器压力。
三、 总结
1. ECMAScript是根基,知晓操作符在语言内部的执行流程
2. 熟悉基本api,掌握快速开发能力
3. 熟悉生态圈,对于生态圈各种库有理解
4. 异步编程大坑(同时也是特性)
5. 熟悉后端开发的体系,结合 Node.js 从几方面去考虑,安全,性能,结构分层,数据库