Javascript

Node.js 新手入门

本文主要是介绍Node.js 新手入门,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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-TypeHeader头信息

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

然后我们关闭响应,将内容作为参数传递给end()函数。

res.end('Hello World\n')

我们通过Chrome devtool工具的network来查看,我们上面设置的statusCode,Content-Type

image-20220219213836071

Response响应内容:

image-20220219214226682

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

这篇关于Node.js 新手入门的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!