node.js不是高级语言,而是一个基于Chrome V8引擎的JavaScript运行环境,是一个让JavaScript运行在服务端的开发平台,用来支持JavaScript代码的执行,用于方便地搭建响应速度快、易于扩展的网络应用。
本教程操作环境:windows7系统、nodejs 12.19.0版,DELL G3电脑。
JavaScript 诞生于 1995 年,几乎是和互联网同时出现;Node.js 诞生于 2009 年,比 JavaScript 晚了 15 年左右。
在 Node.js 之前,JavaScript 只能运行在浏览器中,作为网页脚本使用,为网页添加一些特效,或者和服务器进行通信。有了 Node.js 以后,JavaScript 就可以脱离浏览器,像其它编程语言一样直接在计算机上使用,想干什么就干什么,再也不受浏览器的限制了。
Node.js 不是一门新的编程语言,也不是一个 JavaScript 框架,它是一个基于Chrome V8引擎的JavaScript运行环境,是一个让JavaScript运行在服务端的开发平台,用来支持JavaScript代码的执行。用编程术语来讲,Node.js 是一个 JavaScript 运行时(Runtime)。
Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,V8引擎执行Javascript的速度非常快,性能非常好,基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。
Node.js 的诞生
JavaScript 的一生伴随着浏览器大战。JavaScript 由 Netscape(网景)浏览器发布,但是 Netscape 在和 IE 的竞争中落败,早已不复存在;后来谷歌公司的 Chrome 浏览器异军突起,凭借强悍的性能把 IE 按在地上摩擦。
谷歌公司在 Chrome 浏览器中集成了一种名为“V8”的 JavaScript 引擎(也即 JavaScript 解释器),它能够非常快速地解析和执行 JavaScript 代码。
V8 引擎使用 C++ 语言编写,可以独立运行,也可以嵌入到任何其它 C++ 程序中。谷歌公司将 V8 引擎甚至整个 Chrome 浏览器都开源了,任何人都可以免费地将 V8 应用到自己的项目中。
V8 引擎的强大,以及当年 JavaScript 的火爆,使得一名叫 Ryan Dahl 的程序员动起了“歪心思”,他希望在浏览器之外再为 JavaScript 构建一个运行时,让 JavaScript 能够直接在计算机上运行,这样 JavaScript 就能像 Python、Ruby、PHP 等其它脚本语言一样大展宏图,不必再受限于浏览器,只能做一些小事情。
Ryan Dahl 和他的团队真的做到了,并且做得很好,他们将这套独立的 JavaScript 运行时命名为 Node.js;为了避免被误认为是 JavaScript 框架,现在也经常简称为 Node。
Node.js的优势
1、前端/后端开发使用同一种语言
像 ASP.NET 或 Spring 这样的技术需要开发人员学习一门新的服务端语言,比如C#,VB.NET 或者 Java。而 Node.js在服务端和客户端都是使用 JavaScript,这意味着开发人员在各层上只需使用一门语言。
2、容易学会,对于开发者易转型
有一个事实就是 JavaScript 是 Web 开发者们熟知的语言,大部分人都了解 JavaScript 或多少使用过它。所以说,一个 Web开发人员从其他技术转型到 Node.js 是很简单的。
3、轻量
Node.js 使用的是事件驱动架构,这就是说在它上面做的每一件事,每一个独立的调用和操作,都是一系列的异步回调。这使得 Node.js运行在一个线程上,这一点和其它的 Web 技术是不同的,它们每个客户端的请求都会生成一个新的线程来处理。这也正是非阻塞I/O的本质所在。
4、支持 NoSQL 数据库
在 Node.js 应用中使用像 MongoDB 这样的 NoSQL 数据库简是十分常见的,MongoDB 和传统的 SQL数据库不同的是,它使用的是基于文档的模型而非关系型模型,它用的不是表,而是类似 JSON 这样的对象。这就很适合 ORM 的热爱者了。
5、有很好的 IDE 和代码编辑器支持
JavaScript 已经存在相当长一段时间了,所以像 Visual Studio,Eclipse 这样的 IDE 都是支持 JavaScript代码提示和高亮的,另外像 NotePad++ 和 Sublime Text 之类的代码编辑器也同样支持这些。
6、代码托管服务支持广泛
一些 Web 服务器和云服务提供商都支持 Node.js 的 Web 应用。我们在这里说几个,包括 Google,Microsoft IIS,Heroku,Microsoft Azure,Amazon(AWS)等等。