javascript – 在单页应用程序中,在服务器上进行排序和筛选是否标准?

我正在使用ReactJS开发一个新的应用程序,并在客户端实现排序/过滤.但是,在浏览了更大的开源SPA之后,我看到许多人通过API在服务器端做这件事.除了表现之外,它们是否有助于做客户端? 最佳答案 这主要取决于数据的总潜在大小.

客户端

如果这是你永远不会超过的东西,例如列表视图需要50个项目,而不需要太多数据,然后您可以将它们全部发送到客户端.

这方面的一个例子是强制规模有限的子列表.例如,如果您的网站是商店,并且您只能销售50件商品,那么您可以立即将其发送出去.这里的缺点是,如果您稍后将其更改为更高的数字,则需要使用服务器端分页/排序重写它.

服务器端

通常在应用程序中,您可能在列表中拥有数千或数百万个项目.这方面的一个例子是questions/unanswered,其中每个项目需要大量数据来表示,并且在撰写本文时超过200万个项目.

尝试一次将200万个stackoverflow问题加载到客户端是不可行的,即使在1000个项目上,对于您的服务器和数据库也要贵得多.

默认情况下,应该对数据库进行排序/过滤,因为通常需要允许扩展,即使对于单个用户也是如此.在特定情况下,您可以将所有内容作为优化加载到客户端.

客户端数据库

当网络成为您的瓶颈时,这尤其有用,用户可能会在离线时长时间使用此应用程序.

当应用程序启动时,您下载大量数据,并将其存储在IndexedDB(或简单对象,具体取决于数量)中.然后,您可以与此数据进行交互,而不受服务器端api或网络性能和可靠性的限制.

你可能永远不需要这个,但我认为值得一提.我听说过这个部署在网络软件中供接待员和其他办公室工作,其中很长的启动时间无关紧要(只有第一次启动会很长). Facebook广告在他们的“电源编辑器”中使用它,它实际上下载了所有配置,然后在完成后重新上载所有内容.

点赞