前言
最近看文檔,一直碰到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ì)是將新的方法賦值給原方法。當?shù)谝粋€修飾函數(shù)還未賦值給原方法時,第二個函數(shù)使用的<code>someObject.foo</code>可能是未完成賦值的原方法的,這可能帶來麻煩。解決方法之一就是將修飾函數(shù)的參數(shù)改為被修改的對象,直接在函數(shù)體中完成替換。
vanilla JS
vanilla JS指純原生的js,可以看作pure javascript。
Polyfill
根據(jù)web開發(fā)中的“黑話”的解釋,Polyfill的準確意思為:用于實現(xiàn)瀏覽器并不支持的原生API的代碼。然而babel經(jīng)常使用polyfill,所以polyfill的使用場景可以更廣泛。
Isomorphic & Universal
universal一詞來源mjackson的universal js文章,他在培訓時發(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.名字平??磥頉]有意義,但是真正到表達時,才顯得難能可貴。
mixin
高頻詞,算不上黑話,但是它出現(xiàn)于各個編程環(huán)境之中,如ruby,python,js,scss等等。mixin往往與可復用組件掛鉤,也常常是框架設(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還可以指那些模擬遠程端進程的函數(shù),在meteor文檔中描述<code>Meteor.Methods</code>時有使用。
16.3.5更新
perf hit
有某種東西讓系統(tǒng)性能(performance)下降。