我懂文件。写作被认为是坏习惯;我希望整理一份理由清单,提交给第三方供应商,告诉他们为什么不应该使用文档。编写分析代码的实现。
请附上申领文件的理由。下面是一个坏习惯。
我懂文件。写作被认为是坏习惯;我希望整理一份理由清单,提交给第三方供应商,告诉他们为什么不应该使用文档。编写分析代码的实现。
请附上申领文件的理由。下面是一个坏习惯。
当前回答
根据Google-Chrome Dev Tools的Lighthouse Audit所做的分析,
对于连接速度较慢的用户,通过document.write()动态注入的外部脚本可能会将页面加载延迟数十秒。
其他回答
可以将document.write()(和. innerhtml)看作是对源代码字符串求值。这对于许多应用程序来说非常方便。例如,如果您从某个源获取HTML代码作为字符串,那么只需“计算”它就很方便。
在Lisp的上下文中,DOM操作就像操作一个列表结构,例如通过执行以下操作创建列表(橙色):
(cons 'orange '())
而document.write()就像求值一个字符串,例如通过这样求值一个源代码字符串来创建一个列表:
(eval-string "(cons 'orange '())")
Lisp还具有使用列表操作创建代码的非常有用的能力(例如使用“DOM样式”创建JS解析树)。这意味着你可以使用“DOM样式”构建一个列表结构,而不是“字符串样式”,然后运行该代码,例如:
(eval '(cons 'orange '()))
如果您实现编码工具,例如简单的实时编辑器,那么能够快速计算字符串是非常方便的,例如使用document.write()或. innerhtml。Lisp在这个意义上是理想的,但是你也可以用JS做一些很酷的事情,很多人都在做,比如http://jsbin.com/
我不认为使用文档。写作根本就是一种糟糕的习惯。简单地说,对于没有经验的人来说,这就像一个高压。如果用错了,你就会被煮熟。有许多开发人员至少使用过一次这种或其他危险的方法,但他们从未真正深入研究过自己的失败。相反,当出现问题时,他们只是跳出来,使用更安全的东西。正是这些人对所谓的“坏习惯”做出了这样的声明。
这就像格式化硬盘驱动器,当你只需要删除几个文件,然后说“格式化驱动器是一个坏习惯”。
文档其实没什么问题。写作本身。问题是它很容易被误用。严重,甚至。
对于提供分析代码的供应商(如谷歌analytics)来说,这实际上是他们分发此类代码片段的最简单方法
它使脚本保持较小 他们不必担心重写已经建立的onload事件或包括必要的抽象来安全地添加onload事件 它非常兼容
只要你不尝试在文件加载后使用它,文件。在我看来,写作本身并不是邪恶的。
浏览器违反
.write被认为是浏览器违规,因为它会停止解析器呈现页面。解析器接收到文档正在被修改的消息;因此,它会被阻塞,直到JS完成它的进程。只有在这个时候,解析器才会恢复。
性能
使用这种方法的最大后果是降低性能。浏览器需要更长的时间来加载页面内容。加载时间的不良反应取决于写入文档的内容。如果您向DOM添加一个<p>标记,而不是将一个包含50个左右引用的数组传递给JavaScript库,您不会看到太大的区别(我在工作代码中看到过这种情况,导致11秒的延迟——当然,这也取决于您的硬件)。
总而言之,如果可以的话,最好避免使用这种方法。
有关更多信息,请参阅对document.write()进行干预
根据Google-Chrome Dev Tools的Lighthouse Audit所做的分析,
对于连接速度较慢的用户,通过document.write()动态注入的外部脚本可能会将页面加载延迟数十秒。