NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

    阅读完需:约 4 分钟

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

开源项目 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:003522

评论

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

mac电脑简单强大修图推荐 Pixelmator Pro直装中文版

mac大玩家j

图像编辑 Mac软件 编辑图像

软件测试丨突破传统,革新测试:ChatGpt指引下的测试方案编写

测试人

人工智能 程序员 软件测试 测试方案 ChatGPT

下一代云越来越智能

人称T客

OpenHarmony社区运营报告(2023年8月)

OpenHarmony开发者

OpenHarmony

山东布谷科技直播app源码,QUIC协议:改善性能与安全性

山东布谷科技

性能优化 网络协议 安全性 QUIC 直播APP源码

蓝易云:如何在 Rocky Linux 上安装 Apache Kafka?

百度搜索:蓝易云

Apache 云计算 kafka Linux 运维

永续合约交易所APP系统开发搭建

V\TG【ch3nguang】

交易所搭建

买彩票能中大奖?用Java盘点常见的概率悖论 | 京东云技术团队

京东科技开发者

京东云 java‘ 企业号9月PK榜

分拣平台API安全治理实战 | 京东物流技术团队

京东科技开发者

企业号9月PK榜

高性能MySQL实战(二):索引 | 京东物流技术团队

京东科技开发者

MySQL 京东云 企业号9月PK榜

AI文本创作在百度App发文的实践

百度Geek说

人工智能 文心一言 企业号9月PK榜 AI辅助创作 智能生成文案

蓝易云:如何在Ubuntu 22.04上安装Linux 内核 详细教程!

百度搜索:蓝易云

云计算 Linux ubuntu 运维 云服务器

MaxCompute半结构化数据思考与创新

阿里云大数据AI技术

大数据 阿里云

专业CHM文件阅读器 CHM Viewer Star最新免激活

胖墩儿不胖y

Mac软件 文件阅读器

浅谈GPT在数据库重构项目中的创新应用

鲸品堂

研发工具 GPT 企业号9月PK榜

开源社区赋能,Walrus 用户体验再升级

SEAL安全

开源 开源工具 Walrus 企业号9月PK榜

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