前端进阶,使用Node.js做中间层,实现接口转发和服务器渲染

ops/2024/9/21 12:29:46/

在Web开发中,Node.js经常被用作中间层(也称为后端或服务器端),用于处理各种任务,包括接口转发(API Gateway)、服务器渲染(Server-Side Rendering, SSR)等。下面我将分别解释这两种用途,并给出一些基本的实现思路。

1. 接口转发(API Gateway)

接口转发通常指的是将客户端的请求转发到后端服务(可能是其他微服务、数据库或其他API),然后将响应返回给客户端。Node.js在中间层作为API Gateway的角色,可以处理认证、限流、负载均衡、请求聚合等多种功能。

实现思路

  • 设置Express或Koa等框架:这些框架提供了简单的路由和中间件机制,非常适合构建API Gateway。
  • 定义路由:在Node.js应用中定义路由,这些路由将匹配客户端的请求URL。
  • 转发请求:在路由处理函数中,使用httpaxios等库向后端服务发送请求。
  • 处理响应:将后端服务的响应转发给客户端,可能需要进行一些格式转换或错误处理。
  • 添加中间件:在中间件中处理认证、日志记录、请求验证等任务。

示例代码(使用Express和axios)

javascript">const express = require('express');
const axios = require('axios');const app = express();
const PORT = 3000;app.get('/api/data', async (req, res) => {try {const response = await axios.get('http://backend-service/data');res.json(response.data);} catch (error) {res.status(500).json({ error: 'Failed to fetch data' });}
});app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});

2. 服务器渲染(Server-Side Rendering, SSR)

服务器渲染是指服务器将HTML页面渲染完成后再发送给客户端。这种方式有利于搜索引擎优化(SEO),因为搜索引擎爬虫可以直接解析服务器返回的HTML内容。

实现思路

  • 使用模板引擎:如Pug、EJS、Handlebars等,这些模板引擎允许你在Node.js中定义HTML模板,并动态地插入数据。
  • 渲染页面:根据请求和模板,渲染出完整的HTML页面。
  • 发送响应:将渲染好的HTML页面作为响应发送给客户端。

示例代码(使用Express和Pug)

首先,你需要安装Pug模板引擎:

npm install pug

然后,你可以这样设置你的Express应用:

javascript">const express = require('express');
const app = express();
const PORT = 3000;// 设置视图引擎为pug
app.set('view engine', 'pug');// 路由
app.get('/', (req, res) => {// 渲染index.pug模板,并传入数据res.render('index', { title: 'Hello, Pug!' });
});app.listen(PORT, () => {console.log(`Server is running on port ${PORT}`);
});

views目录下,你需要有一个index.pug文件,它可能看起来像这样:

doctype html
htmlheadtitle= titlebodyh1 Pug - node template enginep Welcome to use pug with nodejs.

这样,当访问根URL时,服务器将渲染index.pug模板,并将title变量的值设置为"Hello, Pug!",然后生成HTML页面并发送给客户端。


http://www.ppmy.cn/ops/113791.html

相关文章

一周热门|重磅!AI无限学习、进化,研究登上Nature;Meta提出多模态模型训练方法Transfusion

大模型周报将从【企业动态】【技术前瞻】【政策法规】【专家观点】四部分,带你快速跟进大模型行业热门动态。 01 企业动态 Ideogram 推出文生图模型 Ideogram 2.0 日前,Ideogram 推出了新版本文本到图像模型 Ideogram 2.0。据介绍,Ideogra…

二层、三层网络基本原理

文章目录 二层网络整体拓扑相关配置配置namespace创建switch创建veth设备配置veth的IP启动veth 测试 三层网络配置vm1配置vm2配置 测试 二层网络 我们用Linux bridge模拟现实中的switch,用namespace模拟连接在交换机上的pc 整体拓扑 ------------------ ----…

Flask-SQLAlchemy一对多 一对一 多对多关联

一. 组织一个 Flask 项目通常需要遵循一定的结构,以便代码清晰、可维护。下面是一个典型的 Flask 项目结构: my_flask_app/ │ ├── app/ │ ├── __init__.py │ ├── models.py │ ├── views.py │ ├── forms.py │ ├── tem…

vue无法通过页面路径访问提示404,通过nginx配置处理

部署vue项目时,可以通过IP的方式访问主页,当进入特定页面在刷新时,因为浏览器通过URL地址进行请求,就提示404错误。 每次都需要重新从主页进入,这里是因为nginx配置的问题,在nginx里增加一行重定向的设置 …

蓝桥杯-STM32G431RBT6(UART解析字符串sscanf和解决串口BUG)

一、C语言常识 printf和sprintf的主要区别在于它们的功能和用途: printf:主要用于将格式化的数据输出到标准输出(如屏幕)。sprintf:则是将格式化的数据存储到一个指定的字符串缓冲区中,而不是直接输出。 pr…

CentOS7更换阿里云yum更新源

目前CentOS内置的更新安装源经常报错无法更新,或者速度不够理想,这个时候更换国内的镜像源就是一个不错的选择。 备份内置更新源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里云repo源(需要系统…

DockerDocker Compose安装(离线+在线)

Docker&Docker Compose安装(离线在线) Docker离线安装 下载想要安装的docker软件版本:https://download.docker.com/linux/static/stable/x86_64/ 如目标机无法从链接下载,可以在本机下载后 scp docker版本压缩包[如docker-20.10.9.tgz] usernameh…

一文彻底搞懂大模型 - Agent(智能体)

前 言 在当前信息时代,大型语言模型(Large Language Models,LLMs)的发展速度和影响力日益显著。大模型强大的推理以及生成能力成为了搭建智能体的最好的组件。本内容来源于Datawhale的开源的“生成大模型基础(so-larg…