React.js Conf

今年的 React.js Conf 雖然是單一 library 的研討會,不過議程的水準卻是蠻高的,而且蠻多內容並不是只限於 React.js,加上也是對於前端領域一些比較新的概念,所以我覺得是這兩年最讓人感到印象深刻的一場研討會了吧,下面介紹幾場我覺得收穫比較多的講題:

React Native

React Native 是 React.js 最近最重大的發展,把本來抽出來的 DOM 底層換成 native app 的操作,原來寫 JavaScript 的開發者就可以直接用寫 React.js App 的方式來做原生介面的 Mobile App,發表時讓很多人眼睛一亮,沒想到會把 React.js 的 Virtual DOM 這樣用,而表現出來的效果也很讓人滿意,因為是用原生的控制元件,也不會有額外的親和力問題,加上現有的很多 JavaScript Library 都可以用,也不會有太多東西要自己從頭開始,Apache Cordova 的 plugin 也都可以使用,最近也正式對外公開了,有興趣的可以試試看。

CSP

之前我也有介紹過的 CSP,在 React.js Conf 也有講者介紹,雖然我覺得現在用 js-csp 來做 Channel 溝通還不是很好用,不過應該 async function 可以用之後會比較普遍吧,就算之後沒真的派上用場,要是轉行寫 Go 也會用的上才是。

Immutable

Immutable Data 已經聽說很久了,不過這場演講算是讓我第一次真的能有些體會到底優點在哪,雖然 Facebook 有 JavaScript 的 Immutable library ,不過這場主要是在介紹資料結構的特性,而不是在介紹自家 library,如果對他們底層如何實做的話還可以看看 Polymatheia 的 Understanding Clojure's Persistent Vectors 系列文章,單純要實做 Immutable Data 並不難,不過要考慮到不對效能產生影響其實還要考慮蠻多細節的,我後來也嘗試實做了一個 Immutable Quad Tree,做的過程中則更實際的體會到所謂的只要簡單的==比對就可以知道資料是否相同的好處。另外還要補充一點,Immutable Data 可能在下一版的 ES7(2016) 也會有,總之又是個先學起來不吃虧的。

AST

這場演講是在講修改 Abstract Syntax Tree 來做一些程式碼的修改,算是把 AST 的應用講得很淺顯易懂的一場演講,還順便介紹到很多相關的工具,像是 estools,其實一個程式語言的 spec 通常只有定到語法的部分,後面 compiler 要產生什麼樣子的 AST 是他們自己決定的,不過通常會有個主流的格式,而目前 JavaScript 領域則是 Mozilla SpiderMonkey 的 AST 格式為主,不過其實因為應用太多,也有人在做標準化的工作,叫 estree


srcset

Responsive Image 大概定案成srcset<picture>都有了,src-N 已經消失,雖然我還蠻喜歡,不過總之最近發現srcset和我當初介紹時已經差蠻多,中文資源有找到 Zhusee 有另外一篇介紹,不過其實我去看現在的 spec 的時候發現,又有些修改了!最早 srcset 後面是用類似 media query 的設計,後來改成對圖片的 metadata,spec 裡面稱為 descriptor,分別有 width descriptor 用w和 density descriptor 用x,而且限制 srcset 裡面只能用同一種 descriptor,例如全部用x或是全部用w,所以:

  1. 不能在一張圖片裡面同時有wx
  2. 全部都用w或是全部都用x
  3. 不可有相同的數值,例如兩個1x或是兩個760w
  4. Descriptor 可以算是該圖片的資訊
閱讀「srcset」全文

Loader

Loader 是 ECMAScript 定義要來處理 module import/export 等等事情的底層介面,ES6 的 module 我一直都很好奇,到底要怎麼去找 import 進來模組的原始碼,會好奇這點是因為如果是網頁環境,所有其它模組的原始碼一定是在遠端的 server 上,要拿到勢必是一個 request,然後還要等下載,總之就是非同步的流程,以前在 ES5 的話,要做非同步控制大概就是要做成 callback 的形式,所以會有像 AMD 那樣的設計出來,加上 module 名稱和檔案名稱可能又有差別,像是差個副檔名之類的,而 ES6 提供了原生的 import/export 語法來定義 module,所以我就很好奇它的底層要怎樣設計才能標準化。

閱讀「Loader」全文

更之前的文章