DaraW

Code is Poetry

多说一句再见

因公司业务调整,非常遗憾的向大家宣布多说项目即将关闭。 我们将于2017年6月1日正式关停服务,在此之前您可以通过后台的数据导出功能导出自己站点的评论数据。 对此给您造成的不便,我们深表歉意,感谢您的一路相伴。

从博客搭建好以来一直使用着多说作为评论系统,虽然多说有着不少的黑点,比如上了HTTPS后失去地址栏绿锁,也听说过多说有各种各样的bug,服务器故障导致评论框不出现更是没少见过,不过以后再也不能黑多说了。

Vue响应式原理之Watcher

最近在看Vue的响应式原理时明白了Vue的一些具体的优化手段,在一个数据被操作2次的时候DOM并不会一定跟着修改2次,正常情况下只有一次的修改。
首先Vue响应式原理的大概内容是借助gettersetter来劫持数据的变动的,之前我也曾经写过一篇文章来分析数据绑定的几种实现(如何监听JS变量的变化),但是最近稍微深入了解了Vue的实现原理后发现Vue其实是要比想象中实现的巧妙多了。

《你不知道的JS上卷》阅读小记之匿名函数问题

匿名函数的问题

在第一部分3.3.1匿名与具名一节中,作者提到了匿名函数的三个缺点并给了一个最佳实践,三个缺点分别是调试时栈追踪看不到有意义的函数名带来麻烦,引用自身时只能使用过期的arguments.callee并举了两个例子回调和事件监听器触发后解绑自身,代码可读性;最佳实践是说始终传入具名函数,给函数表达式一个函数名。

《你不知道的JS上卷》阅读小记之setTimeout的this指向问题

这几天翻看了下被传的神乎其神的《你不知道的JS》这本书,其实以前就看过一次,不过当时的level并不高,而且感觉这本书讲的有点绕,所以看了一点就没坚持下去。
这次翻看感觉还是比较轻松的,有些地方写的很好,有的地方还是感觉讲的有点绕(可能是翻译的问题),但总的来说这本书还是很不错的,基本都是JS中有坑、新手难以理解的点,简直就是《JS:The Bad Parts》(哈,开个玩笑~)。
这个小记不是打算记录书中内容的笔记,而是想补充纠正书中的讲的不完善的地方。

ES6实现内部类的写法

最近在把 JIris 移植到JS平台 Iris.js 的过程中不断的在Java和JS两种语言之间切换,ES6的 Class 某种程度来说可以写出更加优雅的代码,而不用去管背后的原型实现。但是不得不说有一个遗憾就是 ES6 虽然支持了静态方法,但是还不支持静态属性和静态类,于是仔细观察了下发现了几种ES6实现静态类的相对优雅的写法。

node-thunkify源码阅读笔记

Node7发布后已经可以通过添加--harmony-async-await的参数调用来直接支持async/await语法了,据说Node8还会进一步推进其发展,于是研究了一下JS的异步流程控制和下一代Node Web框架Koa2

关于generator async/await的发展史已有一大堆文章讲过了,这里不再赘述。
tj的coKoa2上个大版本Koa1的核心,在没有async/await的时候一般会借助co来做自动流程控制。关于co的源码分析文章也有很多,代码不长值得一读,参考了一些分析文章也算是了解了其逻辑和思路。

co中出现了一个thunkToPromise的函数,一些文章都跳过了这个并表示thunk函数已经没什么意义了,但本着好奇心读了阮一峰的Thunk 函数的含义和用法,文中一个地方一时没有搞懂,故写此文记录一下。

如何监听JS变量的变化

如何监听 js 中变量的变化?
我现在有这样一个需求,需要监控js的某个变量的改变,如果该变量发生变化,则触发一些事件,不能使用timeinterval之类的定时去监控的方法,不知道有比较好的解决方案么?

这个问题问的很好。

流行的MVVM的JS库/框架都有共同的特点就是数据绑定,在数据变更后响应式的自动进行相关计算并变更DOM展现。所以这个问题也可以理解为如何实现MVVM库/框架的数据绑定

常见的数据绑定的实现有脏值检测,基于ES5的gettersetter,以及ES已被废弃的Object.observe,和ES6中添加的Proxy

Proudly powered by Hexo and Theme by Hacker
© 2017 DaraW