从本篇文章开始,开始聊聊Node.js。
一.什么是Node.js
Node.js是提供一种简洁的、用于创建高性能服务器及可在该服务器中运行的各种应用程序的开发工具,是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
为了实现高性能,Node.js中采用了以下两种机制:
- 非阻塞I/O
- 事件环
JavaScript脚本语言的一个特征是它只支持单线程,V8 JavaScript也是如此,因此不需要担心会造成死锁现象。与客户端脚本语言不同的是,Node.js中为V8 JavaScript脚本语言提供了非阻塞型的I/O机制。存在这样一种场景:程序操作数据库时,在开始访问数据库之后、数据库返回结果之前,存在一段等待时间。传统的单线程处理机制中,在执行了访问数据库的代码之后,整个线程都将暂停下来,等待数据库返回查询结果之后才能继续执行其后面的代码。此时,I/O操作阻塞了代码的执行,极大地降低了程序的执行效率。Node.js采用的非阻塞型I/O机制在执行了访问数据库的代码后立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中执行,从而提高了程序的执行效率。
在Node.js中,虽然不具有因为用户鼠标单击或者键盘输入等操作而出发的事件,但是具有由于客户端请求建立连接、通过此连接而接收客户端提交数据、停止客户端提交数据的接收等行为而触发的事件。在Node.js中,某一个时刻只能执行一个事件回调函数,但是在执行一个事件回调函数的中途可以转而处理其他事件(包括触发新的事件、声明该事件的回调函数等),然后返回继续执行原事件回调函数,这种处理方式则称为事件环机制。
二.创建第一个应用
在创建 Node.js 第一个 "Hello, World!" 应用前,先了解下 Node.js 应用是由哪几部分组成的:
- 引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
1. 引入 required 模块
使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http,实例如下:
2. 创建服务器
接下来,使用 http模块的createServer() 方法来创建用于接收HTTP客户端请求并返回响应的HTTP服务器应用程序。在createServer方法中,定义了当服务器接收到客户端请求时所执行的回调函数,在该回调函数中指定当服务器接收到客户端请求时所要执行的处理。在回调函数中,使用两个参数,其中第一个参数代表客户端请求对象,第二个参数代表服务器端所做出的响应对象。
在示例函数中,首先通过响应对象的writeHead书写响应头,同时将响应头中的状态码定义为200,将内容类型定义为text/html,表示返回一段HTML代码。然后通过响应对象那个的write方法书写一段内容,最后通过响应对象的end方法输出并结束响应流。http模块的createServer方法将返回被创建的HTTP服务器对象,我们使用该对象的listen方法指定该服务器使用端口及服务器绑定地址,并对该端口进行监听。
3. 执行结果