首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前端后端类交换

前端后端类交换
EN

Stack Overflow用户
提问于 2017-03-31 13:50:38
回答 2查看 853关注 0票数 1

我正在使用Angular2和PHP编写应用程序(主要是REST)。问题是,对于角和php,我有几乎相同的类。例如,在php中,我与一些字段(如title、description、provider )有一个类契约。此外,我还有api端点getContract()来返回所有这些字段。我有相同的角度类,所以我可以在这里添加一些逻辑,比如getter和setter。每次写两个类似的类真的很烦人,如果我需要修改一些东西,我必须修改两次。但是现在我有了一个新的要求,用API创建分离的项目,所以现在我必须每次创建3个类。

所以,如果问题是清楚的,我想谈谈可能的解决方案,在谷歌一段时间后,我什么也没找到,现在我已经迈出了第一步,希望有人能让我朝着正确的方向前进。那里的最佳做法是什么?可能是在json中存储类,然后用角和php解析?谢谢你的建议

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-31 15:14:27

一些重复的感觉代码并不是https://en.wikipedia.org/wiki/Don't_repeat_yourself意义上的重复。

换句话说,如果您必须在每个模型上多花10分钟,将字段从一个负责的类复制到另一个类,可能是用另一种语言,另一种责任,这是非常标准的。没问题的。而且,,这不是虚荣的重复。--

您的前端类和后端类可能是该死的-几乎相同;但是,它们执行不同的事情。,它们共享字段的事实几乎是巧合的,而且也不能保证。在某些应用程序中,客户机和服务器模型可能会有很大的差异。

而且,值得注意的是,在许多框架中,重复甚至比您想象的还要糟糕!如果您将域中的服务器模型与DTO中的服务器模型分开,那么您可以很容易地拥有2到4个“完全相同”的服务器模型。而且,一些MVC客户端框架导致了类似的重复代码。(或者,您难道没有意识到模板是另一个不同语法的模型枚举吗?)

..。最后,一个非常健壮的应用程序可能最终会有4到6个或更多的底层模型的翻译。

自动模型/代码生成不是免费的。

假设所有对应的前端类和后端类基本上是“相同的”。花5分钟将字段从一种语法复制到另一种语法肯定会让人觉得很傻,但是如果你最终花一个月的时间想出一个解决方案来节省每个项目的一个小时,那么你的同事会觉得你更愚蠢。

当您的解决方案崩溃时,您也会感到非常沮丧,当代码生成器执行意想不到的事情时,您会“时不时”多花一两个小时。

即使你找到了一个现成的解决方案,你只有安装,有投资的时间。有一个学习曲线。会有维修的。A会有意想不到的问题。

从长远来看,你可能会节省时间;但是,你需要做那个数学。

尽管如此,还是有选择的。

  • 你可以找到一个播音器。比如这一个这一个这一个等。 .
  • 您可以从JSON、XML或任何您喜欢的格式加载JS/PHP中的基本模型,并追加您的逻辑。
  • 您可以从JSON、XML或任何您喜欢的格式生成基本的JS/PHP。
  • 您可以动态生成基本客户端模型。也就是说,只需使用服务器响应作为基本模型,并将客户端方法附加到其中。
  • 您可以动态生成基本服务器模型。也就是说,如果可能的话,你的服务器就像哑存储。也许它知道谁拥有什么..。但仅此而已。(只需确保服务器模型对于用户之间传递的对象是“智能的”。)
  • 您可以为切换到nodejs提供一个理由!

也许你晚上睡得更好,花更多的时间来避免任何重复。也许你会觉得你的测试套件不需要那么大。或者别的什么。

如果是这样的话,就去做吧。

但是,你所指的重复并不一定是徒劳的或不正常的。客户端模型和服务器模型应该做不同的事情,即使它们看起来和感觉上都是徒劳的。

票数 3
EN

Stack Overflow用户

发布于 2017-03-31 14:32:21

我的意思是完全尊重这一点--如果你在编写两个不同的类时有问题,一个是角类,另一个是后端类,那么你不应该使用角类。

角是一个单页的应用程序框架。这是一种构建web应用程序的不同技术,您可以在Javascript/Typescript中将用户界面构建为独立的应用程序。然后,该应用程序通过HTTP (在某些情况下是web套接字)与单独的服务器端应用程序进行通信。

因此,几乎按照定义,您将有两个应用程序。有些人(包括我自己)以各种各样的方式组合这些应用程序,以简化部署/源代码管理,但这只是为了方便,并且充分理解这两个应用程序仍然是独立的实体。

如果必须为您的前端和后端应用程序创建同名类的想法太痛苦了,那么老实说,我会坚持使用一个普通的web应用程序,其中用户界面直接从服务器应用程序获得服务,只需根据需要使用javascript来增强用户界面。(该用例对于角- AngularJS (即角1,也许,但绝对不是角版本2及以后)来说是非常不合适的)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43142410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档