前端要掌握的服务端技术栈,这期视频讲清楚
小麦2024年11月01日1723 字
我们传统认知上前端开发是面向用户界面,以提供良好的用户体验为核心,
由此形成了前端技术栈。
Node.js 出现后,现代前端的能力边界扩宽到了服务端,我们借助服务端技术栈可以开发出体验更好的产品。
毋庸置疑的是,掌握服务端技术是通往全栈开发的必经之路。
服务端是一个很大的话题,
有必要说明的是,我在这个频道中提到的服务端,特指服务于前端开发的服务端,而它只是整个服务端领域的冰山一角,并不包含数据库、中间件、分布式服务、K8S 等底层设施。
为什么需要引入服务端?
在传统前端开发中,所有的代码和功能都运行在客户端,这通常没什么问题,但随着业务体量增大,前端很容易不堪重负。
比如需要传输到客户端的脚本体积越来越大,导致传输延迟上涨,渲染性能下降。
前端要调用的接口越来越多,导致客户端白屏时间越来越长,服务端性能下降等等。
要解决这些问题,光靠纯前端优化是很难进行的,这个时候服务端的优势就会显现出来。
比如在服务端渲染页面能有效减少传输量,缩短白屏时间;在服务端聚合接口,能消除客户端频繁的接口调用。
在服务端也能很容易地配置安全策略和持久化日志等等。
那么接下来我就从四个维度,展开介绍前端视角下的服务端,分别是:运行时,基础框架,应用框架和应用架构。
首先是运行时,我们在第五期视频(前端编程语言)中曾提到 JS 运行时的概念,它是 JS 代码的执行环境,包含 JS 引擎,JS 标准库以及一组环境相关的 API。
而 Node.js 就是一种运行时,它赋予了 JS 语言在服务端执行的能力。
Node.js 是最流行,最稳定,应用范围最广的服务端运行时。它为上层应用提供了诸如 HTTP 协议实现(HTTP/HTTPS),
文件系统(File system),
查询字符串处理(Query strings)等服务端开发必备的基础 API。
除了 Node.js 这个运行时外,还有 Deno 和 Bun,它们有各自的优缺点,不过大致的区别点在于性能、安全性和社区生态,应该根据实际需求选择。
这些运行时的功能很强大,
但是仅依靠它们是无法高效率完成一个相对复杂的业务的,我们必须对它进行一层封装,形成基础框架。
这就好像我们在第七期视频中提到的 UI 框架是对客户端运行时(如浏览器 API)的封装一样。
Express、Koa、Fastify 是常见的服务端基础框架,它们在 Node.js 之上添加了额外功能,专门用于构建 Web 服务。
以 Express 为例,基础框架通常会:
维护一个应用(Application)对象,代表一个 Web 服务器,接收来自某个端口上的所有 HTTP 请求。
然后,对 HTTP 协议进行抽象,提供请求(Request)和响应(Response)两大对象。
最后,提供路由(Router)简化不同请求的处理方式。
基础框架可以应付大多数简单的业务场景,比如完成简单的数据处理,或者搭建一个简易的代理服务器。
如果业务更复杂,就应该选择应用框架了。应用框架是对基础框架的进一步封装。这就好像我们在第八期视频中提到的,前端应用框架通常是基于 UI 框架封装的一样。
常见的应用框架包括 NestJS、Egg.js、Sails.js、krakenjs 等等。相比基础框架,应用框架会提供更多更复杂的功能,
以 NestJS 为例,它抽象了模块(Module),控制器(Controller),服务(Service)等概念。
同时添加了诸如验证(Validation),缓存(Caching),队列(Queue),日志(Logging),会话(Session)等通用功能。这些能力大大增强了应用框架对复杂业务的适用性。
还有一类特别的框架,融合了前端应用框架和服务端框架,形成了所谓的 “全栈框架”。
比如 Next.js 就是典型的全栈应用框架,相比纯服务端应用框架,它更简洁,更贴合前端的渲染需求。
我们常说的服务端渲染(SSR),更多是内置于这样的全栈框架之中。
说完应用框架,就不得不说应用架构,
就像第八期视频中的前端应用架构一样,服务端也有自己的应用架构。常见的有 MVC、RESTful 和 BFF。
MVC 是模型(Model)、视图(View)、控制器(Controller)的简称,
模型负责定义数据结构,视图负责展示数据,控制器负责处理用户输入和业务逻辑。MVC 是一种经典的应用架构模式,各部分的职责划分清晰,容易上手。
RESTful 是一种通过 HTTP 协议 GET、POST、PUT、DELETE 等方法的语义来操作资源。它是以资源和动作为核心,以实现简单和语义化 API 设计。
另一种架构范式叫 BFF,
它的全称是 Backend for Frontend,顾名思义是一种面向前端应用的架构模式。
它位于前端和真正的后端之间,通常作为体验适配层,负责处理多端应用的请求,以及聚合后端提供的原子接口,让前端应用可以更标准且灵活地访问后端服务。
BFF 架构是目前业内成熟的方案,非常适合大型 C 端业务。
本期我们解释了前端引入服务端的必要性,以及从运行时,基础框架,应用框架和应用架构四个维度介绍了服务端的构成。
大家可以在评论区获取更多内容。
我是小麦,我们下期再见。