前言
最近看文档,一直碰到hydrate单词。原本以为这只是装载数据的意思,但是今天查词典——<code>hydrate v.(使)水合</code>——并不是这样。这又是一个黑话。干脆整理一下我所见的来源不一定是前端,但是却经常在前端文档中出现的黑话。
hydrate
根据stackflow大神的解释,hydrate与serialization的部分操作很像,但是概念却大相径庭。serialization是将数据结构或者对象属性转化为文件或者内存buffer的过程,根据serialization生成的文件或者字节流,我们可以在另一个环境重构语义相同的对象或数据结构。而hydrate是向以创建的对象中填充数据,对于熟悉js的人来说,这不是一个陌生的概念。使用hydrate可以优化性能,比如实例化了一个对象后,只向数据库请求将要用的部分field值,那么剩余的值就不会浪费宽带和cpu,性能不就优化了吗?
monkey patch
最早见monkey patch是在python中,后来与js中见到也不奇怪。monkey patch就是为动态语言而生。
monkey patch表现一般是替换一个类的方法,使这个方法增加新的功能或者消除bug。
形式
someObject.foo = function(...arg) {
return monkeypatch(someObject.foo);
}
例子:为某函数增加log
someObject.foo = function(..arg){
console.log("someEvidence",someState);
return someObject.foo(...arg);
}
然而有一句话Monkeypatching never feels right, but we can live with this for now.。如果我们想要包装一串函数在某类的方法中,那么monkeypatch就不合时宜了。因为monkey patch的本质是将新的方法赋值给原方法。当第一个修饰函数还未赋值给原方法时,第二个函数使用的<code>someObject.foo</code>可能是未完成赋值的原方法的,这可能带来麻烦。解决方法之一就是将修饰函数的参数改为被修改的对象,直接在函数体中完成替换。
vanilla JS
vanilla JS指纯原生的js,可以看作pure javascript。
Polyfill
根据web开发中的“黑话”的解释,Polyfill的准确意思为:用于实现浏览器并不支持的原生API的代码。然而babel经常使用polyfill,所以polyfill的使用场景可以更广泛。
Isomorphic & Universal
universal一词来源mjackson的universal js文章,他在培训时发现,很多人不知道Isomorphic的意思,所以想用universal代替Isomorphic。
Isomorphic js和universal js指可以在前端或后端运行的js。虽然jq,angular,ember都有相似的api,但是它们的设计原则,开发用途却各式各样。universal或许可以指代所用可运行的js。
如mjackson所说A good name teaches about purpose and responsibility, so you have to spend some time thinking about it.名字平常看来没有意义,但是真正到表达时,才显得难能可贵。
mixin
高频词,算不上黑话,但是它出现于各个编程环境之中,如ruby,python,js,scss等等。mixin往往与可复用组件挂钩,也常常是框架设计的加益。
16.2.3更新
stub
stub通常指已定义却未实现的函数,像skeleton function。比如wiki上的例子:
var Temperature = ThermometerRead(Outside);
if(Temperature > 40) console.log("It's HOT!");
var ThermometerRead = function(Source insideOrOutside){
return 28;
}
stub还可以指那些模拟远程端进程的函数,在meteor文档中描述<code>Meteor.Methods</code>时有使用。
16.3.5更新
perf hit
有某种东西让系统性能(performance)下降。