在较新版本的JavaScript中,我知道如果你想在JavaScript中创建和createElement()
元素,那么你必须使用appendChild()
。然而,我偶然发现了这种使用Jquery创建html元素的方法,我想知道它是否过时了?
$("#options").html("<option value='Millimetre'>Millimetre</option>")
谢谢你的回答!
发布于 2020-09-04 05:58:20
这并不是说它过时了,而是这种语法依赖于jQuery库,而且jQuery仍然关心命令式DOM操作。如今,大多数UI框架都使用声明性模式,因为它们更易于开发人员创作和推理。声明性模式使复杂性更接近我们可以处理的程度,而不是要求我们的大脑更接近突变逻辑的复杂性。
但我们可以去掉jQuery并做基本上相同的事情:
.innerHTML
创建包含HTML标记的字符串
人们不喜欢使用HTML字符串是有原因的,它有时被称为“标签汤”:
也就是说,tag soup有一个非常大的好处:更好的运行时性能。DOM操作通常是javascript在浏览器中执行的最慢的事情之一。我最近没有运行测试,但在过去,一次DOM操作通常需要大约100ms。这看起来可能很快,但如果您向文档中添加数百或数千个节点,那么时间加起来可能会有几秒钟。设置innerHTML
也是一个DOM操作,但是这个操作可以一次创建、修改或删除成百上千个元素。是的,添加数千个元素的innerHTML
操作可能比只添加5个元素的innerHTML
操作慢,但它仍然可能比使用单个操作添加每个元素快至少一个数量级。
少担心你正在做的事情是“酷”还是“尖端”。专注于你是否使用了正确的工具来完成工作,该工具是否使你的工作变得更容易或更难,该工具是否在你所关心的所有平台和时间跨度上都是可靠的。
取悦酷孩子不是你的工作。你的工作就是以最明显的方式,为正确的理由,写出能做正确事情的软件。
发布于 2020-09-04 06:03:25
几乎所有关于Jquery的东西都被认为是过时的,这就是为什么像Github和frameworks as Bootstrap这样的网站正在放弃使用Jquery。
不过时的代码实际上是自己用createElement()
处理DOM (这是Jquery在幕后做的),但正如您所说的那样,自己做这些事情会变得相当复杂
因此,替代方案是:
并不是说Jquery是无用的,它仍然可以完成工作,但有许多原因不再使用,其中大多数原因是因为JS获得了许多现在是本机的新功能,并且不需要使用Jquery提供的更多代码来重新实现。
https://stackoverflow.com/questions/63735503
复制