初遇SSR

SSR简称服务端渲染,是一种在服务端上生成动态内容并将其发送到客户端的技术。

在本次SSR初遇中,是在PC端react项目结合BFF层的express.render做的一个比较小的SSR。

【注】:

"BFF层"指的是"Backend for Frontend"。在软件开发中,BFF层是指在前端和后端之间添加的一个服务层,旨在处理特定于前端的逻辑和需求,以提高系统的性能和灵活性。

项目背景

在BFF层统一管理着某些跨项目的变量。浏览器通过网址访问服务器上的打包代码文件时,打包的代码文件内部需要读取BFF层的变量进行做一些处理展示。

初遇过程

一、在react项目中添加ejs语法

react项目采用的是vite+react为主要技术栈。使用了vite打包构建为可浏览器运行的bundle代码(HTML+JS+CSS)。在HTML模版中,使用script标签进行插入一段ejs代码。

xml 复制代码
<script>
			window.__backendData = <%- JSON.stringify(backendData).replace(/(^"|"$)/gi, "") %>
</script>

二、BFF层

BFF层采用的是NodeJS+express。这里使用了express的engine和render函数进行处理。当浏览器访问网址的时候,根据访问路径渲染特定的代码资源,

dart 复制代码
// 实例化app服务
const app = express()

// 配置程序设置的视图目录views
app.set('views', config.VIEW_DIR)
// Express使用特定的模板引擎来处理后缀为.html的文件
app.engine('html', ejs.__express)
// 配置程序设置的模版引擎
app.set('view engine', config.VIEWS_ENGINE)

// 根据user路径,响应特定的资源,渲染的时候将
res.render('user', { name: 'Tobi' }, (err, html) => {
  // ...
})

三、整体流程

在react项目中插入ejs执行语句,后vite构建生成可在浏览器运行的html文件。将构建打包生成好的html放在express的视图目录下,express程序设置对应的视图目录views和模版引擎。当通过浏览器输入地址访问时,express程序按照设定的模版引擎和res.render传入的服务端数据render出响应。

心得总结

到此为止,小星初遇服务端渲染SSR的过程就完整讲述结束了。第一次遇到SSR,打破了以往的开发认知,服务端和web端不是只有通过请求进行通信,还可以通过SSR在资源初次渲染的时候就可以将服务端的变量融合进请求资源中,实现BFF层和web层资源的隔断打破。"路漫漫其修远兮",路还很长,需要学习的还有很多。加油,小星永远在路上。

相关推荐
codeGoogle17 小时前
自研 IM 还是选择第三方 SDK?企业开发者应该如何权衡?
前端·后端·程序员
用户9385156350719 小时前
React Context 与自定义 Hook 从底层到实践:「跨层级通信 + 副作用封装」全解析
前端·javascript·react.js
滴滴答答哒19 小时前
VUE3+element-plus MultiSelect 多选下拉组件
前端·javascript·vue.js
其美杰布-富贵-李19 小时前
04 watch 与 Vue 响应式数据流
前端·javascript·vue.js
赵大仁21 小时前
生成式 UI 实战:用 JSON Schema + React 动态渲染 AI 界面
前端·ai·react·next.js·前端架构·生成式ui
kyriewen1 天前
我排查了一个React内存泄漏——罪魁祸首是这3个被忽略的清理函数
前端·javascript·面试
IT_陈寒1 天前
我又被JavaScript的隐式类型转换坑了
前端·人工智能·后端
其美杰布-富贵-李1 天前
03 ref、reactive 与 computed 响应式数据
前端·javascript·vue.js
OpenTiny社区1 天前
GenUI SDK v1.3.0 发布|多框架兼容,一键换物料,渲染器 & 演练场全面增强!
前端·ai编程
用户938515635071 天前
useRef + Web Worker 实战:React 如何优雅地拥抱多线程
前端·javascript·react.js