【发布时间】:2013-01-11 19:36:09
【问题描述】:
我目前正在开发一个带有 Django/Python 后端的相当大的分析程序,并且正在使用 jQuery。
假设我所有的统计数据都基于“Person”的概念。查看概览统计信息后,有人可能想打开个人Person 并查看他们的统计信息。
目前我将 AJAX 请求发送回我的服务器,Django 获取此人,为他们呈现整个 DOM 树,然后返回它。 jQuery 获取返回的 <div> 并将其添加到文档 DOM 树中,并与任何其他打开的人一起。
所以每个Person 都有自己的 div,其中包含所有相同的元素,只是包含他们的信息。您正在查看的当前人是 display:block; 而我是 display:none; 任何其他人。任何需要返回服务器以获取更详细信息的元素(例如查看更详细信息的按钮)都使用 Django 的模板系统进行编码,并提供类似getMoreInformation('myUUID'); 的链接。我还想指出,我发现自己经常在元素 ID 中使用 UUID,因此 AJAX 可以在需要时找到并修改正确的人的信息。
我最近发现了 Knockout.js,我想知道在这种情况下使用它是否会更好,并且对速度等有一些担忧。
Knockout.js 似乎是“正确的做法”,因为它在后端数据与它在 Javascript 中的表示方式(模型到模型)而不是单个数据之间提供了更好的一对一关系具有为任何函数传递的 id 的 DOM 元素。更不用说它会大大减少 DOM 树中的元素数量。
但是,我的主要受众是 IE8,我担心 Knockout.js 存在性能问题。虽然目前我只是隐藏和显示与您正在调查的人相关的 div,但 Knockout.js 必须遍历所有 data-bind 并使用 Javascript 替换它们的内容。
在这种情况下使用 Knockout.js 有哪些性能问题?或者它们会很小以至于无关紧要吗?很难找到任何基准,是否有人在迁移到 Knockout.js 时遇到过较慢的 UI? (在“现实世界”应用程序中,更少的 DOM 元素 + Knockout.js 与更多的没有 Knockout.js 的 DOM 元素是我在这里寻找的。)
【问题讨论】:
-
knockout.js 比...什么更好?没有什么可比的。
-
@KevinB 会不会比我现在做的更好(前4段)?
标签: jquery ajax django dom knockout.js