node下使用jquery

时间:2025-01-15 11:03:16

node使用jquery的两种方式

在node下,使用jquery有两种方法:

  1. 使用jsdom模拟一个window对象
  2. 使用cheerio,cheerio只实现了jquery的dom部分功能,相当于jquery的一个子集,jquery还包含网络请求、bom等更为丰富的API。

这两种方法各有利弊,jsdom的方式非常完善稳妥,jquery久经考验,但它的缺点在于速度较慢;cheerio速度较快,但是功能有限,然而cheerio的功能已经够用了。

使用jsdom的方式

  1. fs = require("fs")
  2. jquery=require('jquery')
  3. jsdom=require('jsdom') //()返回结果是一个buffer,相当于byte[]
  4. html = fs.readFileSync('').toString('utf8')
  5. dom= new jsdom.JSDOM(html)
  6. $=jquery(dom.window) console.log($('h1'))

使用cheerio的方式

  1. cheerio=require('cheerio')
  2. html=require('fs').readFileSync("").toString('utf8')
  3. $=cheerio.load(html)
  4. console.log($('h1'))

使用jquery+jsdom模拟浏览器实现自动化测试

测试是需要自动化的,靠人测不仅慢而且不准确。
测试不是为了覆盖住全部的错误,程序不可能通过测试来发现全部的问题,测试只是起到锦上添花的作用,测试只能在一定程度上减少基本错误。

selenium的自动化测试方案从用户的角度测试,node的出现为前端自动化测试提供了新方法。

node中的全局对象是global,浏览器中的全局对象是window,我们只需要让global中添加一个window对象便万事大吉了,这就需要用到jsdom。

有一个文件,我们通过jquery的方式获取其中id为haha的span的文本。

<div><span id='haha'>天下大势为我所控</span></div>

很简单的

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

编写测试

  1. html=require('fs').readFileSync("").toString('utf8')
  2. jquery=require('jquery')
  3. jsdom=require('jsdom')
  4. dom=new jsdom.JSDOM(html)
  5. global.window=dom.window
  6. global.$=jquery(dom.window)
  7. getHaha=require('./')
  8. console.log(getHaha())

直接运行node 便能够对中的内容进行测试了。