在react中,同構應用程式指的是客戶端和服務端之間完整或部分共享程式碼的應用,也可以稱為通用JavaScript應用程式;同構應用程式並不是不需要瀏覽器端渲染內容,而是使服務端和瀏覽器端渲染達到一種平衡,在伺服器上產生渲染內容,讓使用者儘早看到有資訊的頁面。
本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
react同構應用程式是什麼
同構應用程式也被稱為通用`JavaScript`應用,指的是在客戶端和伺服器端之間完整(或部分)地共享程式碼的應用。透過在伺服器端執行應用程式的JavaScript程式碼,頁面可在傳送到瀏覽器之前預先填入內容,所以使用者甚至可以在瀏覽器JavaScript運作之前就看到內容。當本地的JavaScript執行時,它會接手後續的互動及導覽操作,透過快速初始化載入和服務端頁面渲染,讓使用者在單頁應用程式中得到流暢的互動體驗。
什麼是同構
隨著Node.js的異軍突起,前後端開發有了歸一化程式語言的基礎土壤,頁面模版、第三方依賴機制等都有實現前後端統一的契機。 React率先引領了這種潮流,同構的概念也因此得以更廣泛的傳播。
需要讀者明白的是,同構應用並不是不需要瀏覽器端渲染內容,而是讓服務端和瀏覽器端渲染達到一種平衡。那麼,要怎麼理解這種平衡呢?
在伺服器上產生渲染內容,讓使用者儘早看到有資訊的頁面。一個完整的應用除包括純粹的靜態內容以外,還包括各種事件回應、使用者互動等。這意味著在瀏覽器端一定還要執行JavaScript腳本,以完成綁定事件、處理非同步互動等工作。
從效能及使用者體驗來看,服務端渲染應該會表達出頁面最主要、最核心、最基本的資訊;而瀏覽器端則需要針對互動完成進一步的頁面渲染、事件綁定等增強功能。所謂同構,就是指前後端共用一套程式碼或邏輯,而在這套程式碼或邏輯中,理想的狀況是在瀏覽器端進一步渲染的過程中,判斷已有的DOM結構和即將渲染出的結構是否相同,若相同,則不重新渲染DOM結構,只需要進行事件綁定即可。
從這個維度上講,同構和服務端渲染又有所區別,同構更像是服務端渲染和瀏覽器端渲染的交集,它彌補了服務端和瀏覽器端的差異,從而使得同一套程式碼或邏輯得以統一運作。同構的核心是“同一套程式碼”,這是脫離於兩端角度的另一個維度。
同構的優點和缺點
同構的優點如下:
更好的效能。這裡的效能主要指渲染更加迅速、首屏展現的時間更快、檔案更少,以及檔案體積更小。
SEO最佳化支援。服務端接收到請求後,會返回一個相對完整、包含了初始內容的HTML文檔,所以更有利於搜尋引擎爬蟲獲取信息,提高搜尋結果展現排名。同時,更快的頁面載入時間也有利於搜尋結果展現排名的提升。
實作更加靈活。服務端渲染只是直出頁面的初始內容,瀏覽器端仍需要做後續工作,以完成頁面的最終展現。這樣服務端渲染和瀏覽器端渲染仍可以平衡,在很大程度上也能實現程式碼重複使用。
可維護性更強。因為藉助React等類別函式庫,我們完全能夠實現大範圍的程式碼複用,避免了服務端和瀏覽器端同時維護兩套程式碼或邏輯。因此,整體程式碼量更少,維護成本更低。
對於低階機型更友善。因為內容的初步渲染是在服務端完成的,所以對於低端機型更加友好,不至於頁面加載時出現白屏的狀況。
對於惡劣的網路環境更加友善。傳統的前後端分離方式,在所有的JavaScript腳本下載並執行完畢後,才會呈現頁面內容,中間經歷了較多的網絡請求,在惡劣的網絡環境下,無疑增加了頁面呈現基本內容的難度。在這方面,同構應用顯然更有優勢。
更好的使用者體驗。為了更合理地平衡服務端和瀏覽器端渲染內容,我們可以將頁面重要的核心部分設計在服務端完成,而次重要的互動部分可以在更重要的內容渲染完畢後,由瀏覽器端渲染或實現,這將有力地提升用戶體驗。
同構的缺點如下:
服務端處理的邏輯增多,增加了複雜度。
服務端無法完全重複使用瀏覽器端程式碼。
增加了服務端的TTFB(Time To First Byte)時間。 TTFB時間指的是從瀏覽器發起最初的網路請求,到從伺服器接收到第一個位元組的這段時間。它包含了TCP連接時間、發送HTTP請求的時間和獲得回應訊息的第一個字節的時間。因為對資料的取得和頁面初始內容的渲染,勢必會降低服務端回傳的速度。
擴充知識:
前後端架構設計與服務端渲染概念
服務端渲染或直出的概念越來越流行。在了解如何基於React實現服務端渲染之前,我們有必要在架構層面對服務端渲染的「前世今生」進行整體了解:為什麼會出現這樣一個概念;這個概念落地之後能解決什麼問題;服務端渲染和其他方式對比有何利弊等。
前後端配合技術的演進
早期的Web開發,架構設計簡單、直接,具體來講,就是頁面由JSP、PHP等工程師在服務端生成,瀏覽器只負責展現。那時候,前端工程師只需要給靜態頁面添加一些動態互動效果,很少會涉及資料邏輯等;而後端工程師負責頁面內容,即當使用者要求頁面時,後端進行處理並返回完整的靜態頁面。這些過程一般會依賴模板引擎來完成。因此,在那個時候,甚至沒有獨立的前端工程師職位。即使有的話,這種做法的缺點也很明顯,例如前後端分工職責不清。
如果由前端人員來開發模板,那麼前端將會極度依賴後端環境,難以實現開發效率的最大化,同時關於資料格式的溝通成本也相對較高。另外,這樣的架構模式對於前端技術的發揮和利用瀏覽器能力的空間是非常有限的。
隨著前端技術的快速發展,尤其是AJAX和Node.js等技術的出現,一種前後端分離的架構模式應運而生。在這種模式下,前後端分工變得非常清晰,兩端的關鍵協作點是AJAX介面。以下我們以使用者造訪頁面為例來一步步了解這種模式,如下圖所示。
#【相關推薦:javascript影片教學、 web前端】
以上是react同構應用程式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

