gpt4 book ai didi

javascript - 将逻辑放入 javascript 与主框架的一般准则

转载 作者:行者123 更新时间:2023-12-02 18:29:45 24 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

8年前关闭。




Improve this question




我知道这个问题可能已经结束,但我真的很难决定应该在 jQuery、AJAX 请求或基本框架设计中实现搜索功能的哪些部分。

一般来说,我正在查看的三个任务是执行新的搜索查询、应用过滤器/排序和分页。目前所有这些功能都由 Django(这是我正在使用的框架)处理,但我发现这种方法既慢又不灵活。我意识到其中的某些部分我真的应该移动网站的 javascript 端,但我无法决定在哪里区分,我想知道是否有一套 Web 标准来帮助指导我。

执行搜索查询:基本上我在这里所做的只是以几种形式收集值,然后将 JSON 对象发布到 REST api,将结果以 JSON 形式返回。

过滤器/排序:我可以通过在稍微不同的端点对相同的 REST api 进行新的 AJAX 调用来进行过滤,或者通过基于 JSON 对象中的数据过滤旧的结果列表来进行过滤。对于排序,我目前有一个 python 模块,它以多种不同的方式对数据进行排序,但这需要对每个不同的排序都有一个新的 get 请求,而且逻辑很简单,很容易转移到 Javascript

分页:这里相当标准,有一个更改,即我可以通过进行另一个 AJAX 调用来实现分页,因为我正在使用的 REST api 让我可以定义我想要返回的答案的确切范围,但如果我想使用非标准排序它不会真正起作用。现在我正在使用 Django 的 Pagination这可行,但我觉得如果我使用 jQuery 解决方案进行分页,应用程序会更轻松。

我意识到这些响应将部分基于意见,但我真的在寻找为什么我应该选择其中一些选项而不是其他选项的具体原因,例如安全问题、性能或与 Web 标准的显着偏差。

最佳答案

关于 Django 缓慢

Currently all of these features are handled by Django (which is the framework I'm using) but I've found that this approach is both slow and inflexible.



你的意思是你正在通过 Django 的 ORM 执行搜索?如果是这样,有两个原因可能会变慢。
  • 您正在查询未编入索引的字段。
  • 您正在尝试进行全文搜索(或使用 __icontains ),这在任何数据库中都很慢。

  • Django 的 ORM 是围绕数据库的垫片。它与您使用的数据库具有相同的性能和灵 active 限制,只是使用了更好的 API。如果您想要搜索性能和灵 active ,请使用针对搜索优化的数据存储,这使我...

    执行搜索查询

    你看过 Haystack ?它提供了一个定制的 API,用于对您的数据执行搜索,并与针对搜索速度和灵 active 进行了优化的后端集成(我最喜欢的是 elasticsearch)。

    如果您不想在堆栈中添加额外的技术,并且正在使用 postgres,为什么不查看 GIN 和 GIST 索引以进行全文搜索。不过,您将需要使用一些扩展来管理它,并且您必须学习分析您的查询,以便在需要的地方添加额外的索引。

    过滤器/排序

    始终在服务器上执行此操作。除非您想将整个数据库的查询结果加载到浏览器中以进行过滤/排序,否则您必须在服务器上执行此操作,这样您就可以尽早丢弃不需要的数据。

    分页

    django内置的分页系统可能有点欠缺,但是Haystack提供了自己的分页,而且总有好用又成熟的 django-paginator .

    笔记

    JQuery 是一种使您的搜索页面更加简洁的非常好的方法,但是将所有内容都移到浏览器中并不能解决您的问题。在服务器端使用您可以使用的工具使您的 API 更快/更灵活,然后使用这种额外的灵 active 使客户端变得更好。

    关于javascript - 将逻辑放入 javascript 与主框架的一般准则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17949095/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com