目錄
Hello world
Hello there!
首頁 web前端 js教程 NodeJS使用jQuery選擇器操作DOM_jquery

NodeJS使用jQuery選擇器操作DOM_jquery

May 16, 2016 pm 04:14 PM
nodejs 操作dom

註* 這是一個兩年多的「老」項目,可以讓你在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請參考官網

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    4 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.聊天命令以及如何使用它們
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    nodejs和vuejs區別 nodejs和vuejs區別 Apr 21, 2024 am 04:17 AM

    Node.js 是一種伺服器端 JavaScript 執行時,而 Vue.js 是一個客戶端 JavaScript 框架,用於建立互動式使用者介面。 Node.js 用於伺服器端開發,如後端服務 API 開發和資料處理,而 Vue.js 用於用戶端開發,如單一頁面應用程式和響應式使用者介面。

    nodejs是後端框架嗎 nodejs是後端框架嗎 Apr 21, 2024 am 05:09 AM

    Node.js 可作為後端框架使用,因為它提供高效能、可擴展性、跨平台支援、豐富的生態系統和易於開發等功能。

    nodejs怎麼連接mysql資料庫 nodejs怎麼連接mysql資料庫 Apr 21, 2024 am 06:13 AM

    要連接 MySQL 資料庫,需要遵循以下步驟:安裝 mysql2 驅動程式。使用 mysql2.createConnection() 建立連接對象,其中包含主機位址、連接埠、使用者名稱、密碼和資料庫名稱。使用 connection.query() 執行查詢。最後使用 connection.end() 結束連線。

    nodejs安裝目錄裡的npm與npm.cmd檔有什麼差別 nodejs安裝目錄裡的npm與npm.cmd檔有什麼差別 Apr 21, 2024 am 05:18 AM

    Node.js 安裝目錄中有兩個與 npm 相關的文件:npm 和 npm.cmd,區別如下:擴展名不同:npm 是可執行文件,npm.cmd 是命令視窗快捷方式。 Windows 使用者:npm.cmd 可以在命令提示字元中使用,npm 只能從命令列執行。相容性:npm.cmd 特定於 Windows 系統,npm 跨平台可用。使用建議:Windows 使用者使用 npm.cmd,其他作業系統使用 npm。

    nodejs中的全域變數有哪些 nodejs中的全域變數有哪些 Apr 21, 2024 am 04:54 AM

    Node.js 中存在以下全域變數:全域物件:global核心模組:process、console、require執行階段環境變數:__dirname、__filename、__line、__column常數:undefined、null、NaN、Infinity、-Infinity

    nodejs和java的差別大嗎 nodejs和java的差別大嗎 Apr 21, 2024 am 06:12 AM

    Node.js 和 Java 的主要差異在於設計和特性:事件驅動與執行緒驅動:Node.js 基於事件驅動,Java 基於執行緒驅動。單執行緒與多執行緒:Node.js 使用單執行緒事件循環,Java 使用多執行緒架構。執行時間環境:Node.js 在 V8 JavaScript 引擎上運行,而 Java 在 JVM 上運行。語法:Node.js 使用 JavaScript 語法,而 Java 使用 Java 語法。用途:Node.js 適用於 I/O 密集型任務,而 Java 適用於大型企業應用程式。

    nodejs是後端開發語言嗎 nodejs是後端開發語言嗎 Apr 21, 2024 am 05:09 AM

    是的,Node.js 是一種後端開發語言。它用於後端開發,包括處理伺服器端業務邏輯、管理資料庫連接和提供 API。

    nodejs專案怎麼部署到伺服器 nodejs專案怎麼部署到伺服器 Apr 21, 2024 am 04:40 AM

    Node.js 專案的伺服器部署步驟:準備部署環境:取得伺服器存取權限、安裝 Node.js、設定 Git 儲存庫。建置應用程式:使用 npm run build 產生可部署程式碼和相依性。上傳程式碼到伺服器:透過 Git 或檔案傳輸協定。安裝依賴項:SSH 登入伺服器並使用 npm install 安裝應用程式相依性。啟動應用程式:使用 node index.js 等命令啟動應用程序,或使用 pm2 等進程管理器。設定反向代理(可選):使用 Nginx 或 Apache 等反向代理路由流量到應用程式

    See all articles