npm 包 @inikulin/jsdom-only-external-scripts 使用教程

前言

在前端开发中,DOM 操作是必不可少的一部分。而 jsdom 是一个实现了浏览器端的 DOM 操作方式的 Node.js 模块,它提供了一种类似于在浏览器中操作 DOM 的方式,非常适合在 Node.js 环境下进行前端自动化测试、网站爬虫、单元测试等等操作。

然而,jsdom 在默认情况下会下载并执行网页中所有的 JavaScript 代码,这对于想要测试页面效果的 Node.js 应用来说是非常不可取的,因为这意味着测试代码会运行网页上的 JavaScript 代码,导致测试结果不准确。

我们可以使用 @inikulin/jsdom-only-external-scripts 包,使得 jsdom 只加载网页中的外部 JavaScript 文件,从而显著提升 jsdom 的性能并避免运行网页上的 JavaScript 代码。接下来,我们将介绍如何使用 @inikulin/jsdom-only-external-scripts 包。

安装 @inikulin/jsdom-only-external-scripts

在开始使用 @inikulin/jsdom-only-external-scripts 之前,需要先安装 jsdom。

使用以下命令安装 jsdom:

--- ------- -----

然后,安装 @inikulin/jsdom-only-external-scripts:

--- ------- -------------------------------------

使用 @inikulin/jsdom-only-external-scripts

使用 @inikulin/jsdom-only-external-scripts 相对于使用 jsdom 来说,只需要增加一行代码即可。

----- ----- - -----------------
----- - ----- - - ------
----- - ------------------- - - -------------------------------------------------

----- --- - ---------------------------

------------------ -
    ---------- ---------
    ----------- --------------
-- ------------------------- ------- -- -
    -- ----- -
        -------------------
        -------
    -

    --------------------------------------------------------------------------
    ---------------
----

运行上述代码,你会在控制台看到网页的标题。

参数说明

onlyExternalScripts 接受一个回调函数作为参数,回调函数会在 jsdom 完成页面解析后被调用。

onlyExternalScripts 函数还可以传递 jsdom 的可选参数。在上述示例中,我们使用了两个可选参数:

  • resources:用于指定资源,如图片、样式表及 JavaScript 文件等是否需要加载。当值为 "usable" 时,jsdom 会等待资源加载完成后再执行回调函数。
  • runScripts:用于指定是否执行网页中的 JavaScript 代码。当值为 "dangerously" 时会运行网页中的 JavaScript 代码。

示例代码

下面的示例代码演示了如何使用 @inikulin/jsdom-only-external-scripts 来获取网页中的所有外部 JavaScript 文件 URL。

----- ----- - -----------------
----- - ----- - - ------
----- - ------------------- - - -------------------------------------------------

----- --- - ---------------------------

------------------ -
    ---------- ---------
-- ------------------------- ------- -- -
    -- ----- -
        -------------------
        -------
    -

    ----- ---- - -----------------------------------------------------------
        ----------- -- ------------

    ------------------
    ---------------
----

在上述示例代码中,我们使用 querySelectorAll 方法选择了所有带有 src 属性的 <script> 标签,并获取它们的 src 属性,最后打印到控制台。

总结

使用 @inikulin/jsdom-only-external-scripts 包可以减少 jsdom 的性能消耗,从而使你的 Node.js 应用中的前端自动化测试、网站爬虫、单元测试等操作更加准确,同时也可以避免运行网页中的 JavaScript 代码带来的不必要风险。在实际使用中,我们只需要增加一行代码即可,实现起来非常简单。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055fc081e8991b448dd126


