前端“黑话”polyfill

Web开发,但是却经常在前端文档中出现的黑话

前言

在Web前端出这日新月异的时日,总是待看有新星的英文技术博客来与达到技术的腾飞之潮流。而有时候会遇上有较频繁的“黑话”,在社区里或者已是看好的“共同语言”,而若沾的遗失就偏偏看不理解。就像今天几所有中国人数犹晓得duang是啊东西,但是一个刚学中文的洋人看到后或者就一头雾水。

黑话也是若上学的,本文收集各种Web开发的切口。这里先介绍两个。

前言

近年看文档,一直碰到hydrate单词。原本认为马上单是装数据的意思,但是今翻词典——<code>hydrate
v.(使)水合</code>——并无是这么。这还要是一个切口。干脆整理一下自己所呈现之起源不肯定是前者,但是却经常在前者文档中冒出的切口。

Polyfill

Polyfill或者Polyfiller,是英国Web开发者 Remy
Sharp 在咖啡厅蹲坑的上打首往出来的。当时客思念用一个乐章来形容”用JavaScript(或者Flash之类的呀不良)来实现有浏览器不支持之原生API”。Shim这个曾有词汇第一时间出现在外的脑际里。但是他回头想了一下Shim一般发生和好的API,而无是止实现原生不支持之API。苦思冥想一直惦念不顶适合的单词,于是他一怒之下造了一个单词Polyfill。除了他协调用之词以外,他还让任何开发者用。随着他于各种Web会议发言和他形容的书写《Introducing
HTML5》中频繁提到是词,大家用了还当挺好,就一路来用。

Polyfill的精确意思为:用来落实浏览器并无支持之原生API的代码。

像,querySelectorAll是不少现代浏览器还支持之原生Web
API,但是有些古老的浏览器并无支持,那么只要有人写了仓库,只要用了这库房,
你不怕得于古老的浏览器中用document.querySelectorAll,使用方式以及现代浏览器原生API无异。那么这个库房就足以叫Polyfill或者Polyfiller。
吓,那么问题便来了。jQuery是免是一个Polyfill?答案是No。因为它并无是促成有正经的原生API,而是包了和谐API。一个Polyfill是剔除平新一直浏览器 正式原生API 之间的异样之同种植包装,而非是贯彻好之API。
曾部分有些Polyfill,如 Polymer 是让初的浏览器也会为此上
HTML5 Web Component
的一个Polyfill。FlashCanvas举凡故Flash实现之可以于匪支持Canvas
API的浏览器也克就此上Canvas的Polyfill。
 

hydrate

根据stackflow大神的解释,hydrate与serialization的片操作非常像,但是概念倒是不行相径庭。serialization是拿数据结构或者目标属性转化为文件或者内存buffer的进程,根据serialization生成的文本或者字节流,我们好以另外一个条件重构语义相同的对象要数据结构。而hydrate是奔以创造的靶子中填入充数据,对于熟悉js的人头吧,这不是一个陌生的概念。使用hydrate可以优化性能,比如实例化了一个靶后,只为数据库请求将用之有的field值,那么余下的价值就非会见浪费宽带与cpu,性能不就优化了邪?

Shim和Polyfill

于JavaScript的世界里,有点儿个词经常于波及,shim和polyfill.它们凭借的还是什么,又生出啊分别?

一个shim是一个仓库,它用一个初的API引入到一个原本的环境受到,而且仅因原环境被早已部分手段实现。

一个polyfill就是一个所以在浏览器API上之shim.我们一般的做法是事先反省时浏览器是否支持有API,如果非支持之话语虽加载对应的polyfill.然后乍老浏览器就还好运用这个API了.术语polyfill来自于一个家装产品Polyfilla:
Polyfilla是一个英国产品,在美国称之为Spackling
Paste(译者注:刮墙的,在神州喻为腻子).

切记这同样点就执行:把本来的浏览器想象变为一面有了破裂的墙.这些[polyfills]会见拉我们拿当时面墙的分裂抹平,还我们一个重新好之光润的墙(浏览器)

Paul Irish发布了一个Polyfills的总页面“HTML5 Cross Browser
Polyfills”.es5-shim凡是一个shim(而无是polyfill)的例证,它当ECMAScript
3的发动机上贯彻了ECMAScript
5的新特征,而且当Node.js达成及当浏览器上生完全相同的呈现(译者注:因为她会当Node.js落得采用,不光浏览器上,所以她不是polyfill).

 

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)下降。