全栈开发:如何确定某些代码应该放在前端还是后端?

时间:2018-12-27 19:09:13

标签: frontend backend api-design

例如,假设您正在构建类似Plex / Kodi的Web应用程序。您的后端包含一个在/ movies上具有CRUD API的数据库,因此GET / movies返回数据库中的所有电影,GET / movies /:id通过ID返回特定的电影,等等。现在,您需要实现对影片类型,标题,发行日期等。前端应该只是GET / movies然后进行排序,还是后端应该提供新的API方法,例如GET / movies / {byTitle,byGenre,byReleaseDate},该API方法返回已排序的清单?

这是一个特定的示例,但是我也想知道如何在使用完整堆栈时决定如何将代码放置在一般位置。如果绝对必须,事情应该只在客户端吗?

2 个答案:

答案 0 :(得分:1)

要回答您的最后一个问题:是的,通常,仅将逻辑放在客户端上作为最后的选择,或者使UX响应更快(但请提供替代方法!)。

在您的特定情况下,您可能考虑的是电影的样本集很小。实际上,使用IMDB之类的文件,将整个电影数据库发送到客户端绝对是不可能的,因为(即使没有缩略图之类的任何媒体)它的大小也要数百MB。

这是数据库系统的工作–不仅可以有效地存储数据,而且可以高效,快速地查询,排序,过滤和检索数据。直到最近,才对前端进行过滤和排序。当时,由于JavaScript在所有主流浏览器中得到广泛支持和更高性能,框架变得更加强大。

要考虑的另一件事是可访问性。尽管主流浏览器都广泛支持JS,但台式机/笔记本电脑/电话之外还有其他设备。具有互联网支持的电子阅读器,视障人士使用的屏幕阅读器,较旧的浏览器;选择通过以下方式禁用JavaScript的人: NoScript可以提高隐私性(请参阅TorBrowser)。这些可能只是市场的一小部分,您的目标受众可能根本不包括它们,但这是需要考虑的事情。设计良好的网站仅在可用时才使用JavaScript,并在必要时使用非JS解决方案(不幸的是,近年来情况不那么如此)。

答案 1 :(得分:0)

为了更好地使用后端,以便更好地进行数据提升,过滤,排序,混合,合并和充实,它将有能力进行这项工作。

使用客户端逻辑来了解客户端功能以及如何最好地呈现信息。

客户端越薄,越易于在浏览器,设备等之间移植。