npm 包 jsdom__no_cors 使用教程

前言

在前端开发中,我们经常需要对前端页面进行测试或者抓取数据。因为浏览器默认的安全策略,跨域访问是不被允许的。而使用服务器进行转发或者使用 JSONP 等方式会增加额外的开发工作量,而且不够灵活。

为了解决这个问题,我们可以使用 npm 包 jsdom__no_cors,它提供了类似浏览器的环境,支持跨域访问,让我们可以更好地测试和抓取数据。

安装

首先,我们需要安装 jsdom__no_cors。可以使用 npm 进行安装。

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

使用

创建 jsdom 对象

我们首先需要创建一个 jsdom 对象,这个对象会代表一个虚拟的浏览器环境。

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

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

在这里,我们创建了一个空的浏览器环境,并设置了一些必要的选项,包括 url、includeNodeLocations 等。

访问页面

在创建了 jsdom 对象之后,我们就可以在这个虚拟的浏览器环境中访问页面了。

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

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

这里我们使用了 fetch 方法来进行访问。注意需要使用 dom.window 对象的 fetch 方法,而不是全局的 fetch 方法。

操作页面元素

在浏览器环境下,我们可以使用 document 对象来访问页面元素,jsdom 也提供了类似的功能。

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

这里我们使用了 querySelector 方法来获取页面中的 title 标签,并输出了它的文本内容。

更多的操作页面元素的方法可以查看 jsdom 的文档。

处理跨域请求

jsdom 提供了一个 resolve 选项来处理跨域请求,我们需要在创建 jsdom 对象时传递这个选项,并传递一个回调函数。

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

在这个例子中,我们使用了 resolve 选项来过滤跨域请求。我们定义了一个函数,在函数内部判断请求的 URL 是否在允许的白名单内,如果在白名单内则允许访问,否则阻止访问。

需要注意的是,需要将 beforeParsebeforeRunbeforeScript 等回调函数中用到的 fetch 和 XMLHttpRequest 重新赋值为 require 进来的模块。

示例代码

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

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

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

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

在上面的代码中,我们首先创建了一个空的浏览器环境,并访问了一个页面。然后使用 querySelector 方法来获取页面中的 title 标签,并输出了它的文本内容。

总结

npm 包 jsdom__no_cors 提供了一个类似浏览器的环境,支持跨域访问,可以使我们更好地测试和抓取数据。在使用过程中,需要注意一些常见的问题,如操作页面元素、处理跨域请求等。希望本文对您有所帮助。

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


