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

转载于:https://www.cnblogs.com/weiyinfu/p/10151904.html

node下使用jquery相关推荐

  1. [转载]WebForm下使用 jQuery.loadUserControl异步load用户控件

    现在做网站都追求用户体验,那么ajax自然就必不可少.如果您用过Asp.Net MVC ,你会发现Asp.Net MVC 和jQuery 配合的非常默契(事实上jQuery已经成了微软的御用脚本库了) ...

  2. Visual Studio下使用jQuery的10个技巧

    广泛流行的jQuery是一个开源的,跨浏览器和兼容CSS 3的JavaScript库,你可以用它简化你的JavaScript编码任务和操作(添加,编辑和删除)HTML内容中的DOM元素,本文介绍10个 ...

  3. IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层、Dialog的问题

    IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层.Dialog的问题 参考文章: (1)IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层.Dialog的 ...

  4. 夺命雷公狗---node下的一聊天室-首发

    今晚感觉挺蛋疼,就用了点时间,在node下开发了个聊天室来玩玩,不过之是简单的开发了套而已,并没多做什么考虑,, 但是发现了一个好处就是用node来写聊天室代码居然少得可怜,这个不佩服node都不行, ...

  5. Node.js 使用jQuery取得Nodejs http服务端返回的JSON对象示例

    server.js代码: // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http" ...

  6. 关于IE6下用Jquery attr('onclick')问题

    当原代码编写者编写了如下代码 <input id="Button1" type="button" value="button" οnc ...

  7. html表格td向下排序,jquery实现的table排序功能示例

    本文实例讲述了jquery实现的table排序功能.分享给大家供大家参考,具体如下: Document div { width: 1024px; margin: 0 auto; /*div相对屏幕左右 ...

  8. html5 menu下拉,jquery下拉菜单插件SelectMenu

    SelectMenu.js是一款简洁.易用.多样的jquery下拉菜单插件.SelectMenu下拉菜单插件功能强大,支持下拉,分页,键盘操作等功能.它的特点还有: 基于 jQuery1.x 开发, ...

  9. 从零搭建个人博客(3)-如何在webpack环境下配置jquery和富文本编辑器Simditor

    无论是博主自己写文章还是读者发表评论,都需要一个方便的编辑框,html自带的textarea和editable div都过于简单,本文将记录在webpack环境中添加jquery和Simditor的过 ...

最新文章

  1. Android应用中通过AIDL机制实现进程间的通讯实例
  2. centos65安装RabbitMQ3.6.5
  3. jQuery07源码 (3803 , 4299) attr() prop() val() addClass()等 : 对元素属性的操作
  4. 使用Lucid Virtu在有独立显卡的情况下使用Intel硬件加速H.264编码
  5. 信息学奥赛一本通(1044:判断是否为两位数)
  6. 利用MySQL存储过程分割字符串
  7. .net 自定义控件显示及传参--转
  8. 计算机设计类自我诊断意见,汽车故障自我诊断.doc
  9. QQ2005BIII网吧版修改方法(转)
  10. 金融安全视角农民投资理财的实证研究——以X县为例
  11. vue异常报错解决 Missing ref owner context. ref cannot be used on hois 或者是 Cannot read property ‘refs‘ of n
  12. 什么品牌台灯最舒服?推荐最热门的护眼灯品牌排行
  13. 怎样设置WinForm程序的公司名称、产品名称、版本信息
  14. 致远a8-v5-6.0协同管理软件_高危漏洞利用预警:近期利用“致远OA任意文件写入漏洞”的攻击较多...
  15. CreateEvent使用
  16. 用户体系分离项目总结
  17. python中的高等函数初探
  18. 深入理解图优化与g2o : 图优化理论与g2o的使用
  19. Linux常用命令——挂载命令(一)
  20. 【5分钟代码练习】01—导航栏鼠标悬停效果的实现

热门文章

  1. JDK8下载,安装及环境变量的配置
  2. Linux检查CPU过高的原因
  3. numpy linspace
  4. 整理下开发中常用的第三方库
  5. 公司冷备服务器1.100切换到1.99
  6. hdu 5094 Maze bfs
  7. HTTP认证模式:Basic and Digest Access Authentication
  8. [BZOJ]2194: 快速傅立叶之二
  9. Real-time 节点
  10. REST API之前端跨域访问