如何在前端和后端重用业务逻辑



我有一个稍微复杂的控制流,其中有一堆if语句,列出了当表单中的某些字段需要高亮显示(使用不同的颜色)时,字段也会根据某些参数自动填充的步骤;除此之外,不同的字段需要显示在不同的输入上。

我还需要在后台使用相同的逻辑来生成报告等。

我试图将逻辑提取到一个属性文件中,然后让后端和前端读取该文件,并在必要时实现逻辑。

然而,过了一段时间,这变得太难了,我最终在我的属性文件中写了代码:

rules = [{field: 'xyz', 
conditions: [{value: 50, 
highlight_fields: {color: 'red', fields: [...]}},
show_fields: ....
custom_rule: ....
{value_between: [90,100], 
highlight_fields...}]}
...

您可以想象,随着每种类型的value_XYZ需求,它会变得非常大。然后,我还需要将该规则添加到属性文件读取器中(在两侧)——这违背了将逻辑封装到单独的属性文件中的目的。

有没有什么合理的方法可以实现业务逻辑的干净封装,可以跨不同的技术使用?

我可以处理后端的一切,让前端调用ajax调用后端系统来获得正确的高亮显示规则,但这可能不够快。

当然,您不希望在双方都使用这种检查,因为这违反了DRY原则并增加了应用程序的复杂性。

但对属性文件使用这种方法也是一种开销。如果有人试图理解这种逻辑,就会感到沮丧。

将此逻辑存储在后端端看起来并不是一个糟糕的解决方案。在现代网络中,像通过AJAX进行服务器端验证这样的常见任务应该不会成为问题。因此,做一个简单的概念证明是值得的,以确保这种方法会让你满意。

如果延迟对您来说非常关键,您可以查看网络套接字技术。与AJAX相比,较低的延迟是它的优势之一。

最新更新