Object.defineProperty 实现双向数据绑定

语法 Object.defineProperty(obj, prop, descriptor) 参数 obj 要在其上定义属性的对象。 prop 要定义或修改的属性的名称。 descriptor 将被定义或修改的属性描述符。 返回值 被传递给函数的对象。 示例 var person= {}; Object.defineProperty(person, “name”, { value: ‘名字’ }) console.log(person.name); // 名字 双向绑定 set 和 get var person = {}; Object.defineProperty(person, ‘nam …

T.R.E. 飘动旗帜

实现原理:通过遍历 getImageData 函数返回的元素逐像素获取原始画布每个点的rgba值,然后每一帧通过运动函数对每个点的位置进行偏移,对比原画布,获取该点在原位置的rgba值,然后直接对a分量进行修改,修改的依据仍然是斜率。 <!DOCTYPE html> <html> <head> <meta charset=”utf-8″ /> <meta http-equiv=”X-UA-Compatible” content=”IE=edge”> <title>T.R.E. 飘扬旗帜</title> < …

WebSocket 压力测试

websocket-bench 是个用 Node.js 编写的命令行工具,可以对使用 Socket.io、faye、Primus、WAMP 编写的长连接应用进行性能和压力测。 websocket-bench 安装 1 npm install -g websocket-bench 使用说明 以 CentOS 6.5 为例。首先要修改一下文件打开数,默认是1024,修改为一个比较大的值,总共65535个端口,websocket-bench 推荐设置的是 60000 ,命令如下: 1 ulimit -n 60000 websocket-bench 的参数设置 1 websocket-bench -a …

浏览器缓存机制&处理方法

背景 开发中,经常遇到的问题:修改过css样式或者js代码,F5刷新浏览器,代码并没有生效,这是浏览器缓存造成的,浏览器设计的目的是为了节省用户流量,因为资源文件一般较稳定,数量多,但修改量少。 浏览器缓存机制 ① 首次加载 ② 再次加载 相关术语 Etag HTTP协议规格说明定义ETag为“被请求变量的实体值”。另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:ETag:”2400-5437207ef28 …

前端图片压缩基于(h5 file API & canvas)

前端压缩的意义   对于大尺寸图片的上传, 如头像等, 在前端进行压缩除了省流量外,最大的意义是提高了上传速度, 改善了用户体验。 以下例子可作为一个头像上传压缩, 图片被压缩至长宽最大小于200px。 实现原理 核心API使用canvas的drawImage()方法。 canvas的drawImage()方法API如下: context.drawImage(img, dx, dy); context.drawImage(img, dx, dy, dWidth, dHeight); context.drawImage(img, sx, sy, sWidth, sHeight, dx, …

为什么用 void 0 代替 undefined

undefined 不是保留词,它只是全局对象的一个属性,在低版本 IE 中能被重写。 undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写。 为什么选择 void 0 作为?undefined 的替代品? void 运算符能对给定的表达式进行求值,然后返回 undefined。也就是说,void 后面你随便跟上一个表达式,返回的都是 undefined,都能完美代替 undefined!那么,这其中最短的是什么呢?毫无疑问就是 void 0 了。其实用 void 1,void (1+1),void (0) 或 …

nginx配置详解

#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; #进程文件 pid /var/run/nginx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit …

浏览器渲染原理

1、首先渲染引擎下载HTML,解析生成DOM Tree 2、遇到css标签或JS脚本标签就新起线程去下载他们,并继续构建DOM。(其中css是异步下载同步执行)浏览器引擎通过 DOM Tree 和 CSS Rule Tree 构建 Rendering Tree 3、 通过 CSS Rule Tree 匹配 DOM Tree 进行定位坐标和大小,这个过程称为 Flow 或 Layout 。 4、最终通过调用Native GUI 的 API 绘制网页画面的过程称为 Paint 。 当用户在浏览网页时进行交互或通过 js 脚本改变页面结构时,以上的部分操作有可能重复运行,此过程称为 Repaint …