最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

NodeJS使用jQuery选择器操作DOM_jquery

来源:动视网 责编:小采 时间:2020-11-27 21:34:29
文档

NodeJS使用jQuery选择器操作DOM_jquery

NodeJS使用jQuery选择器操作DOM_jquery:注* 这是一个两年多的老项目,可以让你在NodeJS中使用jQuery的选择器,像操作前端DOM一样操作后端的HTML/XML,在去除浏览器兼容相关代码后,比JSDOM的操作快8倍. 之前我们曾经提到JSDOM有严重的性能问题: Debug调试Node.JS:我们是如何定位内存泄漏
推荐度:
导读NodeJS使用jQuery选择器操作DOM_jquery:注* 这是一个两年多的老项目,可以让你在NodeJS中使用jQuery的选择器,像操作前端DOM一样操作后端的HTML/XML,在去除浏览器兼容相关代码后,比JSDOM的操作快8倍. 之前我们曾经提到JSDOM有严重的性能问题: Debug调试Node.JS:我们是如何定位内存泄漏


注* 这是一个两年多的“老”项目,可以让你在NodeJS中使用jQuery的选择器,像操作前端DOM一样操作后端的HTML/XML,在去除浏览器兼容相关代码后,比JSDOM的操作快8倍. 之前我们曾经提到JSDOM有严重的性能问题: Debug调试Node.JS:我们是如何定位内存泄漏和无限循环的

cheerio

快速,灵活,在服务器端使用的jQuery。

简介

测试你的服务器端HTML:

代码如下:
var cheerio = require('cheerio'),
$ = cheerio.load('

Hello world

');
$('h2.title').text('Hello there!');
$('h2').addClass('welcome');
$.html();
//=>

Hello there!


安装

npm install cheerio

功能

❤熟悉的语法:Cheerio实现了jQuery核心的一个子集。Cheerio 从jQuery库中删除了所有的DOM不一致和浏览器兼容支持,呈现其真正华丽的API。

ϟ极快:Cheerio 使用一个非常简单的,一致的DOM模型。这样解析,操作和呈现就会带来令人难以置信的性能提升。初步的端至端的基准测试表明Cheerio比JSDOM快大概8倍。

❁令人难以置信的灵活性:兼容htmlparser2API。Cheerio可以解析几乎所有的HTML或XML文档。

JSDOM怎么样?

我写Cheerio,因为我对JSOM越来越感到失望。对于我来说,有我一次又一次的碰到三大症结:

•JSDOM内置的解析器是太过严格:JSDOM捆绑的HTML解析器现在不能处理很多流行的网站。

•JSDOM太慢:解析大网站,JSDOM有明显的延迟。

•JSDOM感觉太沉重:JSDOM的目的是提供一个跟我们在浏览器中看到的相同的DOM环境(注* 可执行JavaScript)。我从来没有真的需要这些东西,我只想要一个简单的,熟悉的方式做HTML操作。

什么时侯使用JSDOM

Cheerio无法解决你所有的问题。如果我需要在一个类似浏览器的环境中工作,我仍然会使用JSDOM,特别是当在服务器上想要进行自动化功能测试时。

API

我们将使用的示例HTML代码:

代码如下:

  • Apple

  • Orange

  • Pear


  • 加载

    首先,你需要在加载HTML。这一步在jQuery是自动完成的,因为jQuery的运行在一个,即时的DOM环境中。我们需要将HTML文档传入Cheerio中。

    这是首选的方法:

    代码如下:
    var cheerio = require('cheerio'),
    $ = cheerio.load('...');

    另外,您还可以将HTML作为字符串参数传入:

    代码如下:
    $ = require('cheerio');
    $('ul', '...');

    或者作为根结点

    代码如下:
    $ = require('cheerio');
    $('li', 'ul', '...');

    您也可以通过一个额外的.load()加载您需要修改的默认解析选项:

    代码如下:
    $ = cheerio.load('...', {
    normalizeWhitespace: true,
    xmlMode: true
    });

    这些解析选项是直接从 htmlparser2 借来的,因此可以在htmlparser2使用的任何参数在cheerio也有效。默认的选项是:

    代码如下:
    {
    normalizeWhitespace: false,
    xmlMode: false,
    decodeEntities: true
    }

    Selectors选择器

    Cheerio的选择器几乎与jQuery的完全相同,所以API是非常相似的。

    代码如下:
    $( selector, [context], [root] )

    选择器按照: 根[root,可选]->上下文[context,可选]->选择器 的顺序选择元素。选择器和上下文可以是一个字符串表达式,DOM元素,DOM元素数组。根通常document 是 HTML文档的根元素。

    像jQuery一样,此选择方法会从起点遍历和操纵文档。它是从文档中选择的元素的主要方法,但不像jQuery那样构建CSSSelect库(Sizzle 选择器)。

    代码如下:
    $('.apple', '#fruits').text()
    //=> Apple
    $('ul .pear').attr('class')
    //=> pear
    $('li[class=orange]').html()
    //=>

  • Orange

  • Attributes属性

    获取和修改属性的方法。

    .attr( name, value )

    用于获取和设置属性的方法。仅获取匹配的第一个元素的属性值。如果设置属性的值设置为null,则删除该属性。您也可以像jQuery一样传入map和function。

    代码如下:
    $('ul').attr('id')
    //=> fruits
    $('.apple').attr('id', 'favorite').html()
    //=>

  • Apple

  • .data( name, value )

    用于获取和设置数据属性的方法。获取或设置仅用于匹配的第一个元素。

    代码如下:
    $('').data()
    //=> { appleColor: 'red' }
    $('').data('data-apple-color')
    //=> 'red'
    var apple = $('.apple').data('kind', 'mac')
    apple.data('kind')
    //=> 'mac'
    .val( [value] )

    用于获取和设置input,select和textarea值的方法。注:支持map,function尚未添加。

    代码如下:
    $('input[type="text"]').val()
    //=> input_text
    $('input[type="text"]').val('test').html()
    //=>

    更多API请参见官网

    文档

    NodeJS使用jQuery选择器操作DOM_jquery

    NodeJS使用jQuery选择器操作DOM_jquery:注* 这是一个两年多的老项目,可以让你在NodeJS中使用jQuery的选择器,像操作前端DOM一样操作后端的HTML/XML,在去除浏览器兼容相关代码后,比JSDOM的操作快8倍. 之前我们曾经提到JSDOM有严重的性能问题: Debug调试Node.JS:我们是如何定位内存泄漏
    推荐度:
    标签: 选择器 jQuery Nodejs
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top