Pinterest轉向通用JavaScript和React
在2015年,Pinterest決定轉向React。但是對於一個有數百萬活躍使用者的站點來說,談何容易。Pinterest轉向React的故事本質上是Pinterest轉向通用JavaScript的故事。
Pinterest的軟體工程師Imad Elyafi寫道,決定轉向React的部分原因是React是“黃金標準”,有著“龐大的開發者社群”以及它“能極大地提升工程效率和質量”。React通常用在通用JavaScript場景下,在此伺服器和瀏覽器使用同一類别範本。
Pinterest的伺服器端引擎是Django,它使用Jinja模板引擎。然而,Pinterest的客戶端的JavaScript使用Nunjucks,它的靈感來源於Jinja,也與之相似。這導致了程式碼的重複,一份Python版和一份JavaScript版。但是他們無法拋棄一切而轉向React,Pinterest的軟體工程師Jessica Chan說道。
我們需要一個方案,能讓我們在不打斷產品組工作和影響使用者體驗的情況下,迭代地轉換數以百計的Pinterest構件。第一步就是要將客戶端和伺服器端統一到單一的模板渲染引擎,然後再將引擎替換掉。如果伺服器能解釋JavaScript,使用Nunjucks渲染模板以及共享客戶端程式碼,我們就能進行迭代遷移到React。
在觸及React之前,該團隊重新設計了伺服器渲染引擎的架構以使用現成的Nunjucks模板。Jessica Chan說,他們沒有在Django的內部渲染Jinja模板,而是建立了一個程式使用Node來渲染模板。“最終,我們在Nginx代理層後使用常駐的Node程式,將介面架構設計為每一個網路請求都是無狀態的渲染過程。我們因此能將請求分發到這些程式組,並在需要的時候擴充套件程式數。”
一旦該系統上線,他們就能慢慢轉向基於React的元件渲染模式。Elyafi說只要可能他們都擴充套件Nunjucks模板語言來渲染React。
{% if in_react %}
{{ component(`MyReactComponent`, {pinId: `123`}) }}
{% else %}
{{ module(`MyDenzelComponent`, pinId=`123`) }}
{% endif %}
component關鍵字告訴模板引擎應該使用基於React的元件,而不是基於Nunjucks的。Pinterest轉向React的努力還在繼續。
文章轉載自 開源中國社群 [http://www.oschina.net]
相關文章
- 【轉向JavaScript系列】AST in Modern JavaScriptJavaScriptAST
- 為什麼我從 Angular 轉向 ReactAngularReact
- React — 通用hooks封裝ReactHook封裝
- React 新增常用通用框架React框架
- 為什麼我棄用Angular,轉向ReactAngularReact
- javascript通用方法收集JavaScript
- 物件導向的JavaScript程式設計 (轉)物件JavaScript程式設計
- JavaScript物件導向 ~ 原型和繼承(1)JavaScript物件原型繼承
- JavaScript物件導向~ 作用域和閉包JavaScript物件
- JavaScript物件導向—物件的建立和操作JavaScript物件
- 程式導向和麵向物件的對比(轉)物件
- 轉向Kotlin——類和介面Kotlin
- Javascript的函式式和麵向物件特性JavaScript函式物件
- [譯] 為什麼我放棄了 React 而轉向 Vue。ReactVue
- react篇章-React 元件-向元件傳遞引數React元件
- JavaScript 物件導向JavaScript物件
- Pinterest 棄用 HBaseREST
- javascript物件導向和回撥的一個示例JavaScript物件
- C++實現通用雙向連結串列C++
- javascript 物件導向學習(三)——this,bind、apply 和 callJavaScript物件APP
- JavaScript的物件導向JavaScript物件
- 初探 JavaScript 物件導向JavaScript物件
- 微軟向JavaScript邁進微軟JavaScript
- javascript字串和陣列轉換JavaScript字串陣列
- JavaScript表示式和運算子(轉)JavaScript
- JavaScript和Java的區別(轉)JavaScript
- 前端戰五渣學JavaScript——物件導向、原型和原型鏈前端JavaScript物件原型
- 用 CSS3 和 JavaScript 製作徑向動畫選單CSSS3JavaScript動畫
- Javascript 物件導向中的建構函式和原型物件JavaScript物件函式原型
- C/C++ 通用 Makefile(轉)C++
- 通用ShellCode深入剖析 (轉)
- 【讀】JavaScript之物件導向JavaScript物件
- JavaScript 的物件導向(OO)JavaScript物件
- JavaScript7:物件導向JavaScript物件
- 更多物件導向的JavaScript物件JavaScript
- JavaScript物件導向入門JavaScript物件
- JavaScript 物件導向初步理解JavaScript物件
- JavaScript物件導向精要(二)JavaScript物件