代码之家  ›  专栏  ›  技术社区  ›  Alexar

Javascript和性能,使用jQuery还是Javascript?

  •  1
  • Alexar  · 技术社区  · 15 年前

    我有一个大数据应该显示在一个表中。

    以下是我使用的示例数据:

    var aUsersData = [[1, "John Smith", "...."],[...],.......];
    

    有一个沉重的脚本正在运行,我应该继续还是停止? "

    我不想让我的访客看到警告。如何提高性能?jQuery?纯脚本?还是你建议的另一个图书馆?

    4 回复  |  直到 7 年前
        1
  •  2
  •   John Boker    15 年前

    您可以使用此处的方法显示进度条,而不必让浏览器锁定您。

    http://www.kryogenix.org/days/2009/07/03/not-blocking-the-ui-in-tight-javascript-loops

    我在本页上几乎使用了这种方法:

    http://www.bacontea.com/bb/

    使浏览器在加载时不挂起并显示反馈。

        2
  •  2
  •   Kaleb Brasee    15 年前

    jQuery通常不会让事情变得更快,只是更简单。我使用jQuery填充表,但它们非常小(最多2列乘40行)。您在表中填充了多少数据?这可能是限制因素。

    如果您发布一些表填充代码,我们可以看看是否有可能以任何方式提高性能。

        3
  •  1
  •   T.J. Crowder    15 年前

    两条建议适用于任何情况:

    方式 你正在做这件事,它会对你的表现产生很大的影响。这似乎有点违反直觉,但对于大多数浏览器,构建一个大字符串,然后设置 innerHTML 容器的属性通常比使用DOM更快 createElement 反复运行函数以创建每一行和单元格。最快的总体趋势是将字符串推送到数组上(而不是重复串联),然后 join 阵列:

    var markup, rowString;
    markup = [];
    markup.push("<table><tbody>");
    for (index = 0, length = array.length; index < length; ++index) {
       rowString = /* ...code here to build a row as a string... */;
       markup.push(rowString);
    }
    markup.push("</tbody></table>");
    document.getElementById('containerId').innerHTML = markup.join("");
    

    (这是原始JavaScript/DOM;如果您已经在使用jQuery并且更喜欢它,那么最后一行可以重写 $('#containerId').html(markup.join("")); )

    createElement 因为它允许浏览器通过直接操作其内部结构来处理HTML,而不是响应分层在其上的DOM API方法。和 参加 这很有帮助,因为字符串不会不断地被重新分配,JavaScript引擎可以优化 参加 手术结束了。

        4
  •  0
  •   Mic    15 年前

    您可以尝试使用JS模板引擎,如 PURE (我是主要贡献者)

    如果您喜欢<%…%&燃气轮机;在语法类型方面,还有很多其他JS模板引擎可用。