这是在前端处理独特客户行为的好解决方案吗?

Is this a good solution for handling unique customer behavior in frontend?

背景:

我们有一个 CMS 前端 (Angular2+),它为具有相同构建的所有客户端提供服务(每个租户都有自己独特的 URL 来访问他们的页面,与存储在数据库中的 URL-slugs 映射).如果足够通用,可以通过模块化布局或数据库标志轻松实现处理 UI 要求,或者自定义 CSS 作为最后的手段。

对于行为要求,到目前为止,我们一直使用无代码规则系统,我们可以在其中组合条件和操作,这些条件和操作存储在数据库中,稍后在前端执行。

但是,添加 非常 特定行为更难,因为它通常会通过以下任一方式实现:

A) 使用更多边缘案例扩展当前代码库,随着时间的推移将难以维护,或者

B) 为 CustomerA、CustomerB 等添加自定义代码,这些代码仅为特定客户加载。

选项 A 似乎是错误的,因为缩放比例不佳,所以我将跳过它。 选项 B 仍然添加代码进行维护,但可能是最佳选择。

提议:

使用选项 B,我的计划是设置包含客户特定代码的 Firebase 函数,同时确保函数遵守参数和 return 值的 Typescript 接口。

示例: 假设我们正在计算价格。然后我可以做类似的事情:

let productData: IProductData = getProductData();
let priceResult: IPriceResult = null;
if (hasCustomPricingFn) {
    priceResult = await customPricingFirebaseFn(productData);
} else {
    priceResult = await standardPriceFn(productData);
}

每当用户进行更改时,都会不断调用此代码,假设最坏的情况是每个用户会话 1000 次。

优点:

缺点:

这是一个好的解决方案吗?

通过开发插件架构解决了这个问题。这些插件在前端源代码中,但按需加载。