Javascript 关于使用JS过滤内容的意见

Javascript 关于使用JS过滤内容的意见,javascript,json,Javascript,Json,我正在做一个项目,在如何实现一些JS过滤和我想问你们一些关于这方面的意见之间有一些争论 今天,我们有一个网站,它显示了一长串重复输入的数据,一些JS过滤对于用户来说是很好的导航方式。常见的东西:关键字、订单、日期、价格等。问题不在于JS的使用,这是显而易见的,而在于数据的来源。一个人认为应该使用HTML本身,JS应该通过它进行解析,从而实现用户想要的过滤。另一个人辩称,我们应该使用在服务器中生成的JSON,JSON应该是数据的来源 你们怎么看?利与弊是什么 作为最后一个请求,我希望您尽可能提供最

我正在做一个项目,在如何实现一些JS过滤和我想问你们一些关于这方面的意见之间有一些争论

今天,我们有一个网站,它显示了一长串重复输入的数据,一些JS过滤对于用户来说是很好的导航方式。常见的东西:关键字、订单、日期、价格等。问题不在于JS的使用,这是显而易见的,而在于数据的来源。一个人认为应该使用HTML本身,JS应该通过它进行解析,从而实现用户想要的过滤。另一个人辩称,我们应该使用在服务器中生成的JSON,JSON应该是数据的来源

你们怎么看?利与弊是什么


作为最后一个请求,我希望您尽可能提供最详尽的信息,因为您的回答将被公司所有人使用和引用。(是的,这就是我们信任你的方式!:)

我认为如果数据是用JSON交付的,然后用javascript从JSON生成该数据的表示HTML或视图,会更干净

这符合将核心数据结构与视图分开的更经典的风格。通过这种方式,您可以生成所有类型的视图,而无需不断修改存储、访问和操作数据的方式。您甚至可以构建类和方法,在数据上开发一个完全独立于数据显示方式的干净接口

我看到的唯一问题是,如果浏览器不支持javascript,并且该浏览器是所需的查看器。在这种情况下,您必须包含来自服务器的默认HTML版本,该版本显然不会被操作,JSON将被忽略

中间点是在呈现的HTML中包含JSON和该数据的“默认”初始HTML视图。视图很快就会出现,非JS浏览器可以看到一些有用的东西。但是,以后对视图的任何操作(例如排序)都会使用JSON数据,并从JSON数据生成一个新的干净视图。然后,不会从HTML视图中“解析”任何数据


在更大的项目中,这也有助于将表示与数据操作分离开来,这样不同的人可以创建HTML视图,而不是操作数据(如排序)。

我会对服务器进行多个ajax调用,并让服务器返回已排序/过滤的数据。如果你的服务器后端速度比它不会很累,你甚至可以缓存请求之间的数据

如果您只有50-100个条目,那么将其全部发送到客户端并使用javascript对其进行排序和过滤是合理的

有助于作出决定的一些考虑因素

  • 信息是否敏感且独特?(这将使我的第一点中的缓存无效并受益)
  • 最常见的请求是什么?您是否为此进行了优化
  • 有多少数据?(数十行、数百行、数千行、数百万行)
  • 你的网站必须关闭JavaScript吗?(支持旧浏览器?)
  • 您的开发团队在前端还是后端这样做更舒服

答案是这取决于你的情况。

正确的做法是品味、系统架构以及实用性

我会使用JS和JSON动态生成的页面——现在我认为您可以放心地假设大多数浏览器都启用了Javascript——但是您可能需要为爬虫程序(GoogleBot、Bing、Ask等)做准备因为它们可能不会完全执行所有的JS,因此如果您确实发现了某种支持这些JS的异常情况,它们可能不会索引页面

使用JS+JSON还意味着您可以使代码正常工作,以便在客户端完成对移动设备的支持,而无需Web服务器创建任何特殊内容

作为替代方案进行DOM操作并不是我最好的朋友,因为页面控件和布局的逻辑分为两个部分——部分在Web服务器上的视图控制器中,部分是JavaScript——我认为最好将它放在一个地方,让视图控制器只生成JSON,服务器端生成根页面等等

然而,这是一个品味的问题,我不确定是否有一个正确和最好的解决方案