我正在开发一个项目,在实现一些JS过滤之间存在一些争论,我想问你们这方面的一些意见。
今天我们有这个站点显示了一长串重复的数据条目,一些JS过滤对用户来说很有用。通常的东西:关键字,订单,日期,价格等。问题不在于使用JS,这是显而易见的,而是数据的来源。一个人辩称应该使用HTML本身,并且JS应该通过它来解析,从而实现用户所需的过滤。另一个人辩称我们应该使用服务器中生成的JSON,并且JSON应该是数据的来源。
你们对此有什么看法?有什么优点和缺点?
作为最终请求,我希望您能够提供最丰富的信息,因为您的答案将被公司所有人使用和引用。 (是的,这就是我们如何信任你!:)
答案 0 :(得分:1)
我认为如果数据以JSON格式提供,然后使用javascript从该JSON生成演示文稿HTML或该数据视图,则会更加清晰。
这符合保持核心数据结构与视图分离的更经典的风格。通过这种方式,您可以生成所有类型的视图,而无需不断地修改/修改存储,访问和操作数据的方式。您甚至可以构建类和方法来为数据开发一个完全独立于数据显示方式的干净界面。
我看到的唯一问题是浏览器是否支持javascript并且该浏览器是所需的查看器。在这种情况下,您必须包含服务器的默认HTML版本,显然不会被操纵,JSON将被忽略。
中间点是您在呈现的HTML中包含JSON和“默认”初始HTML视图。视图很快出现,非JS浏览器可以看到有用的东西。但是,然后对视图的任何未来操作(例如,排序)都使用JSON数据并从JSON数据生成新的干净视图。然后,不会从HTML视图中“解析”任何数据。
在较大的项目中,这也可以促进表示与数据操作的分离,因此不同的人可能会创建HTML视图而不是操纵数据(如排序)。
答案 1 :(得分:1)
我会对服务器进行多次ajax调用,并让它返回已排序/过滤的数据。如果您的服务器后端速度快,那么它就不会非常繁重,您甚至可以在请求之间缓存数据。
如果您只有50-100个项目,那么将它全部发送到客户端并使用javascript排序并过滤它是合理的。
有助于做出决定的一些考虑因素
答案是,这取决于你的情况。
答案 2 :(得分:1)
正确的行动是品味和系统架构以及实用性的问题。
我会使用JS和JSON动态生成页面 - 这些天我认为你可以放心地假设大多数浏览器都启用了Javascript - 但是你可能需要来为抓取工具做好准备(GoogleBot) ,Bing,Ask等)因为他们可能没有完全执行所有JS,因此如果您确实找出某种支持这些的异常,则可能不会对该页面编制索引。
使用JS + JSON还意味着您可以使代码正常运行,以便在客户端完成对移动设备的支持,而无需在网络服务器上创建任何特殊内容。
作为替代方案进行DOM操作不会是我最好的朋友,因为页面控件和布局的逻辑分为两个部分 - 部分位于Web服务器上的View控制器中,部分位于JavaScript中 - 在我看来,将它放在一个地方并让视图控制器只生成JSON并为根页等服务器更好。
然而,这是一个品味问题,我不确定我是否可以说有一个正确和最佳的解决方案。