Serverless 架构在近几年迅速崛起,并且普遍应用于云计算、物联网等领域。在前端技术中,Serverless 也有着广泛的应用,例如实现由 JavaScript 驱动的前端全栈项目。在本文中,我们将通过一个 Serverless 全栈项目示例,分享相关的心得与经验。
为什么要使用 Serverless
传统意义上的 Web 应用需要自己购置服务器、维护与升级系统,同时还需要处理多用户的并发请求以及云环境下的高可用性等问题。这些问题不可避免地增加了开发的难度和复杂度。
而 Serverless 架构则可以解决这些繁琐的问题。它通过将计算资源与存储资源实现抽象化,并把架构的细节都交由第三方服务提供商去处理,大大降低了开发、运维、成本等方面的工作量。
另外,Serverless 服务计量精确且按需付费,没有闲置时间的额外花费,而且无论是规模大还是小,都可以自适应调整所需的硬件资源,提高了 IT 系统的利用率。
Serverless 全栈项目示例
接下来我们将以一个简易的全栈项目示例来探讨如何使用 Serverless 架构。
功能介绍
这个全栈项目是一个“精简版”的 Todo List 应用,具有以下功能:
- 用户可以进行注册和登录。
- 可以添加、编辑、删除待办事项。
- 可以标记和取消标记已完成的待办事项。
- 用户退出登录。
技术栈
以下是本项目用到的主要技术栈:
- 前端:React、Material UI、Axios、Redux、React-Redux、Redux-Thunk。
- 后端:Node.js、Express、Serverless Framework、Tencent Serverless。
- 数据库:Tencent COS(对象存储)。
- 登录认证:JWT(JSON Web Token)。
实现思路
- 前端部分
在前端部分中,我们使用了 React 作为开发框架,同时搭配 Material UI 的组件库,提高了 UI 的可读性以及页面交互的的友好度。
为了方便管理状态,我们使用了 Redux 进行数据管理,并通过 Redux-Thunk 进行异步数据处理,使用 Axios 作为数据请求方式。
- 后端部分
我们使用 Node.js Express 框架开发后端,Serverless Framework 管理和部署 Cloud Function。在本项目中,我们使用了 Tencent Serverless,作为 Serverless 提供商,使用腾讯云存储服务 COS 存储数据。
对于登录认证部分,在客户端使用 JWT 进行登录认证,服务端解析之后做相应的处理。
代码示例
- 前端代码
-- --------- ------ ----- ---------- - ------ ------ -- ----- -------- -- - ----- ------ - - -------- - -------------- ------- --------- - -- --- - ----- -------- - ----- ----------------------------------- ----- -------- ---------- ----- ------------ -------- ------------- --- - ----- ------- - ---------- ----- ----------- -------- - ---- -------------------------- ------- --------------------- - --- - --
- 后端代码
------------------ ----- ----- ----- ---- -- - --- - ----- ---- - ----- ----------------------------- -- ------- - ------ ---------------------- ---- ----- --- ------ --- - -- --------------------- --- ------------ - ------ ---------------------- ---- ----- --- ----------- --- - ----- - ----- ----------- - - --------- --------- - ----- ---------------- - ------------ ----- ------------ --------------- - ----- ----- - --------------------------- ---------------------------- -------- - ---
实践经验
- Serverless 部署时尽量使用脚本自动化完成。这可以让开发者将更多的精力放在代码编写上,减轻部署流程带来的压力。
- 将 cloud function 进行拆分,实现函数逻辑的单一性,同时数据进行分类管理,可以提高代码可读性与可维护性。
- 多使用触发器可以降低响应时间,提高服务稳定性,同时减少无效的计算费用。
- Serverless 可以有效地减少资源浪费,通过开启天然弹性云计算,维护成本变得更加经济实用。
结论
本文简单介绍了基于 Serverless 架构的全栈项目开发,分享了在应用该架构过程中的经验以及代码示例。通过使用 Serverless 架构,我们可以在开发效率、成本、资源管理等方面获得很大的优势,同时也更加适应未来的云计算技术发展趋势。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/673494160bc820c58249f434