Node.js 教程
Node.js 教程
Node.js 是能够在伺服器端运行 JavaScript 的开放原始码、跨平台 JavaScript 执行环境。
Node.js 由 Node.js 基金会持有和维护 ,并与 Linux 基金会有合作关系 。
Node.js 采用 Google 开发的 V8 执行程式码,使用事件驱动、非阻塞和非同步输入输出模型等技术来提高效能,可优化应用程式的传输量和规模。
这些技术通常用于资料密集的即时应用程式。
一句话概括就是:JS 非常牛 X!
我个人的理解比较简单:PHP 是 WEB 开发的过去式,Node.js 是 WEB 开发的将来时!
一切能用 JS 来做的事情,最终都会用 JS 来做!
在我们公司内部,我也在尽力推动 JS 生态,包括并不限网页开发,Chrome 扩展开发,PC 桌面应用的开发,手机端应用的开发,服务器任务批处理脚本等等;
希望大家也能为 JS 添砖加瓦,让他的渗透力更加深入!
Node.js 对前端生态的推动有里程碑的意义
Node.js 大部分基本模组都用 JavaScript 语言编写。
在 Node.js 出现之前,JavaScript 通常作为用户端程式设计语言使用,以 JavaScript 写出的程式常在用户的浏览器上执行。
Node.js 的出现使 JavaScript 也能用于伺服器端编程。
Node.js 含有一系列内置模组,使得程式可以脱离 Apache HTTP Server 或 IIS,作为独立伺服器执行。
谁适合阅读本教程?
如果你是一个前端程序员,那么 Node.js 是一个非常好的选择,Node.js 是运行在服务端的 JavaScript,如果你熟悉 Javascript,那么你将会很容易的学会 Node.js。
如果你还不懂什么是JS,那么推荐你看下我写的一篇 JS教程,这个项目在Github上有15K的star哦,还是不错的,是我自己的学习笔记整理的;
如果你是后端程序员,想部署一些高性能的服务,那么学习 Node.js 也是一个非常好的选择,而且入手也非常简单。
使用的版本
我们可以使用以下命令来查看当前的 Node 版本:
$ node -v
v10.14.1
**注意:**不同版本间可能是有差异的。
Hello World!
脚本模式
以下是我们的第一个 Node.js 程序:
console.log("Hello World");
保存该文件,文件名为 helloworld.js, 并通过 node 命令来执行:
node helloworld.js
程序执行后,正常的话,就会在终端输出 Hello World。
交互模式
打开终端,键入 node 进入命令交互模式,可以输入一条代码语句后立即执行并显示结果,例如:
$ node
> console.log('Hello World!');
Hello World!
执行绪
Node.js 以单执行绪执行,使用非阻塞 I/O 呼叫,这样既可以支援数以万计的并行连线,又不会因多执行绪本身的特点而带来麻烦。
众多请求只使用单执行绪的设计意味著可以用于建立高并行应用程式。Node.js 应用程式的设计目标是任何需要操作 I/O 的函式都使用回呼函式。
这种设计的缺点是,如果不使用 cluster、StrongLoop Process Manager 或 pm2 等模组,Node.js 就难以处理多核或多执行绪等情况。
V8
主条目:V8 (JavaScript 引擎)
V8 是为 Google Chrome 设计的 JavaScript 运行引擎,Google 于 2008 年将其开源。V8 用 C++ 写成,它将 JavaScript 源代码编译成本地机器码而不是解释执行。
Node.js 用 libuv 来处理异步事件,而 V8 提供了 JavaScript 的实时运行环境。
libuv 是一个网络和文件系统功能的抽象层,既可以用于 Windows 又可以用于符合 POSIX 标准的系统,例如 Linux、OS X 和 Unix。
Node.js 的核心功能被包含进一个 JavaScript 库,并通过 C++ 将各部分与操作系统进行联系。
npm
主条目:node 包管理器
npm 是 Node.js 附带的包管理器。
npm 是一个命令行工具,用于从 NPM Registry 中下载、安装 Node.js 程序,同时解决依赖问题。
npm 提高了开发的速度,因为它能够负责第三方 Node.js 程序的安装与管理。
统一 API
Node.js 将浏览器、数据(例如 MongoDB 或 CouchDB)等组合到一起,通过 JSON 提供一个统一的接口。
由于前端框架和一些基本的后端开发技术(如 MVC、MVP、MVVM 等)变得流行,
Node.js 也支持客户端和服务器端重新利用相同的模型和接口。
事件循环
Node.js 将其注册到操作系统中,这样可以及时注意到新连接的产生。当新连接产生时,操作系统会产生一个回调。
在 Node.js 运行时内部,每个连接都被分配一个小型的堆。
与其他服务器程序不同的是,Node.js 不使用进程或线程处理连接,而是采用事件循环来处理并发连接。
而且 Node.js 的事件循环不需要手动调用。
在回调函数定义之后,服务器进入事件循环。
当回调函数均被执行完毕之后,Node.js 结束事件循环。
开发工具
桌面 IDE
- Atom(免费、开源软件)
- Brackets(免费、开源软件)
- Sublime Text(商业软件)
- JetBrains IntelliJ IDEA(商业软件)
- JetBrains WebStorm(商业软件,五星推荐)
- Microsoft Visual Studio with Node.js Tools for Visual Studio(商业软件)
- Microsoft Visual Studio with TypeScript(商业软件)
- Nodeclipse Enide Studio(免费、开源软件、在 Eclipse 基础上开发)
- NoFlo –与 GNOME API 集成的流式开发环境
- Visual Studio Code(免费、开源软件)
在线编辑器
- Koding
- Codenvy IDE
- Cloud9 IDE
- Codiad
运行时和调试器
- Visual Studio Code (五星推荐)
- Microsoft Visual Studio(商业)with Node.js Tools for Visual Studio(免费)
- Microsoft WebMatrix(免费、闭源软件)
框架
- 服务器端框架:Express.js, Socket.IO, Koa.js, Hapi.js, Total.js
- MVC 框架:Meteor, Derby, Sails, Mean, MeanJS, Tower.js, Nombo, Geddy, Compound, Yahoo! Mojito
下载
Node.js 下载地址
https://nodejs.org/en/download/
Node.js 历史版本
Node.js 历史版本下载地址:https://nodejs.org/dist/
这里是 Nodejs 历史版本大全,推荐大家收藏一下本页,方面随时查找;后面会一直更新 Nodejs 的周边资源