Node.js 新手入门

  • Post author:
  • Post category:其他




Node.js 简介

Node.js是一个

开源并且跨平台

的JavaScript运行环境。现在几乎所有的前端项目都用到了它,比如你项目中的webpack,各种CLI工具(Vue-CLI、create-react-app)都是基于Node.js开发的。

Node.js运行在Google的V8 JavaScript引擎之上,V8引擎是独立于浏览器。你只需知道V8引擎的性能是非常高效的。

一个Node.js应用运行在单一进程中,它不会为每个请求都新开一个线程,这点是和Java和PHP等语言的本质区别。Node.js在标准库中提供了一系列的异步I/O API,防止JavaScript代码阻塞,虽然标准库同样也提供同步的API,但使用同步方法并不是常态。

当Node.js执行I/O操作时,比如发起网络请求、操作数据库或者文件系统,Node.js并不会阻塞线程等待结果返回,而是会在响应返回时恢复操作。

这就使得Node.js可以在单个服务器上处理上千个并发请求,完全不用我们自己去管理线程。

Node.js还有一个独特的优势,因为所有的前端开发工程师以前使用JavaScript开发客户端应用,现在还可以通过JavaScript基于Node.js来开发服务端应用,而完全不用学习新的语言。

而且在Node.js中,我们可以尽情的去使用新的ECMAScript的标准,我们不必去等待客户更新他们的浏览器,我们只要更改我们的Node.js版本来决定我们使用哪个版本的ECMAScript标准。



大量的依赖包

npm以其简单的结构帮助Node.js的生态蓬勃发展,现在npm的依赖包已经超过100,0000个,并且免费使用。

相比其他的语言的依赖管理工具来说,npm无疑是相当成功的。



一个 Node.js 示例应用

Node.js最常见的

Hello World

例子就是做一个Web服务器:

const http = require('http')

const hostname = 'localhost'
const port = 3000

const server = http.createServer((req, res) => {
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('Hello World\n')
})

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}`)
})

运行示例:

$ node server.js 
Server running at http://localhost:3000

在浏览器访问:

image-20220219212103720

首先我们引入Node.js的


http

模块

Node.js有很棒的

标准库

,包含了一流的关于网络操作的库。

使用

http

模块的

createServer()

方法来创建一个新的HTTP服务并且返回它。

之后使用

listen()

方法来设置监听端口和主机名。当服务器准备好之后,回调函数被调用。

每当收到新的请求时,就会调用


request

事件

,提供两个对象,一个request对象(


http.IncomingMessage


),一个response(


http.ServerResponse


)对象。

这两个对象对于处理HTTP调用至关重要。

第一个提供请求的一些详细信息,在这个简单的示例中并没有使用它,但你可以使用它的请求头信息和请求数据。

第二个用于将数据返回给调用者。

在此示例中:

res.statusCode = 200

我们将

statusCode

属性设置为200,表示响应成功。

设置

Content-Type

Header头信息

res.setHeader('Content-Type', 'text/plain')

然后我们关闭响应,将内容作为参数传递给

end()

函数。

res.end('Hello World\n')

我们通过Chrome devtool工具的

network

来查看,我们上面设置的

statusCode

,

Content-Type

image-20220219213836071


Response

响应内容:

image-20220219214226682

欢迎我的公众号【小帅的编程笔记】,让自己和他人都能有所收获!



版权声明:本文为cmdfas原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。