在角度应用程序中从后端创建数据模型有用吗?

时间:2018-10-25 16:10:46

标签: angular model entity

我仍在学习Angular,但是我也有机会参与大型应用程序的开发,前端使用Angular 5,后端使用Java。

问题是关于在角度应用程序中创建模型。 Java开发人员试图说服我,与在后端使用相同的模型结构在HTML模板中引用它时,与在IDE中进行自动建议相比,将给我带来更多的好处。

不幸的是,我并没有看到太多的好处,或者至少没有得到多少回报,我无法花时间为后端的任何响应生成所有模型。

假设我有API,它会向我返回如下内容:

{ 电子邮件:“测试”, firstName:“测试” lastName:“测试” uuid:2 }

现在,我应该为此创建一个模型,如下所示:

export class User {
    email: string;
    fisrtName: string;
    lastName: string;
    uuid: number;
}

这样做的目的是什么?这种方法有什么好处? 而且,已经存在相同的数据结构(在后端称为实体),所以为什么要在前端创建相同的代码?

我不必立即处理接收到的数据,而必须为每个响应创建一个模型,包括为每个模型创建另一个文件,然后使用它们。

我很确定这样做是因为Angular使用Typescript,并且eveything应该被“键入”,但是这种说法也不能说服我,因为我仍然看不到使用它们的任何好处。

缺点是正在创建额外的逻辑,更多文件和后端已经存在的重复代码。

也许是因为不了解前端的动态性质和不同的抽象吗?

后端必须通过实体来管理摘要,而前端则要管理视图,并提供已经准备好的数据,这些数据应该从后端撤消。这就是为什么我认为后端肯定应该保留适当的实体来创建模型,但是为什么当我们管理不同的抽象时,前端应该这样做呢?

我阅读了这篇有关在Angular中处理模型的文章 https://nehalist.io/working-with-models-in-angular/ 但是作者只提到了这样做的两个原因。

1)第一个是关于更改模板中的某些内容以其他方式显示它。我在这里看不到任何好处,因为即使我将创建“ fullName()”之类的方法,但是如果客户说他/她现在只想拥有“ firstName”,则必须进行相同的工作来进行更改在所有模板中都可以使用。

2)第二个问题是到处都是“类型化”,我看不出有什么很好的理由说明为什么我做的所有事情都应该“类型化”,这不是Java,C ++或任何其他低级语言。我们还将基于已准备好的数据维持观点。

希望我能清楚地解释我的问题,并感谢您的任何解释。

2 个答案:

答案 0 :(得分:1)

键入都是为了方便,TypeScript的出现是有原因的。

除其他事项外,键入可以使您的IDE轻松为您提供IntelliSense,并防止您在开发过程中混淆字段名称。它们还使您和其他人更容易了解应用程序中正在传递的信息类型,并为数据流定义规则。

您的后端类型多久更改一次?如果不是那么经常,并且如果您不使用动态数据,那么我将花一些时间实现一个简单的接口(不必是一个类),以充分利用TypeScript所提供的功能。 >

答案 1 :(得分:0)

例如,您可以使用swagger代码生成器从相同的swagger配置生成Java和Typenscript模型对象。如果有人更改了模型,您将得到一个不错的编译错误,而不是讨厌的运行时错误,这可能根本没有注意到。

即使模型是手工编写和更新的,您也会遇到编译错误,而不是运行时错误,并且如果忘记了某些内容,将会导致构建失败。或者不同分支上的同事不知道模型更改,并将其更改合并到主分支中。在这种情况下最好获得编译错误