跳至主要内容

Cheerio 1.0 发布,内置电池🔋

·阅读时长 3 分钟
Felix Boehm
Cheerio 维护者

Cheerio 1.0 发布了!经过 12 个发布候选版本,以及从最初的 1.0 发布候选版本发布仅仅 7 年后,Cheerio 1.0 终于可以宣告完成了。本次发布的主题是“内置电池”,常见用例现在可以直接使用。

所以,准备好两节 AA 电池,继续阅读下面的内容,了解新功能、变更以及升级方法!

新网站和文档

自上次发布以来,我们已经发布了 Cheerio 的新网站和文档。新网站提供详细的指南和 API 文档,帮助您充分利用 Cheerio。访问 cheerio.js.org 查看。

一种新的加载文档方式

将文档加载到 Cheerio 的方式已经过改进。Cheerio 现在支持多种加载方法,每种方法都针对不同的用例进行优化。

  • load:用于解析 HTML 或 XML 字符串的经典方法。
  • loadBuffer:适用于二进制数据,自动检测文档编码。
  • stringStreamdecodeStream:直接从流解析 HTML。
  • fromURL:从 URL 获取并解析 HTML,一步到位。

加载文档 教程中深入了解这些方法。

简化的数据提取

新的 extract 方法允许您从 HTML 文档中提取数据并将其存储在一个对象中。现在,从 GitHub 获取 Cheerio 的最新版本,并从发布页面中提取发布日期和发布说明变得非常简单,只需要:

import * as cheerio from 'cheerio';

const $ = await cheerio.fromURL(
'https://github.com/cheeriojs/cheerio/releases',
);
const data = $.extract({
releases: [
{
// First, we select individual release sections.
selector: 'section',
// Then, we extract the release date, name, and notes from each section.
value: {
// Selectors are executed within the context of the selected element.
name: 'h2',
date: {
selector: 'relative-time',
// The actual release date is stored in the `datetime` attribute.
value: 'datetime',
},
notes: {
selector: '.markdown-body',
// We are looking for the HTML content of the element.
value: 'innerHTML',
},
},
},
],
});

提取数据 指南中详细了解所有可用的选项。

重大更改和升级指南

Cheerio 1.0 引入了几个重大更改,最重要的是

  • NodeJS 最低版本现在为 18.17 或更高版本。

  • 导入路径已简化。例如,使用 cheerio/slim 而不是 cheerio/lib/slim

  • 已删除不推荐使用的默认 Cheerio 实例和静态方法。

    以前,可以编写类似这样的代码

    import cheerio, { html } from 'cheerio';

    html(cheerio('<test></test>')); // ~ '<test></test>' -- NO LONGER WORKS

    确保始终先加载文档

    import * as cheerio from 'cheerio';

    cheerio.load('<test></test>').html();
  • htmlparser2 选项现在仅存在于 xml 键下

    const $ = cheerio.load('<html>', {
    xml: {
    withStartIndices: true,
    },
    });
  • 以前由 Cheerio 重新导出的节点类型现在必须直接从 domhandler 导入。

有关完整变更列表,请查看 变更日志

升级到 Cheerio 1.0

要升级到 Cheerio 1.0,只需运行

npm install cheerio@latest

参与其中

探索新功能并告诉我们您的想法!遇到问题?在我们的 GitHub 问题追踪器 上报告。有改进想法?欢迎拉取请求!😊

感谢

感谢 @jugglinmike 启动 Cheerio 1.0,并感谢所有帮助塑造此次发布的贡献者。没有你们,我们不可能做到!

感谢我们的 赞助者和支持者 支持 Cheerio 的开发。如果您在工作中使用 Cheerio,请考虑让您的公司支持我们!

最后,感谢您使用 Cheerio 🙇🙇‍♀️