前言
最近看文檔肛搬,一直碰到hydrate單詞阎毅。原本以為這只是裝載數(shù)據(jù)的意思蜜笤,但是今天查詞典——<code>hydrate v.(使)水合</code>——并不是這樣靴迫。這又是一個黑話惕味。干脆整理一下我所見的來源不一定是前端,但是卻經(jīng)常在前端文檔中出現(xiàn)的黑話玉锌。
hydrate
根據(jù)stackflow大神的解釋赦拘,hydrate與serialization的部分操作很像,但是概念卻大相徑庭芬沉。serialization是將數(shù)據(jù)結(jié)構(gòu)或者對象屬性轉(zhuǎn)化為文件或者內(nèi)存buffer的過程躺同,根據(jù)serialization生成的文件或者字節(jié)流,我們可以在另一個環(huán)境重構(gòu)語義相同的對象或數(shù)據(jù)結(jié)構(gòu)丸逸。而hydrate是向以創(chuàng)建的對象中填充數(shù)據(jù)蹋艺,對于熟悉js的人來說,這不是一個陌生的概念黄刚。使用hydrate可以優(yōu)化性能捎谨,比如實例化了一個對象后,只向數(shù)據(jù)庫請求將要用的部分field值,那么剩余的值就不會浪費寬帶和cpu涛救,性能不就優(yōu)化了嗎畏邢?
monkey patch
最早見monkey patch是在python中,后來與js中見到也不奇怪检吆。monkey patch就是為動態(tài)語言而生舒萎。
monkey patch表現(xiàn)一般是替換一個類的方法,使這個方法增加新的功能或者消除bug蹭沛。
形式
someObject.foo = function(...arg) {
return monkeypatch(someObject.foo);
}
例子:為某函數(shù)增加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.臂寝。如果我們想要包裝一串函數(shù)在某類的方法中,那么monkeypatch就不合時宜了摊灭。因為monkey patch的本質(zhì)是將新的方法賦值給原方法咆贬。當(dāng)?shù)谝粋€修飾函數(shù)還未賦值給原方法時,第二個函數(shù)使用的<code>someObject.foo</code>可能是未完成賦值的原方法的帚呼,這可能帶來麻煩掏缎。解決方法之一就是將修飾函數(shù)的參數(shù)改為被修改的對象,直接在函數(shù)體中完成替換煤杀。
vanilla JS
vanilla JS指純原生的js眷蜈,可以看作pure javascript。
Polyfill
根據(jù)web開發(fā)中的“黑話”的解釋怜珍,Polyfill的準(zhǔn)確意思為:用于實現(xiàn)瀏覽器并不支持的原生API的代碼。然而babel經(jīng)常使用polyfill凤粗,所以polyfill的使用場景可以更廣泛酥泛。
Isomorphic & Universal
universal一詞來源mjackson的universal js文章,他在培訓(xùn)時發(fā)現(xiàn),很多人不知道Isomorphic的意思嫌拣,所以想用universal代替Isomorphic柔袁。
Isomorphic js和universal js指可以在前端或后端運行的js。雖然jq异逐,angular捶索,ember都有相似的api,但是它們的設(shè)計原則灰瞻,開發(fā)用途卻各式各樣腥例。universal或許可以指代所用可運行的js。
如mjackson所說A good name teaches about purpose and responsibility, so you have to spend some time thinking about it.名字平吃腿螅看來沒有意義燎竖,但是真正到表達(dá)時,才顯得難能可貴要销。
mixin
高頻詞构回,算不上黑話,但是它出現(xiàn)于各個編程環(huán)境之中,如ruby纤掸,python脐供,js,scss等等借跪。mixin往往與可復(fù)用組件掛鉤政己,也常常是框架設(shè)計的加益。
16.2.3更新
stub
stub通常指已定義卻未實現(xiàn)的函數(shù)垦梆,像skeleton function匹颤。比如wiki上的例子:
var Temperature = ThermometerRead(Outside);
if(Temperature > 40) console.log("It's HOT!");
var ThermometerRead = function(Source insideOrOutside){
return 28;
}
stub還可以指那些模擬遠(yuǎn)程端進(jìn)程的函數(shù),在meteor文檔中描述<code>Meteor.Methods</code>時有使用托猩。
16.3.5更新
perf hit
有某種東西讓系統(tǒng)性能(performance)下降印蓖。