摘要: 我们在canvas里绘制线段时,经常会发现实际绘制出来的效果与我们设置的宽度不一致,抑或者是与我们预想的有色差,我们不禁会怀疑是否代码有误,其实,这是canvas本身绘制时的像素边界逻辑所影响的,我们无法改变,但可以巧妙避开。 阅读全文
posted @ 2014-07-09 16:32 rockyli 阅读(9385) 评论(2) 推荐(9) 编辑
摘要: 我们一般直接为canvas元素设置width与height属性来指定大小,但是,当我们使用css设置canvas元素大小的时候,会发现一些奇奇怪怪的问题,比如,坐标偏移,图形缩放等,根据原因在于canvas元素尺寸与绘图表面尺寸的区别 阅读全文
posted @ 2014-07-03 14:42 rockyli 阅读(8272) 评论(0) 推荐(5) 编辑
摘要: 测试在软件开发中至关重要,目前针对不同的开发语言,都有比较成熟的测试框架,如jUnit,cUnit,cppUnit,nUnit等,我们统称为xUnit,他们的都遵守统一的规则:针对代码测试断言启动测试结果生成,结果上报Javascript的自动化测试一直以来都是一个比较头疼的问题,对于javascript,目前也有比较规范的测试框架,如Qunit,YUI Test,JSTestDriver等,他们也各有其特点及使用范围 Quint是jQuery团队用它来对JQuery库进行单元测试的,需要下载quit.css和qunit.js文件。 YUI Test开发的初衷也是开发对于为了对YUI进行单元测 阅读全文
posted @ 2014-04-08 12:24 rockyli 阅读(1263) 评论(0) 推荐(1) 编辑
摘要: 移动端优化由于移动设备有限的CPU处理能力,移动网络的高往返时间,以及移动应用的快速增长,对移动端的理解以及优化相对于PC端来讲变得更加重要。Page Speed Insights现在可以让你轻松地分析和优化您的移动端网站的性能。下面讲的很多移动端的最佳优化方案也同样适用于PC端,所以这些建议也包含在PC端浏览器的网页速度分析报告中。推迟JavaScript的解析使登录页(着陆页,landing page)重定向可缓存推迟JavaScript的解析概览为了加载一个页面,浏览器必须解析所有标签的内容,这额外的增加了页面的加载时间。最小化页面加载所需的JavaScript,推迟解析JavaScri 阅读全文
posted @ 2014-04-02 20:02 rockyli 阅读(845) 评论(0) 推荐(0) 编辑
摘要: 篇前声明:为了不涉及业务细节,篇内信息统一以某游戏,某功能代替前不久,某游戏准备内测客户端,开发人员测试过程中发现某功能突然不灵了,之前的测试一切ok,没有发现任何异常,第一反应是,游戏内浏览器都是自己包装的,是不是做了什么改造,触发了某个盲点。游戏方表示浏览器还是以前包装的Chromium,不过还真有不同的,就是UA改了,而且不是在原UA后加的后缀标识,而是完全替换,使用了游戏名称做UA,问题应该就在这里了,从代码上来看,不会触发任何雷区,理论上不会有问题,如果有问题,极有可能出现在框架中,YUI3的底层逻辑。顺便抱怨一下,游戏内测试本身就是一个蛋痛的事情,基本都是自己封装浏览器,即使使用同 阅读全文
posted @ 2014-04-02 09:31 rockyli 阅读(928) 评论(0) 推荐(2) 编辑
摘要: 缓存优化大部分的网页都包括不常更改的资源,比如CSS文件,图片文件,JavaScript文件等。这些资源通过网络下载需要一定的时间,这就增加了网页加载的总时间。HTTP缓存可以让这些资源通过浏览器以及代理服务器进行保存或缓存。一旦资源被缓存,用户再次访问这些页面时,浏览器或代理可以直接引用本地缓存的副本,而不必重新下载。因此,缓存是一个双赢的策略:你可以通过减少所需资源文件的http请求数来减少​往返时间,还可以大幅的减少响应的网络负荷。启用缓存除了可以有效的减少后续用户访问时页面加载时间,还可以显著减少网站带宽消耗和网站运维费用。有效利用浏览器缓存有效利用代理缓存有效利用浏览器缓存概览在ht 阅读全文
posted @ 2014-04-02 09:19 rockyli 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 时序问题在javascript中比较常见,尤其是在网络环境不稳定时以及某些浏览器本来版本中比较多,遇到此类问题,往往会使开发者非常头痛,问题的重现需要特定的环境,是偶发的,不容易重现。对于有经验的开发者,大部分的时序问题都可以在代码中避免,对于浏览器,js代码的执行是单线程的,同一时刻只有一段js代码在执行,js的执行主要是通过两种方式来触发:script标签中的代码加载执行:js是解释型语言,从上到下边解释边执行,通常,在模块化的js代码中,我们一般习惯给与一个统一的初始化执行入口。通过事件分发的形式来执行:如按钮点击,鼠标划过等事件触发,主要对应于用户操作dom节点触发,当然,ajax请求 阅读全文
posted @ 2014-04-01 11:48 rockyli 阅读(563) 评论(0) 推荐(0) 编辑