如何評價 Google I/O 2017 上發布的 Polymer 2.0?

Google 在 IO2017上發布了 Polymer 2.0,並且宣布 polymer 已經應用於包括新版 YouTube 的大量 Google 服務中。

本題已收錄至知乎圓桌:Google I/O 2017,更多「Google I/O」相關話題歡迎關注討論


我在翻譯Polymer文檔網站:http://polymer-zh.cn,只是翻譯得比較慢,望見諒!

粗略的感覺,2.0的文檔量可能比1.0的翻了一番,特別是數據系統這塊增加了很多,作為文檔翻譯者來說,感覺現在更加任重而道遠了!當下主流的瀏覽器都開始原生支持Web組件標準了,感覺2.0版本應該會是第一個比較好用的版本吧,除了不支持IE11以下。

Polymer是谷歌的Chrome團隊搞的,原來是作為一個技術實驗,看能不能在現有瀏覽器技術上實現對Web組件標準的使用,後來發現可以,就越搞越大了。

現在在谷歌內部全面推行,已有一百多個項目使用了Polymer;其中,也被內置在Chrome瀏覽器中了,比如下載列表界面就是用Polymer實現的,因此,藉助這一點,Polymer團隊號稱Polymer的最終用戶已有20億了,還真不是吹的!YouTube新版本也使用Polymer來實現。

在谷歌之外,各個行業的一些領頭羊公司也在使用Polymer,具體可以看看這兩個網站:

Made With PolymerPolymer/polymer

麥當勞的菜單看板都是用Polymer實現的了!

Polymer團隊提供了上百個實現好的Web組件,其中最多的是UI組件,這些UI組件都是基於Material Design,每個元素都能同時用於PC端和手機端,在PC上和手機上使用了不同的展現方式,具體類別可以看一下原來這個老網站:

Polymer Element Catalog

現在建了個開放的Web組件集合網站:

Discuss amp;amp;amp;amp;amp;amp;amp; share web components

所有社區開發的Web組件都可以提交到上面,就算不是用Polymer開發的也可以。現在上面已收錄了近千個Web組件了。

Polymer 2.0主要是遷移到對Web組件標準V1的支持,以及更好的代碼寫法,其他像數據系統的改進等。提供了一個兼容層,能讓你同時運行1.0和2.0的代碼,以實現開發向2.0的平滑遷移。

Polymer CLI這次也發布了1.0版本了,比較穩定了。IDE的集成支持主要是提供了對Atom和VSCode的支持。

Polymer團隊提出的PRPL模式,可以看一個現實的例子:Twitter Lite:

https://mobile.twitter.com/home

在手機上體驗,感覺比Twitter原生App還要順滑流暢。

總之,我還是十分看好Polymer的發展前景的,它把Web開發變成了一場搭積木的遊戲,減少了Web開發人員的痛苦。


去年Velocity China的時候Google的人就說過Youtube基於Polymer重構(重寫)了,不過面對Google為什麼要搞Angular和Polymer兩個前端解決方案的問題,Google的人也打了個哈哈,語焉不詳。

其實,Angular更多為內部應用服務,搞得越來越像Visual Studio,上手簡單,IDE支持,等等等等。

(而這個Polymer倒也真像是正經通用框架,因為它就是Web Component標準的一個polyfill,換句話說,既然Web Component還不是所有瀏覽器都支持,那就用JS搞一個補丁出來,讓瀏覽器支持Web Component。) #更正:下面這一段不正確,請看下下一段。

Polymer基於Web Component這個標準的一個庫,等於在Web Component之上再加一層糖,讓用起來比較爽快,現在還不是所有瀏覽器都支持Web Component,但是藉助polyfill可以達到目標。

想想看,既然是瀏覽器一級別該支持的東西,在上面開發的應用當然可以更通用。

Web Component是未來標準,但是,開發者已經等不及了,其思想已經被React、Vue等框架實現了,對的,React相當於把Web Component用另一種介面實現了一遍,但是也就不能稱為「標準」了。

如果Polymer早幾年出來猛推的話,可能前端世界是另一番景象。


Polymer 這個東西就是 Web Component 標準的一個 polyfill 以及附帶的一些工具(數據綁定,從模板創建元素之類的)

值得注意的是,Polymer 2.0 改進了 polyfill 的實現,以至於可以和其他框架混用(比如 Polymer mix Vue)

也許 Polymer 存在的意義不是和其他框架爭奪市場,而是促進 Web Component 標準的制定、實現、與使用吧。


polymer2 是基於 customelements v1 推出的快速開發框架

customelements

v1的class目前在babel webpack編譯中還是不太順利 雖然可以解決

v1隻是更加規範化 相比 v0 加了

adoptedCallback (調用 document.adoptNode(el) 時觸發)

使用了class 初始化

開始預準備customElements 這個全局變數

polymer v1 是基於 customelements v0 開發的 可以看出框架的發展業推動了v1的提出

至於為什麼polymer angular同時開發 這個就是由於polymer的主力和youtube比較好 而youtube

主要業務在前端 比較在意快速開發

polymer v2 最大的改變就是不再默認使用shadow dom 並且充分考慮兼容其他框架

為什麼不再支持ie10 因為ie10隻有win8 win7會出現 佔有率很低

polymer 一大援助就是 android android現在想推出自己基於pwa的小程序 那麼polymer無疑就是一個非常好的頁面開發框架

有興趣的人可以看我知乎的專欄


這破圈吃棗藥丸,如何評價Polymer的問題下面都能看到Angular無腦黑和噴子

不看Google IO,也有可能翻不了牆的噴子,也可能不認識英文,不過這些都沒關係,總能認識Angular這幾個字母吧

——————————————————————————————

https://events.google.com/io/schedule/?section=may-18sid=5bd70da9-c3b6-4b39-85c2-a8fbe140b7f2

https://events.google.com/io/schedule/?section=may-18sid=8c55bae4-4f50-411e-8ad1-2900ff972dcd


推薦閱讀:

AngularJS 究根到底是 MVC 還是 MVVM?
react-router頁面滾動時,頁面位置問題?
前端是如何管理後端提供的API的?
如何使自己編寫的程序更靠譜(Robust)?
js原型鏈與lua元表的異同?

TAG:前端開發 | 前端工程師 | GoogleIO | 前端框架 | GooglePolymer |