【问题标题】:How to reuse business logic on both front-end and back-end?如何在前端和后端重用业务逻辑?
【发布时间】:2013-12-24 13:17:28
【问题描述】:

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

【问题讨论】:

  • 您可以在 javascript 中创建一个小库并在服务器上生成所有特殊逻辑 (js)。生成逻辑将消除到处复制它的需要。

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


【解决方案1】:

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

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

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

如果延迟对您来说如此重要,您可以看看 web sockets 技术。与 AJAX 相比,较低的延迟是它的优势之一。

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多