首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这种在JavaScript中创建html元素的方法被认为过时了吗?

这种在JavaScript中创建html元素的方法被认为过时了吗?
EN

Stack Overflow用户
提问于 2020-09-04 13:47:00
回答 2查看 49关注 0票数 0

在较新版本的JavaScript中,我知道如果你想在JavaScript中创建和createElement()元素,那么你必须使用appendChild()。然而,我偶然发现了这种使用Jquery创建html元素的方法,我想知道它是否过时了?

代码语言:javascript
运行
复制
 $("#options").html("<option value='Millimetre'>Millimetre</option>")

谢谢你的回答!

EN

回答 2

Stack Overflow用户

发布于 2020-09-04 13:58:20

这并不是说它过时了,而是这种语法依赖于jQuery库,而且jQuery仍然关心命令式DOM操作。如今,大多数UI框架都使用声明性模式,因为它们更易于开发人员创作和推理。声明性模式使复杂性更接近我们可以处理的程度,而不是要求我们的大脑更接近突变逻辑的复杂性。

但我们可以去掉jQuery并做基本上相同的事情:

  1. 使用.innerHTML

创建包含HTML标记的字符串

  • 将该字符串插入到文档中

人们不喜欢使用HTML字符串是有原因的,它有时被称为“标签汤”:

  • 没有什么可以防止基本的打字错误或者像嵌套错误这样的标记错误
  • 标签汤很难读,因为即使在带有智能语法突出显示的编辑器中,标签汤也只是一个字符串,所以它将全部是一种颜色
  • 一些在HTML中有效的字符需要在标签汤中转义,这使得它更难阅读
  • 标签汤的长字符串通常会造成非常长的代码行;非常长的代码行对于人类来说很难阅读,并且不能很好地区分;有一些模式可以缓解这种情况,但这是一个额外的麻烦,您必须处理

也就是说,tag soup有一个非常大的好处:更好的运行时性能。DOM操作通常是javascript在浏览器中执行的最慢的事情之一。我最近没有运行测试,但在过去,一次DOM操作通常需要大约100ms。这看起来可能很快,但如果您向文档中添加数百或数千个节点,那么时间加起来可能会有几秒钟。设置innerHTML也是一个DOM操作,但是这个操作可以一次创建、修改或删除成百上千个元素。是的,添加数千个元素的innerHTML操作可能比只添加5个元素的innerHTML操作慢,但它仍然可能比使用单个操作添加每个元素快至少一个数量级。

少担心你正在做的事情是“酷”还是“尖端”。专注于你是否使用了正确的工具来完成工作,该工具是否使你的工作变得更容易或更难,该工具是否在你所关心的所有平台和时间跨度上都是可靠的。

取悦酷孩子不是你的工作。你的工作就是以最明显的方式,为正确的理由,写出能做正确事情的软件。

票数 2
EN

Stack Overflow用户

发布于 2020-09-04 14:03:25

几乎所有关于Jquery的东西都被认为是过时的,这就是为什么像Github和frameworks as Bootstrap这样的网站正在放弃使用Jquery。

不过时的代码实际上是自己用createElement()处理DOM (这是Jquery在幕后做的),但正如您所说的那样,自己做这些事情会变得相当复杂

因此,替代方案是:

  • 使用web前端框架,如Angular、React或Vue
  • 使用现代库来处理DOM更新

并不是说Jquery是无用的,它仍然可以完成工作,但有许多原因不再使用,其中大多数原因是因为JS获得了许多现在是本机的新功能,并且不需要使用Jquery提供的更多代码来重新实现。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63735503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档