当前位置: 首页 > news >正文

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中的内容进行测试了。

相关文章:

  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • Analytics Zoo:在Apache Spark上实现分布式Tensorflow和BigDL管道的统一分析和AI平台
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • oracle问题 ORA-01843:not a valid month
  • 退款证书相关
  • 如何将本地文件上传至阿里云ECS中
  • React 作者关于 Hooks 的深度 issue,值得你阅读
  • 【AIX】在命令前显示完整路径
  • Promise,我是这么理解的!
  • python 怎样使用单个反斜杠\
  • 在IPv6之前
  • 数据挖掘领域经典算法——CART算法
  • JavaScript原型的实际应用
  • 微软宣布Azure Function支持Python
  • adb
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【技术性】Search知识
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【译】理解JavaScript:new 关键字
  • 4. 路由到控制器 - Laravel从零开始教程
  • gops —— Go 程序诊断分析工具
  • JavaScript HTML DOM
  • Java比较器对数组,集合排序
  • Java的Interrupt与线程中断
  • js ES6 求数组的交集,并集,还有差集
  • React+TypeScript入门
  • 初识 webpack
  • ------- 计算机网络基础
  • 详解NodeJs流之一
  • 怎么把视频里的音乐提取出来
  • Linux权限管理(week1_day5)--技术流ken
  • puppet连载22:define用法
  • ​ssh免密码登录设置及问题总结
  • (16)Reactor的测试——响应式Spring的道法术器
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C++)八皇后问题
  • (Oracle)SQL优化技巧(一):分页查询
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (办公)springboot配置aop处理请求.
  • (二)springcloud实战之config配置中心
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)winform之ListView
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET大文件上传知识整理
  • @RequestBody的使用
  • @RestControllerAdvice异常统一处理类失效原因
  • [51nod1610]路径计数
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [CakePHP] 在Controller中使用Helper
  • [Contiki系列论文之2]WSN的自适应通信架构
  • [CSS] - 修正IE6不支持position:fixed的bug
  • [CSS]CSS 的背景
  • [emuch.net]MatrixComputations(7-12)