猜你喜欢

  • NPM 包 reduce-entries 使用教程

    前言 reduce-entries 是一个可以让开发者更方便地对对象进行处理的 npm 包。在前端开发中,我们常常需要对对象进行查找、筛选和操作等多种处理,而 reduce-entries 可以大大简...

    2 年前
  • npm 包 skew-normal-random 使用教程

    随着前端技术的不断发展,npm 成为了前端工程师们常用的工具之一。而 npm 包也越来越多,今天我们来介绍一款 npm 包——skew-normal-random,这是一个生成偏态正态分布随机数的工具...

    2 年前
  • npm 包 snapsvg-hexagonal 使用教程

    前言 在前端开发中,使用 SVG 矢量图形常常可以实现很多复杂的图形效果。Snapsvg-hexagonal 是一个 npm 包,它提供了一个方便易用的 API 来创建六边形,使得六边形的制作变得非常...

    2 年前
  • npm 包 vue-cm 使用教程: 从入门到实践

    Vue-cm 是一款优秀的 Vue.js 组件库,它提供了丰富的组件和工具,能够帮助我们开发出优秀的前端应用。其最大的特点就是提供了很多灵活的配置选项,可以让我们非常方便地进行个性化定制。

    2 年前
  • npm 包 @cutii/firebase 使用教程

    前言 如今的互联网时代,移动端应用成为人们生活的一部分,也日益重要。随着移动应用的普及,以及云计算技术的发展,Firebase 的出现解决了很多移动端应用开发的痛点。

    2 年前
  • npm 包 @adamvr/nodemailer-mandrill-transport 使用教程

    简介 在前端开发中,我们时常需要使用邮件服务,比如发送邮件,通知邮件等。而 nodemailer 是一个非常方便的使用 Node.js 发送邮件的模块,而 @adamvr/nodemailer-man...

    2 年前
  • npm 包 com.example.echo.dahnyue 使用教程

    在前端领域,为了更好地开发项目和提高开发效率,我们通常会使用一些工具和库来辅助我们完成任务。而 npm 是目前最流行的包管理工具之一,提供了海量的优秀包供我们使用。

    2 年前
  • npm 包 cordova-plugin-echodahnyue 使用教程

    前言 在移动应用开发中,需要涉及到与设备硬件或操作系统级别的交互,此时我们需要通过 Cordova 框架来实现。Cordova 是一个开源的跨平台移动应用开发框架,它使用标准的 web 技术进行开发,...

    2 年前
  • npm 包 donleeve 使用教程

    简介 donleeve 是一个针对前端开发的 npm 包,提供了一系列常用的 JavaScript 工具函数。它的主要特点是非常小巧、易用和高效。 不同于其他 npm 包,donleeve 不需要引入...

    2 年前
  • npm 包 webcookie 使用教程

    引言 在开发 Web 应用程序时,经常需要处理有关 Cookie 的问题。为了简化开发过程,可以使用 npm 包中的 webcookie 模块。 webcookie 模块提供了一系列工具函数,用于简化...

    2 年前
  • npm 包 ini2json 使用教程

    在前端开发中,我们经常会遇到需要读取和处理配置文件的情况。而 ini 文件是一种常见的配置文件格式,为了方便处理和使用,有很多 npm 包提供了将 ini 文件转换为 json 的功能。

    2 年前
  • npm 包 slrun-bunyan-stream 使用教程

    简介 slrun-bunyan-stream 是一个基于 Bunyan 的流式日志系统,可用于在前端项目中记录和管理日志。 安装 npm 使用 npm 安装: --- ------- --------...

    2 年前
  • npm 包 slrun-nuxt 使用教程

    slrun-nuxt 是一个基于 Nuxt.js 的封装工具,可以帮助开发者更方便地使用 sls 进行 Serverless 部署。本篇文章将详细介绍如何使用 slrun-nuxt 进行部署,并结合实...

    2 年前
  • npm 包 check-typosquatters 使用教程

    什么是 typosquatting? typosquatting 是一种常见的网络诈骗手段,指的是攻击者注册与真实网站相似的域名,以便引诱用户误输入网址并访问伪造网站。

    2 年前
  • npm 包 cleverbot-unofficial-api 使用教程

    在前端开发中,使用 npm 包可以帮助我们更加方便地集成第三方工具和代码。其中,cleverbot-unofficial-api 是一个功能强大的聊天机器人 API,可以让我们在前端应用中快速实现聊天...

    2 年前
  • npm 包 autobumper 使用教程

    什么是 autobumper? autobumper 是一个 npm 包管理工具,可以自动升级 package.json 文件中指定 npm 包的版本,并生成相应的 commit 和 tag 信息。

    2 年前
  • npm 包 micro-redux 使用教程

    简介 micro-redux 是一个轻量级的 redux 库,专为现代前端应用而设计,它采用了极简主义的设计理念,使得开发者可以快速创建可维护的应用程序。 安装 通过 npm 安装 micro-red...

    2 年前
  • npm 包 jsng 使用教程

    前言 在前端开发中,我们常常需要使用一些库来完成一些复杂的操作。而为了方便我们的开发,npm 成为了我们最常用的库管理工具。其中,jsng 是一个比较优秀的 npm 包,可以帮助我们更快速、更高效地处...

    2 年前
  • npm 包 cuicui 使用教程

    一、简介 Cuicui 是针对前端开发者打造的一个数据生成工具,提供多种生成模式及自定义模式,可用于模拟测试数据、占位符数据等。 Cuicui 的 npm 包提供了生成数据的 API,包括生成数字、字...

    2 年前
  • npm 包 jupyter-arcgis 使用教程

    简介 Jupyter 是一个基于 Web 的交互式计算笔记本,可以帮助用户探索和分析数据,同时支持多种编程语言和数据格式。而 ArcGIS 是一种用于创建、分析、管理和共享地理信息的平台。

    2 年前

相关推荐

    暂无文章