猜你喜欢

  • npm 包 `vtypes-requiredwithout` 使用教程

    vtypes-requiredwithout 是一款针对 Vue.js 的表单验证器库。它可以用来在输入某些值时,必须同时输入另外一些值才能通过验证。本文将为大家介绍如何使用 vtypes-requi...

    3 年前
  • npm 包 vtypes-requiredwithoutall 使用教程

    在前端开发中,表单验证是必不可少的步骤之一。然而,有时候我们需要对多个表单字段进行校验,并且要求其中一些字段必填,但是这些必填字段的任意组合都可以作为有效输入时,该怎么做呢?这时候,npm 包 vty...

    3 年前
  • npm 包 css-treeshaking-loader 使用教程

    在现代前端开发中,CSS 的体积日益增大成为了一个问题。为了优化 CSS 的加载速度和性能,很多开发者都采用了 Tree Shaking 技术。不过,在实际开发中,我们会发现虽然 JavaScript...

    3 年前
  • npm包 github-autopull 使用教程

    概述 在前端领域,项目管理与代码质量是至关重要的。而 github-autopull 是一款可以自动更新 GitHub 仓库到最新内容的 npm 包。它可以在仓库内容有更新时自动进行 pull 操作,...

    3 年前
  • npm 包 language-kevscript 使用教程

    什么是 language-kevscript language-kevscript 是一个 NPM 包,它为开发人员提供了一个可以将 JavaScript 代码翻译成 kevscript 语言的转换器...

    3 年前
  • npm 包 node-express-swindler 使用教程

    介绍 npm 是一个包管理工具,通过 npm 可以下载和管理各种开源 JavaScript 库和应用程序。node-express-swindler 是一个基于 Node.js 和 Express.j...

    3 年前
  • npm 包 json-schema-util 使用教程

    前言 在开发过程中,我们经常需要进行数据校验和格式化,这些工作大部分可以通过 JSON Schema 来完成。当然,手动编写 JSON Schema 也是非常繁琐的工作。

    3 年前
  • npm 包 vtypes-shape 使用教程

    如果你是一名前端开发者,你肯定了解 npm,npm 是前端开发的必备工具之一。vtypes-shape 是一个 npm 工具包,它可以帮助你验证数据对象的形状是否符合要求。

    3 年前
  • npm包vtypes-size使用教程

    在前端开发中,我们经常需要处理各种数据类型。而对于数据类型的大小,快速而准确地进行判断,有时是非常必要且重要的。这时候,npm包 vtypes-size 就能帮助我们快速地判断数据类型的大小。

    3 年前
  • npm 包 vtypes-string 使用教程

    如今,前端开发越发复杂,需要注重代码的稳定性与实用性。在这个过程中,npm 包成为了优秀前端开发者的必备选择之一。而在这里我们要介绍的是一个非常实用的 npm 包:vtypes-string。

    3 年前
  • npm 包 datalegreya 使用教程

    1. datalegreya 简介 datalegreya 是一种非常流行的前端数据可视化字体,它提供了丰富的数据可视化功能,如表格、图表和地图等。datalegreya 是基于 OpenType 技...

    3 年前
  • npm 包 eslint-config-hyperbolts 使用教程

    在前端开发中,保证代码的规范性能提高团队协作效率,同时也能减少代码维护的难度。而 eslint 就是一款非常优秀的代码规范化工具。在这篇文章中,我们将介绍 eslint-config-hyperbol...

    3 年前
  • npm 包 ngx-tel-input 使用教程

    今天我们要介绍的是一个非常实用的 npm 包 ngx-tel-input,它可以帮助我们在前端页面中快速添加一个电话号码输入框,支持国际电话格式和自动区号选择等功能,使用非常方便。

    3 年前
  • npm 包 react-cool-carousel 使用教程

    介绍 react-cool-carousel 是一个基于 React 框架的图片轮播组件。它简单易用、功能丰富,适用于各种前端 web 开发项目。使用 react-cool-carousel 可以帮助...

    3 年前
  • npm 包 react-native-multiview 使用教程

    在 React Native 的开发过程中,经常会遇到需要涉及多个视图的情况。如果使用原生的方式去实现,会增加很多复杂度和工作量。为了简化开发流程,提高开发效率,我们可以使用第三方库来完成多视图的展示...

    3 年前
  • npm 包 react-text-resize 使用教程

    简介 在前端开发过程中,我们经常需要对文本进行自适应大小的处理。如果每次都手动实现,工作量也太大了,这时候就可以考虑使用 react-text-resize 这个 npm 包。

    3 年前
  • npm包seneca-cli使用教程

    在前端开发中,Node.js的发展和普及越来越快,npm作为node.js的包管理工具,也迅速的成为了前端开发者们必备的工具之一。在npm上,有很多非常好的包,今天我要介绍的是seneca-cli,一...

    3 年前
  • npm 包 bubble-bridge 使用教程

    简介 bubble-bridge 是一个用于实现浏览器与 iframe 之间通信的库,可以帮助开发者更为方便地进行页面嵌入和活动推广等类似场景的开发。这个库的作用是在父页面和子 iframe 之间建立...

    3 年前
  • npm 包 cordova-plugin-fcm-matrix 使用教程

    在移动应用开发中,推送功能是必不可少的一部分。FCM(Firebase Cloud Messaging)是一种跨平台的推送服务,与 Cordova 集成可以实现应用的推送功能。

    3 年前
  • npm 包 csv-to-ndjson 使用教程

    在前端开发过程中,我们通常需要将数据格式从 csv 转换成 ndjson,以便在前端进行数据处理和展示。csv-to-ndjson 是一个 npm 包,它可以方便地将 csv 数据转换成 ndjson...

    3 年前

相关推荐

    暂无文章