2015年2月18日 星期三

Deferred 與 Promise 的差異


在談Promise 之前,我們先來了解一下 CommonJS.org

CommonJS.org

CommonJS 是一個致力於將 JavaScript 生態圈標準化的計畫,尤其是針對瀏覽器以外的應用環境,也因此第一個版本的名字叫做 ServerJS。
CommonJS 的終極目標是制定一個像 C++ 標準庫一樣的規範,也就是介面,使得基於 CommonJS API 的應用程序可以在不同的環境下運行,就像用 C++ 編寫的應用程序可以使用不同的編譯器和運行時函數庫一樣。為了保持中立,CommonJS 不參與函式庫的實作,而是交給像 Node.js 之類的項目來完成。

而不少開發者向 CommonJS 提出 Promise 的規範草案,但是一直未被列入正式規範,有著 Promises/A, B, KISS, C, D 等版本。其中以 Promises/A 的提案最為簡單,也最常被大家提及。

值得一提的是:Promise/B, D 的提案人是知名流程控管套件 Q.js 的作者 Kris Kowal
滿有趣的一點是:Node 團隊在前年左右放棄繼續遵守 CommonJS 的規範。Isaac 指出 "Ryan basically always gave zero fucks about CommonJS anyway" ,並轉述了 Ryan 的一句重話 : "Forget CommonJS. It's dead. We are server side JavaScript."
有興趣可以看看這個Github的討論串:https://github.com/joyent/node/issues/5132#issuecomment-15432598
( Issac 是 NPM 的作者, Ryan 是 Node 之父 )

2015年2月4日 星期三

你還在為了UI-binding使用肥肥的Angular嗎?試試這些前端函式庫吧!

從 jQuery 到 Angular

從最早的 jQuery 以後,各種前端framework百花齊放:Backbone, Knockout, Ember, Angular....
其中 Angular 狹著 Google 的大名,可以說是在前端世界中呼風喚雨,但是許多人使用Anugular一段時間以後才發現入門容易但是深入難,而且隨著專案的複雜性增加,也開始踩到了各種地雷。因此也有人用這張圖來揶揄模擬Angular的學習曲線:



UI only

許多人開始發現,很多狀態下他們幾乎只需要 Data-UI binding 的功能,React.js 這個 facebook 御用、注重高效render 的 Library 就開始受到廣大的目光關注... React不是個完整的framework,只是專注於View的Library,因此更輕量、也更能與其他framework整合、相容。React官網是這麼說的:
Just the UI
Lots of people use React as the V in MVC. Since React makes no assumptions about the rest of your technology stack, it's easy to try it out on a small feature in an existing project.


但是!

React 推薦使用 JSX 在程式碼中勾勒 template,這點我就真的不行了,覺得髒髒的。所以我實在無法接受 React。

但是幸好這是一個前端技術大爆炸的時代,我們還有很多選擇....