对于childNodes的认识

前言

对于原生dom操作熟悉的童鞋都会知道childNodes是用来获取某个元素的子元素集合的,返回值是一个对象数组,但一些操作所带来的结果有时候并不是你所预料的一样。

Text返回值

1
2
3
4
5
6
7
8
<div id = 'wrap'>
<div class='test'>test</div>
</div>
<script>
var _wrap = document.getElementById('wrap'),
nodeList = _wrap.childNodes;
console.log(nodeList.length);
</script>

node.js+socket.io实现聊天室

前言

在web2.0的时代,我们可以通过ajax进行异步拉请求,而不需要等待请求完成才响应,这对于web体验而言是一大福音。但随着社会的进步,人们已经不满足这种拉数据的过程,特别是对于许多实时的应用,如聊天、信息监控、通知等,服务器想要给客户端传递一些信息的时候,这个时候就不能等待客户拉数据请求再把数据传送过去,而是要主动推送数据过去,从而出现了socket,一个双向的通信连接实现数据的交换。

javascript中数组的splice操作

前言

大家对于切割操作或许经常用的是数组slice(根据索引值切割)和字符串split(根据分隔符分割),如下所示:

1
2
3
4
5
6
//slice操作
var colors = ['blue','red','green'];
var colors2 = colors.slice(0,2);//blue,red
//split操作
var s1 = "hello,hi,good";
var s2 = s1.split(',');//hello hi good

但其实还有一个很好用而且很强大的数组函数splice一直被人忽略,现在就让我们一起走进splice的世界。

Phantomjs初尝试

Phantomjs简介

Phantomjs身为headless的测试工具,何为headless,就是不需要打开真正的浏览器,使用命令行就可以访问网页。Phantomjs本身就是一个webkit内核的测试工具,换句话就是用Phantomjs模拟webkit内核的浏览器打开网页进行测试,对比curl那些模拟测试有其先天的优势,有些网页的dom节点是通过js进行渲染的,对于curl等的话无法捕捉这部分的节点,但是使用Phantomjs的话可以很轻松办到。Phantomjs对于测试截图、模拟操作有很好的用途,甚至,对于爬虫都有很好的实现,但是对于测试的话,还是有点不尽如人意。

测试的分类

测试一般分为UI测试和逻辑单元测试,对于逻辑单元测试的话,更多的是检测函数的功能实现,目前网上有许多断言的测试工具,如mocha都可以进行断言测试,总体来说逻辑单元测试的复杂性不太高,反而是UI测试的复杂性会高点。

Phantomjs在UI测试上的作用

UI测试,有很大一部分是测试UI的交互等,Phantomjs在获取网页后,可以在内部使用dom交互的模拟操作,并且有一定的监听机制,这些都有利于进行UI的交互测试。另外一方面,有人会进行UI的像素级别的测试,换句话说,就是测试页面在修改前后像素级别上的差异,然后用显眼的符号进行标注,更多的可以参考PhantomCSS。

Nodejs学习笔记

Nodejs特性

异步I/0

Nodejs是异步I/O的实现方式,如同Ajax一样,用户不需要等待请求的完成再进行下一步操作,而是通过回调函数实现,Nodejs读取文件实例:

1
2
3
4
5
6
var fs =  require('fs');

fs.readFile('/path',function(){err,file}{
console.log('读取文件完成');
});
console.log('发起读取文件');

“发起读取文件”会在“读取文件完成”之前输出。