这是我参与「 第五届青训营 」伴学笔记创作活动的第 15 天。
前言
今天是 2023 年 1 月 29 日星期日,癸卯年正月初八。
依然祝大家兔年快乐🐰
今天我跟随欧阳亚东老师学习了 Node.js 与前端开发实战。主要包括 Node.js 的应用场景,Node.js 的运行时结构,如何应用 Node.js 编写 HTTP Server,等等。
Node.js 简介
简单的说, Node.js 就是运行在服务端的 JavaScript。Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台。Node.js 是一个事件驱动 I/O 服务端 JavaScript 环境,基于 Google 的 V8 引擎,V8 引擎执行 Javascript 的速度非常快,性能较好。
使用 Node.js 创建应用
如果我们使用 PHP 来编写后端的代码时,需要 Apache 或者 Nginx 的 HTTP 服务器,并配上 mod_php5 模块和 php-cgi。从这个角度看,整个"接收 HTTP 请求并提供 Web 页面"的需求就不需要 PHP 来处理。
但是对 Node.js 来说,概念完全不一样了。使用 Node.js 时,我们不仅仅在实现一个应用,同时还实现了整个 HTTP 服务器。事实上,我们的 Web 应用以及对应的 Web 服务器基本上是一样的。
Node.js 应用由以下部分组成:
引入 required 模块:我们可以使用 require 指令来载入 Node.js 模块。
创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
Node.js 运行时结构
这部分参考了谷歌云的官方指南。
Node.js HTTP Cloud Functions 提供与 ExpressJS 兼容的 request 和 response 对象,以简化处理 HTTP 请求的过程。Cloud Functions 会自动读取请求正文,因此不管内容类型如何,始终会收到请求正文。这意味着,在代码运行时,HTTP 请求应被视为已完全读取。嵌套 ExpressJS 应用时,应注意这条事项。具体而言,如果中间件预计请求正文未被读取,那么该中间件可能无法按预期运行。