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

时间:2013-12-24 13:17:28

标签: ajax design-patterns frontend backend properties-file

我有一个稍微复杂的控制流程,其中有一堆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调用以获得正确的突出显示规则,但这可能不够快就可以了。

1 个答案:

答案 0 :(得分:1)

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

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

在后端存储此逻辑看起来不是一个糟糕的解决方案。对于现代网络,通过 AJAX 进行服务器端验证等常见任务应该不是问题。所以有必要做一个简单的概念证明,以确保这种方法能满足你。

如果延迟对您至关重要,您可以查看 web sockets 技术。与 AJAX 相比,较低的延迟是其中一个优势。