node下使用jquery


node使用jquery的兩種方式

在node下,使用jquery有兩種方法:

  1. 使用jsdom模擬一個window對象
  2. 使用cheerio,cheerio只實現了jquery的dom部分功能,相當於jquery的一個子集,jquery還包含網絡請求、bom等更為豐富的API。

這兩種方法各有利弊,jsdom的方式非常完善穩妥,jquery久經考驗,但它的缺點在於速度較慢;cheerio速度較快,但是功能有限,然而cheerio的功能已經夠用了。

使用jsdom的方式

fs = require("fs")
jquery=require('jquery')
jsdom=require('jsdom') //fs.readFileSync()返回結果是一個buffer,相當於byte[] 
html = fs.readFileSync('haha.html').toString('utf8') 
dom= new jsdom.JSDOM(html) 
$=jquery(dom.window) console.log($('h1'))

使用cheerio的方式

cheerio=require('cheerio')
html=require('fs').readFileSync("haha.html").toString('utf8')
$=cheerio.load(html)
console.log($('h1'))

使用jquery+jsdom模擬瀏覽器實現自動化測試

測試是需要自動化的,靠人測不僅慢而且不准確。
測試不是為了覆蓋住全部的錯誤,程序不可能通過測試來發現全部的問題,測試只是起到錦上添花的作用,測試只能在一定程度上減少基本錯誤。

selenium的自動化測試方案從用戶的角度測試,node的出現為前端自動化測試提供了新方法。

node中的全局對象是global,瀏覽器中的全局對象是window,我們只需要讓global中添加一個window對象便萬事大吉了,這就需要用到jsdom。

有一個index.html文件,我們通過jquery的方式獲取其中id為haha的span的文本。

<div><span id='haha'>天下大勢為我所控</span></div>

很簡單的lib.js

module.exports=function(){ return $("#haha").text() }

編寫測試test.js

html=require('fs').readFileSync("index.html").toString('utf8') 
jquery=require('jquery') 
jsdom=require('jsdom') 
dom=new jsdom.JSDOM(html) 
global.window=dom.window 
global.$=jquery(dom.window) 
getHaha=require('./lib.js') 
console.log(getHaha()) 

直接運行node test.js便能夠對lib.js中的內容進行測試了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM