全部的前端程序員們,請注意! 在過去的 3 個月,通過 Rax 團隊不懈的努力,咱們 release 了 Rax 1.1.0 ,同時 Rax 周邊生態也分別取得了各自的突破性進展~前端
咱們從如下 3 個方面提高了內核的能力:react
性能方面:在樣式和佈局(主線程)上所花的事件大幅減小, Rax@1.1.0 的均值 benchmark 指標相比 Rax@1.0.0 提高了 15.8% !各項性能指標離 preact 又更近了一步:git
體積方面:Rax 變得更加輕量了,咱們經過冗餘邏輯提取、內部變量名壓縮、打包工具優化等等策略,使得 Rax@1.1.0 相比 Rax@1.0.0,Minified 體積降低 32.8%,Gzipped 體積降低 12.48%,解析編譯的時間更短,初始化&啓動指標更快,同時帶來的最大收益是加載資源的網絡成本更低!程序員
改動&修復方面:咱們作了兩件事,(1)建立 VDOM 的時候對 props 作了淺複製,避免對傳入對象進行反作用操做(2)在 Dev 模式下,Rax 會經過 Objeact.freeze 凍結 props,避免開發者無心或者有意對 props 進行修改。github
你們比較關注的新功能方面:(1)Rax 支持運行時 PropsType 檢查啦,就像下面這樣:express
(2) Rax 和 React 同樣,對於循環渲染會經過 key 來高效的識別元素變更,這個版本,咱們針對 Dev 模式添加了 key 值校驗的 warning,幫助開發者寫出性能更好的代碼~npm
(3) 更好的異常提示和錯誤碼功能,當開發者寫出會觸發異常的代碼以後,Rax 會在 Dev 模式和 Build 模式下給出對應的錯誤信息:小程序
做爲多端佈局的重要環節之一,Universal API 在過去的 3 個月裏支持了 30 多個阿里、微信小程序的 API,具體能夠使用能夠戳這裏~~~關於如何快速產出抹平多端差別的 API,咱們後續也會有對應的文章分享哦!!!感興趣的同窗能夠持續關注咱們。微信小程序
小程序方向在過去 3 個月,咱們最大的進展,非支持微信小程序莫屬了!同時,咱們支持了 8 個對應的多端基礎組件,開發者能夠經過組裝這些基礎組件來完成本身的多端應用~感興趣的同窗能夠動手嘗試一下:api
npm init rax my-app
複製代碼
即刻進入開發微信小程序的世界~
除了支持開發微信小程序,咱們在工程、語法支持、性能上也有了大幅度的進步。
工程上,咱們支持了多模式下的依賴解析處理,自然支持 less/sass/stylus,更好的錯誤提示、source map、多端配置。
語法上,咱們支持了 JSX+ ,更加隨意的在循環中綁定事件,邏輯表達式渲染等等。
性能上,咱們對長列表渲染進行了自動優化,而且添加了各層數據淺 Diff,經過隊列合併渲染任務從而大大提高了渲染性能。
咱們能夠說,這是經歷雙十一檢閱過的 PWA。與其說,咱們在描述過去 3 個月,Rax 團隊在 PWA 上的努力,不如說咱們在 Web 技術演進上作出的嘗試!
Rax 團隊作了哪些事情呢?(1) 工程上,咱們進行了拆包、按需加載、預加載、預渲染;(2)App Shell 快速加載框架結構,讓用戶在儘量短的時間內看到頁面結構;(3) 無縫切換,用戶在使用經過 Rax PWA 開發的 Web 應用的時候就像在用原生 App,能夠接着看前一個頁面上次訪問到的元素;(4)快照渲染,用戶經過二次訪問頁面,可以真正的實現秒開,話很少說,看數據:
想要知道 Rax PWA 背後更多的故事,能夠看這篇文章~
先甩出咱們作了什麼:
Fass 發佈流程打通,Rax 的工程支持 Serverless 的發佈模式,可被髮布到阿里雲、AWS 等函數託管平臺,也能夠集成到基於 express 、koa 的傳統 Node.js 應用。
以發佈到社區的 Serverless 託管平臺 Now 爲例,沒有複雜的應用開發和申請流程,在現有 Rax 工程中,擴展一個插件,就能夠一鍵完成 SSR 應用的上線了:
渲染性能極致提高,Rax 團隊採用了靜態模板 + 動態組件的混合渲染模式,讓 SSR 的渲染性能達到了 React 的 6 倍:
-----------compare renderToString---------- React(16.12.0)#renderToString x 1,664 ops/sec ±1.40% (84 runs sampled) Rax(1.0.13)#renderToString x 13,411 ops/sec ±1.05% (85 runs sampled) Preact(10.0.5)#renderToString x 1,237 ops/sec ±2.18% (84 runs sampled) The benchmark was run on: PLATFORM: darwin 17.5.0 CPU: Intel(R) Core(TM) i7-7660U CPU @ 2.50GHz SYSTEM MEMORY: 16GB NODE VERSION: v10.11.0 複製代碼
benchmark 地址:github.com/raxjs/serve…
若是,想要了解 SSR 背後更多的實現原理以及故事,敬請期待咱們後續的文章哦~
工程上,咱們也考慮到了面向的多種用戶:
咱們不知道能不能吸引到此刻正在看文章的你來使用 Rax。可是咱們知道,咱們想要創造一些咱們看到的將來,而且試圖去改變和推動大環境的標準以及技術解決方案,來服務更多的開發者和用戶~