Node.js 简介
让我们用简单的术语理解异步编程和同步编程之间的区别,这将使我们了解 node.js 背后的工作原理以及它受欢迎的原因之一。
获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,使开发人员可以使用 Intel® Galileo 和 Intel® Edison 开发板创建令人兴奋的新解决方案。访问 Intel® 物联网开发者专区。
我们已经听到很多关于 node.js 的信息,它在 Web 开发人员和 IOT 专家中很受欢迎,但它到底是什么,为什么它被广泛用作主要开发语言。让我们通过这篇文章来了解它。
根据 nodejs.org,“node.js 是构建在 Chrome JavaScript 运行时之上的平台”。换句话说,您为服务器编写的代码将在浏览器中以非常相似的方式执行。您可以轻松地运用您在其他地方学到的 JavaScript 技术。它快速、事件驱动且轻量级,但使用 node.js 的最大优势是异步编程。
让我们用简单的术语理解异步编程和同步编程之间的区别,这将使我们了解 node.js 背后的工作原理以及它受欢迎的原因之一。
Synchronous
您正在排队购买电影票。在您前面的每个人都买到票之前,您无法买到票,这同样适用于排在您后面的人。
异步
您在一家餐厅,和许多其他人在一起。您点餐。其他人也可以点餐,他们不必等待您的食物被烹饪并送到您手中才能点餐。在厨房里,餐厅工作人员不断烹饪、上菜和接受订单。人们将在食物烹饪好后立即获得服务。
//example 1
var result = database.query("SELECT * FROM sampletable");
console.log("finished");
console.log("start");
//example 2
database.query("SELECT * FROM sampletable", function(result) {
console.log("finished");
});
console.log("start");
输出
将会是
- 完成
start - start
完成
区别在于,在第一个示例中,程序将在第一行阻塞。下一行(console.log)必须等待。在第二个例子中,console.log 将在查询处理时执行。也就是说,查询将在后台处理,而您的程序正在做其他事情,一旦查询数据准备就绪,您将用它做任何您想做的事情。
所以,简而言之:第一个例子会阻塞,而第二个不会。
安装
首先,您需要一个至少是 Windows Vista 的 Window OS,然后从 https://node.org.cn/download/ 下载 MSI。确保在您的 Windows 机器上安装 node.js 时选择添加到路径选项。
创建您自己的 node.js 服务器
首先创建一个名为“server.js”的新文件。将以下代码插入到该文件中并保存它。
var http = require("http");
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Hello World");
response.end();
});
server.listen(8080);
console.log("Server is listening at port 8080");
要启动服务器,请键入如下所示的命令。如果一切正常,您将看到一条消息,表明服务器正在侦听。
node server.js
下一步是使用 Web 浏览器连接到服务器。启动您选择的浏览器,并将其定向到以下链接之一。在网络术语中,localhost
(及其 IP 地址 127.0.0.1)指的是您当前使用的机器。您的浏览器应该显示“Hello World”。
https://:8080
服务器如何工作
require():
Node.js 提供了一个简单的模块系统。Node.js 程序可以使用 require()
方法加载单个模块。虽然许多模块必须显式下载,但一些模块,如名为核心模块的 http,与 node.js 捆绑在一起。
HTTP 服务器是使用 http
模块的 createServer()
方法创建的。createServer()
接受一个回调函数作为参数。每次服务器收到新请求时,都会执行此回调函数。
回调函数接受两个参数,request
和 response
。request
对象包含有关客户端请求的信息,例如 URL、HTTP 标头等等。同样,response
对象用于将数据返回给客户端。
调用 listen()
会导致服务器绑定到一个端口并侦听传入的连接。这里我们将端口定义为 8080。
在下一篇文章中,我们将更多地讨论 node.js 如何与事件循环一起工作,并详细介绍 node 模块以及如何连接到 NoSQL 数据库 mongoDB。