HTML和React的關係是前端開發的核心,它們共同構建現代Web應用的用戶界面。 1)HTML定義內容結構和語義,React通過組件化構建動態界面。 2)React組件使用JSX語法嵌入HTML,實現智能渲染。 3)組件生命週期管理HTML渲染,根據狀態和屬性動態更新。 4)使用組件優化HTML結構,提高可維護性。 5)性能優化包括避免不必要渲染,使用key屬性,保持組件單一職責。

React是構建交互式前端體驗的首選工具。 1)React通過組件化和虛擬DOM簡化UI開發。 2)組件分為函數組件和類組件,函數組件更簡潔,類組件提供更多生命週期方法。 3)React的工作原理依賴虛擬DOM和調和算法,提高性能。 4)狀態管理使用useState或this.state,生命週期方法如componentDidMount用於特定邏輯。 5)基本用法包括創建組件和管理狀態,高級用法涉及自定義鉤子和性能優化。 6)常見錯誤包括狀態更新不當和性能問題,調試技巧包括使用ReactDevTools和優

React是一個用於構建用戶界面的JavaScript庫,其核心是組件化和狀態管理。 1)通過組件化和狀態管理簡化UI開發。 2)工作原理包括調和和渲染,優化可通過React.memo和useMemo實現。 3)基本用法是創建並渲染組件,高級用法包括使用Hooks和ContextAPI。 4)常見錯誤如狀態更新不當,可使用ReactDevTools調試。 5)性能優化包括使用React.memo、虛擬化列表和CodeSplitting,保持代碼可讀性和可維護性是最佳實踐。

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

React組件可以通過函數或類定義,封裝UI邏輯並通過props接受輸入數據。 1)定義組件:使用函數或類,返回React元素。 2)渲染組件:React調用render方法或執行函數組件。 3)復用組件:通過props傳遞數據,構建複雜UI。組件的生命週期方法允許在不同階段執行邏輯,提升開發效率和代碼可維護性。

React嚴格模式是一種開發工具,可通過激活其他檢查和警告來突出反應應用中的潛在問題。它有助於識別遺產代碼,不安全的生命週期和副作用,鼓勵現代反應實踐。

本文討論了React的對帳過程,詳細介紹了它如何有效地更新DOM。關鍵步驟包括觸發對帳,創建虛擬DOM,使用擴散算法以及應用最小的DOM更新。它還覆蓋了經家


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。