javascript

关于Function.prototype.toString的野生小技巧

⚠约定: 以下将Function.prototype.toString简称为fn.toString

我发现自己快没救了,又把一个短文硬生生写成了长文,客官慢用…

先介绍下Function.protoype.toString

The toString() method returns a string representing the source code of the function.
—- from MDN

即这个原型方法可以帮助你获得 函数的源代码!!, 比如

前端黑科技——纯clip-path打造的3D模型渲染器

⚠警告:

  • 本页DEMO只兼容到webkit浏览器(如chrome), 请确保你的正确打开姿势

  • 本文涉及到的资源clip3d: https://github.com/leeluolee/clip3d

  • 前戏较长, 请耐心..

缘由

几天之前, 一个species-in-pieces的网站把我震到了(如下图), 出于一个优秀前端的敏锐嗅觉和原始本能
我立刻祭出了看家法宝——Chrome开发者工具开始偷窥这个网站.

species in pieces

简单推敲之后,我发现其实原理可以归结为一个属性—clip-path, 又一篇博文的材料到手!
当我兴高采烈的将我的《Species in Pieces原理解析》进行到一半时,发现First blood在weibo上已经被人抢了.

超简单工具puer——“低碳”的前后端分离开发

前几天,跟一同事(MIHTool作者)讨教了一下开发调试工具。其实个人觉得相较于定制一个类似MIHTool的Hybrid App容器,基于长连的B/S架构的工具其实会是一个更轻量的解决方案。此文会分享一下超简单工具puer,以及如何利用它在产品开发的各阶段实现高效的开发。

本文title有点大哈,相较于目前国内正流行起来的前端后移的前后端分离方案,本文介绍是一种“低碳”的版本,所以不要纠结于这个Title的正确性哈。

使用莱文斯坦距离(Levenshtein distance)计算两数组的差异

前言

莱文斯坦距离(Levenshtein distance以下简称ld)是一种常见的算法或可以称之为一种度量单位(前提是操作权重确定),它用于表示从字串序列A到字串序列B所需要进行操作(增加、删除、更新)的综合。

鉴于数组与字符的相似性,这个算法当然同样适合与数组

问题是作为一个前端开发,你不好好切图,用这个算法做啥?

事实上Regularjs内部就使用到了这种算法,它用于检测数组的变动差异,并将差异反映到View中(即Dom)。

ld算法的另一个好处是,可以容易的将计算结果映射到未来将会到来的JS ES6Array.observe的返回值形式,方便未来的无缝迁移。

requirejs的插件介绍与制作

前言

我这里就不介绍requirejs了, 简而言之: requirejs是支持AMD规范的模块加载器, 事实上它也是AMD的最直接推动者。

现在可供挑选的开源模块解决方案很多,比如component、cjs+browserify、umd等等,但是无疑类似requirejs这类加载系统是现在最成熟和可靠的解决方案,所以regularjs第一步就是提供对requirejs的插件支持。

一步步教你实现一个todomvc(基于Regularjs)

前言

现在市面上充斥了越来越多的javascript框架,给开发者的技术选型带来极大的选择成本,todomvc在这个环境下应运而生.

由于todomvc有一个完整的实现定义,它复杂度适中,大概就是平时开发的一个组件的功能复杂度,开发者可以轻松对各个框架的代码做对比,同时由于功能一致,也可以进行各框架之间的性能对比(当然这个测试案例其实并没有很大的实际意义).

todomvc