Home

启用 HTTP2 升级 Nginx 记录

Nginx 1.9.0以上的版本已经支持 http2 了,使用 nginx 的 with-http_v2_module 模块和 LibreSSL 即可启用。在编译 nginx 的过程中遇到了几个问题在这里记录一下,以避免以后的安装遇到相同的问题。

虚拟 Dom (virtual-dom) 的理解与研究

在虚拟dom还没有普及的时候,一些解析html的模板引擎会用innerHTML来输出到页面上,不管这个dom节点和要输出的html数据是否有没有变化,假如这里只是改变了其中一个节点的text,但是它却直接将整个节点的innerHTML重新赋值渲染到页面,一下子销毁那么多元素,而且某些节点如果还绑定了事件,这样就造成了性能浪费,还可能会导致GC出问题。

设计模式 - 单例模式 (Singleton Pattern)

单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。

使用 background-size 让精灵图实现自适应缩放

利用background-size自适应的原理,再使用百分比作为宽度和高度的单位,例子中的精灵图有7列,所以设置background-size: 700% 100%。使用background-position就能取到精灵图里每个元素,取图中的第二个元素:background-position-x: 200%。

单线程运行的 javascript 引擎 - setTimeout

javascript是单线程运行的,单线程意味着代码在任务队列中会按照顺序一个接一个的执行。异步代表JavaScript代码在任务队列中的顺序并不完全等同于代码的书写顺序,比如事件绑定、Ajax、setTimeout()等任务的发生时间是“不可被预期”的。 浏览器的内核是多线程的,它们在内核控制下相互配合以保持同步,一个浏览器至少实现三个常驻线程:JavaScript引擎线程,GUI渲染线程,浏览器事件触发线程。

利用 ES7 的 async 和 await 解决回调函数噩梦

由于Javascript执行环境是“单线程”的,想要实现异步编程,就会用到回调函数。然而如果一些ajax请求之间存在依赖,或者服务端使用node进行大量的io操作时就会出现回调函数嵌套的情况,代码就变成了横向发展,不利于阅读,维护起来麻烦。