Node.js是什么
传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎。前者负责渲染 HTML + CSS,后者则负责运行 JavaScript。Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快。
Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎。我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发动态网页,Node.js 的作用与他们类似,只不过是使用 JavaScript 来开发。
为什么要用 Node.js
面对一个新技术,多问几个为什么总是好的。既然 PHP、Python、Java 都可以用来进行后端开发,为什么还要去学习 Node.js?至少我们应该知道在什么场景下,选择 Node.js 更合适。
总的来说,Node.js 适合以下场景:
- 实时性应用,比如在线多人协作工具,网页聊天应用等。
- 以 I/O 为主的高并发应用,比如为客户端提供 API,读取数据库。
- 流式应用,比如客户端经常上传文件。
- 前后端分离。
实际上前两者可以归结为一种,即客户端广泛使用长连接,虽然并发数较高,但其中大部分是空闲连接。
Node.js 也有它的局限性,它并不适合 CPU 密集型的任务,比如人工智能方面的计算,视频、图片的处理等。
当然,以上缺点不是信口开河,或者死记硬背,更不是人云亦云,需要我们对 Node.js 的原理有一定的了解,才能做出正确的判断。
npm
npm 包管理器
n和nvm
通常我们使用稳定的 LTS 版本的 Node.js 即可,但有的情况下我们又想尝试一下新的特性,我们总不能来回安装不同版本的 Node.js 吧,这个时候我们就需要 n 或者 nvm 了。n 和 nvm 是两个常用的 Node.js 版本管理工具,关于 n 和 nvm 的使用以及区别,这篇文章 讲得特别详细,这里不再赘述。
nrm
nrm 是一个管理 npm 源的工具。用过 ruby 和 gem 的同学会比较熟悉,通常我们会把 gem 源切到国内的淘宝镜像,这样在安装和更新一些包的时候比较快。nrm 同理,用来切换官方 npm 源和国内的 npm 源(如: cnpm),当然也可以用来切换官方 npm 源和公司私有 npm 源。