Javascript 在变量中存储HTML代码(浏览器更快?)

Javascript 在变量中存储HTML代码(浏览器更快?),javascript,jquery,html,performance,Javascript,Jquery,Html,Performance,两者之间有区别吗 这个 ... '; ... var manyHtmlCode='。。。许多Html代码; //onclick->将其写入DIV->$('myDiv').append(manyHtmlCode); 还有这个 <html> ... <div id="myDiv" style="display:none;"> ... many Html Code ... </div>'; ... </html> // oncli

两者之间有区别吗

这个


...
';
...
var manyHtmlCode='。。。许多Html代码;
//onclick->将其写入DIV->$('myDiv').append(manyHtmlCode);
还有这个

<html>
   ...
    <div id="myDiv" style="display:none;"> ... many Html Code ... </div>';
   ...
</html>
// onclick -> show content $('myDiv').show();

...
... 许多Html代码;
...
//onclick->show content$('myDiv').show();
很明显,第二种解决方案在javascript中速度更快,但浏览器速度又如何呢? 如果body标记中的HTML代码更小,浏览器是否更快(例如,拖动div)


如果是这样,最好将不需要的HTML代码存储在JS变量中。我的问题是我有一个包含许多可拖动div的页面。当html代码更小时,Imho的拖动速度更好

我会使用第二个,因为它执行起来更快。(1次调用jQuery而不是2次)

如果您有太多的DOM项,那么我建议使用第一个。 假设要遍历DOM并查找元素,如果元素较少,则遍历所需的时间也会减少

我的建议是对代码进行基准测试。用最适合你的

你可以使用下面的工具


取决于你到底想要实现什么。是的,第二个显然会更快,因为jQuery取消隐藏的文档中已经存在HTML。而在第一种方法中,jquery实时写入内容

同样,可能有不同的方法来实现您正在尝试的目标,比如您可以使用ajax等将您编辑的div写入文件。。并将其从当前文档中删除。从而减少了文档中html的数量

我只是给你一个想法。。问题是你没有清楚地解释你想要达到的目标,没有给你最合适的解决方案

两者之间有区别吗

这取决于“是”的含义

在特定浏览器的特定版本上,其中一个会运行得更快。如果您愿意,您可以在五个或十个不同的浏览器版本上对它们进行基准测试,并找出哪一个通常获胜

那又怎样?用户将无法分辨差异;用户的计算机通常不做任何其他事情,因此没有必要节省CPU周期

我给所有程序员的建议——特别是给为浏览器编写的程序员的建议——是忽略时间和空间效率,直到你发现问题并专注于解决问题

  • 正确性——即使遇到意外的输入、底层平台的变化和类似的挑战,代码也能按设计执行
  • 可维护性——编写的代码可以随着需求的变化而更改;及
  • 可用性——代码提供了一个界面(对于最终用户代码来说是UI,对于库代码来说是API),允许对代码缺乏全面理解的用户仍然正确使用它

效率,呸。

第二种解决方案速度更快,原因有两个:

  • 这种方法中的HTML是“静态”HTML;它存在于对浏览器的响应中,不需要通过JavaScript解析或解释就可以添加到页面中
  • 在解析和呈现HTML时,浏览器会注意到
    显示:none
    ,而不会麻烦呈现该元素或其中的任何内容。这会加快页面的初始呈现速度,因为它实际上不会呈现很多HTML

  • 它还将在客户端浏览器中存储更少的内存。如果我错了,请纠正我,但是如果您将所有HTML存储在一个变量中并将其附加到DOM中,那么您将存储一个大的JS字符串(变量),并将生成的HTML附加到DOM中,而另一种方式是只将HTML存储在DOM中。这可能不是个问题。。只是说…@rlemon:是的,它将存储更少的内存:)-我认为第二个不会使用内存+1,因为“它取决于‘是’的含义”,并让我发笑-1因为这个问题是可以回答的,这里有一个明显的“更快”的方法。在web上用Javascript中的字符串构建所有DOM树是很糟糕的,并且认为这不能或不应该改进是危险的。
    <html>
       ...
        <div id="myDiv" style="display:none;"> ... many Html Code ... </div>';
       ...
    </html>
    // onclick -> show content $('myDiv').show();