写点什么

开源项目 HTML DOM:解决原生 JS 中的常见 DOM 任务

  • 2020-05-09
  • 本文字数:1287 字

    阅读完需:约 4 分钟

开源项目HTML DOM:解决原生JS中的常见DOM任务

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

开源项目 HTML DOM 提供了 100 多个 vanilla JavaScript(vanilla JS 是一个所谓的 JavaScript 框架,但实际上指的就是原生的 JavaScript,这是一种调侃和恶作剧的说法,参见vanilla-js站点stackoverflow上的讨论——译者注)代码片段,用于执行常见的 DOM 操作任务。这些任务的难度从简单(获取某个元素的 class)到高级(创建可调整大小的切分视图)不等。这个项目可以用于教育学习,也适用于需要自行操作底层 DOM 的组件开发人员。


该项目的核心贡献者Phuoc Nguyen阐述了项目的基本原理和意图:


如果你在任意框架中开发或使用 Web 组件的话,那么必须要在一定程度上使用 DOM。

在 Web 开发中,了解浏览器的 DOM API 以及如何使用它们是非常重要的。如果有一个 Web 站点将这些 API、众所周知的问题以及最流行的疑问汇总起来,那么它将是非常有用的。


HTML DOM 片段只使用了原生浏览器的 API,所以不需要任何外部的库。它们通过由万维网联盟(World Wide Web Consortium,W3C)(W3C)所标准化的每个现代浏览器的都支持原生浏览器 API 来实现,除此之外,浏览器厂商还会与一些平台,如Web平台孵化器社区群组(Web Platform Incubator Community Group,WICG)响应式问题社区群组(Responsive Issues Community Group,RICG),讨论创新性的特性。


HTML DOM 的代码片段根据估计的复杂性和所需的先验知识分成了三个类别。基础任务包括附加或解除事件处理器、检索元素的兄弟节点以及更新元素的CSS样式等。


中级任务包括计算滚动条的大小获取元素的第一个可滚动父元素iframe与其父窗口之间进行通信下载文件导出表格到CSV或者动态加载CSS文件等等。


高级任务包括创建可调整大小的切分视图拖拽-滚动交互创建可调整大小的元素以及通过单击表头对表进行排序等等。


创建可调整大小的元素相关的代码片段由 20 行 CSS、7 行 HTML 和 30 多行 JavaScript 组成。HTML 包括用于显示底部和右侧边框的div。当鼠标位于 HTML 元素的句柄上时,CSS 代码会更改光标的样式。JavaScript 处理交互逻辑,包括根据用户是否拖动句柄来设置和删除mousemove监听器。最终结果如下所示:



有些开发人员在 Hacker News 上表达了他们对该项目的热情。有位开发人员这样说到:


非常整洁的资源,我已经收藏了。

在 SPA 时代,vanilla JS 在哪些地方依然有用武之地呢?

  • 大部分都是静态 HTML,首次渲染的时间非常重要,我们只需要有一点点(可能会逐渐增加)天分就够了。

  • 可以内联即时加载/执行,不需要捆绑下载(或 SSR)。

  • 代码的容量和作用域都有限,所以出现结构/意大利面的问题也不是什么事儿。

  • 你可以把它从 SPA 包中分离出来,所以交付变更能够完全从 SPA CI/CD 过程中解耦出来,可以根据你的喜好频繁地交付,而且速度非常快。


另外一位开发人员强调了该项目在教育学习方面的价值


根据我的经验,MDN 文档是最好的浏览器前端参考。

但是,这个站点满足了一个不同的需求:提供了一个面向指南/如何实现的文档,这通常是我们所需要的。


HTML DOM 可以基于 MIT 开源许可证使用。欢迎通过GitHub项目提交贡献和反馈。


原文链接:108 Common DOM Tasks in Vanilla JS: the HTML DOM Project


2020-05-09 09:003683

评论

发布
暂无评论
发现更多内容

震惊,PostGIS还可以这样用!!!

华为云开发者联盟

数据库 分布式 GaussDB 地理数据库 PostGIS

QCon 演讲实录 | 大型软件团队的数字化项目管理实践

万事ONES

研发管理 团队协作 数字化 ONES Qcon

和12岁小同志搞创客开发:如何选择合适的传感器?

不脱发的程序猿

DIY 传感器 创客开发 如何选择合适的传感器?

华云大咖说 | 华云数据助力高校建设实训室平台

华云数据

日常Bug排查-系统失去响应-Redis使用不当

无毁的湖光

Java redis

个推“D-M-P”三步走, 打造每日治数平台,助力行业数字化升级

个推

大数据 数据中台 数据治理 数据智能

并发王者课-青铜8:分工协作-从本质认知线程的状态和动作方法

MetaThoughts

Java 多线程 并发 并发王者课

Java程序员简历这么写,还过不了筛选算我输!

Java架构师迁哥

阿里云 AI 编辑部获 CCBN 创新奖,揭秘传媒行业解决方案背后的黑科技

阿里云视频云

阿里云 媒体 CCBN

Geek 青年说北京沙龙分享

看山

Geek青年说

非官方不权威Java面试宝典

北游学Java

Java 面试

六一特辑丨8岁小程序员献礼儿童节:我DIY了聊天机器人,做3D printer,还想和外星人对话!

华为云开发者联盟

编程 程序员 开发者 代码 机器人

带你读论文丨异常检测算法及发展趋势分析

华为云开发者联盟

深度学习 异常检测算法 深度异常检测算法 深度半监督 群体异常检测

高并发存储优化篇:诸多策略,缓存为王

Coder的技术之路

缓存 缓存击穿 缓存雪崩 缓存架构

🔎【Java 源码探索】深入浅出的分析Mutex底层源码

洛神灬殇

Java JVM mutex Condition 5月日更

长连接网关技术专题(五):喜马拉雅自研亿级API网关技术实践

JackJiang

Netty nio 网关

OpenResty入门

捉虫大师

nginx openresty

.Net Core Configuration Etcd数据源

yi念之间

etcd .net core

带你看懂MySQL执行计划

Simon

MySQL 执行计划

开发人员应该害怕低代码吗?

禅道项目管理

程序员 低代码 开发 低代码平台

怎样节省 2/3 的 GPU?爱奇艺 vGPU 的探索与实践

爱奇艺技术产品团队

深度学习 gpu

如何优化你的HTTPS?

运维研习社

https HTTP2.0 5月日更

JWT(auth0):RS256非对称加密算法实现Token的签发、验证

西门阿杰

Java Token RS256

鸿蒙操作系统发布在即 万物互联时代将给开发者带来更多机遇

科技汇

千亿级数据迁移mongodb成本节省及性能优化实践

杨亚洲(专注MongoDB及高性能中间件)

MySQL 数据库 mongodb 架构 分布式数据库mongodb

Springboot actuator不可不注意的安全问题-可越权-可脱库

果果果

安全 springboot

6月日更,优质更文,“定制”来袭~

InfoQ写作社区官方

6月日更 热门活动

Spring 实例化方式有几种?为什么会用到 Cglib?

小傅哥

Java spring 小傅哥 cglib 手写框架

知乎的一次29.7元的咨询

why技术

Java 程序员

SphereEx 获数百万美元天使融资,接力 ShardingSphere 开启 Database Plus 新篇章

SphereEx

阿里面试题:MySQL 磁盘满了,怎么办?

Java架构师迁哥

开源项目HTML DOM:解决原生JS中的常见DOM任务_大前端_Bruno Couriol_InfoQ精选文章