跨域通信实现实时预览 需求背景 项目中存在一个复杂的代练服务模块,其服务详情页由运营人员手动配置。 由于涉及的功能繁多,如选项配置、联动逻辑、页面文案和折扣信息等,我们为其专门开发了一个配置工具。 此前的操作流程是:运营人员在工具中完成配置后,手动保存并跳转至预览页面查看效果。 这种方式无法实时反馈修改结果,操作流程冗长 2025-04-17 实践 #前端#javascript#typescript
逐步从 Pages 路由迁移到 App 路由 App 路由是 NextJS 13 引入的新特性。 它的功能相较于目前使用的 Pages 路由更加丰富,并且支持更多的特性。 例如它支持布局,服务器组件等特性。 具体可以查看官方的文档。 App 路由是可以和 Pages 路由共存的。 这就意味着我们可以逐步进行迁移,逐步替换。 NextJS 会优先 2025-04-09 实践 #前端#javascript#typescript#框架
新版代练服务功能的设计 前言 目前,项目已有代练功能模块,但随着业务发展,现有功能已无法满足需求。因此,我们需要对其进行优化,以提升功能的灵活性与可维护性。 此次更改基于上一版设计进行改进。 问题分析 原有的代练功能通过渲染组件列表实现,不同类型的组件(如按钮、下拉框、输入框等)根据类型进行渲染。但该设计存在以下问题: 组 2025-04-01 实践 #前端#typescript#javascript
代练服务功能设计 需求背景 项目会提供一些游戏相关的服务。 这其中,就包含有代练这一项服务。简单来说,就是玩家雇佣我们去代替玩家本人进行游戏。 通常是在一些需要长时间投入的游戏中,玩家会选择代练。 需求分析 代练的种类有很多,比如: 完成游戏内的任务。 通关副本。 打败 Boss。 推进游戏剧情。 提升等级。 而每个 2025-04-01 实践 #前端#javascript#typescript
实现动态表单 需求背景 项目是一个电商类站点。 售卖的商品都是虚拟化物品或服务。 当用户在购买站点售卖商品时,需要填写一些信息。 而根据商品类目的不同,所需要填写的信息也会有所不同。 比如在商品类目 A,用户需要填写邮箱,名称即可。 而在商品类目 B,用户需要填写邮箱,平台,平台账号,平台密码等信息。 随着商品类 2025-04-01 实践 #前端#javascript
函数式编程的 Monad Monad 是函数式编程中的一种概念,它为数据提供了一种结构化的处理方式。 简单来说就是封装一组方法给传入数据使用,但与对象不同,Monad 是不可变的,每次进行修改都会返回一个新的 Monad。 在函数式编程中,我们通常需要避免副作用。但在一些常见的,例如网络请求,输入输出和文件读写等场景,网络会 2025-03-21 编程 #编程#软件开发#设计思想
从零开始实现一个 NestJS - 路由守卫 本系列的相关代码存放于 InkSha/expressive: 一个简易的仿造 Nest.js 的 NodeJS 后台框架。 本节,我们将实现路由守卫功能。 以下是一个用于进行 token 验证的守卫: import { BadRequestException, Guard } from '@expr 2025-02-27 实践 #设计思想#后端#typescript#框架
从零开始实现一个 NestJS - 管道 本系列的相关代码存放于 InkSha/expressive: 一个简易的仿造 Nest.js 的 NodeJS 后台框架。 简单来说就是充当将数据从 A 传递到 B 的一个媒介。 而我们可以在这个传递过程中,对数据进行一些处理。 以下是一个简单的将数据转换为数字的管道。 export class T 2025-02-27 实践 #后端#typescript#框架#设计思想
从零开始实现一个 NestJS - 中间件 本系列的相关代码存放于 InkSha/expressive: 一个简易的仿造 Nest.js 的 NodeJS 后台框架。 本节,我们将实现中间件功能。 以下是一个用于打印请求的中间件例子。 import { Middleware } from '@expressive/common' import 2025-02-27 实践 #设计思想#后端#typescript#框架
从零开始实现一个 NestJS - 配置管理 本系列的相关代码存放于 InkSha/expressive: 一个简易的仿造 Nest.js 的 NodeJS 后台框架。 这里使用到了 dotenv 库。 大体内容如下: import { config } from "dotenv" import fs from "node:fs" import 2025-02-27 实践 #设计思想#框架#typescript#后端