善用 iFrame 實現微前端元件

更新 發佈閱讀 5 分鐘


iframe(內嵌框架)是HTML元素,用於在一個網頁中嵌入另一個HTML文件。它通常用於顯示外部內容,如YouTube影片、Google Maps,甚至Google One Tap 認證等快速集成服務。


無法成為微前端主要架構

在實作微前端專案的時候,通常會選用一個主要架構,例如:

  • iFrame
  • Web Components
  • ModuleFederation

雖然iFrame可以用來實作微前端,但在現代的微前端技術架構中,我們幾乎不會以它成為實作微前端架構的首選。


使用iFrame實作微前端的問題

用戶體驗差

微前端的特點是讓許多分散的網頁組合在一起,讓用戶看起來像只有一個網頁一樣。但透過iframe所組合起來的網頁排版容易混亂,尤其是數量多的時候,容易讓用戶陷入某個iframe中無法離開,又或是導致用戶無一致性操作。


SEO不理想

搜尋引擎爬蟲通常無法有效索引iFrame中的內容,這會對網站的搜尋引擎優化(SEO)產生負面影響,降低頁面在搜尋結果中的排名。


性能

每個iFrame都需要獨立載入和渲染,這增加了頁面的HTTP請求數量(其中可能有很多不是你需要的HTTP請求),可能導致載入速度變慢,特別是在大型網站中。


開發體驗差

以軟體開發彈性程度來說,iFrame是難以跟其他方法批敵的。iFrame是嵌入整個網頁,如果只需要網頁中的一小區塊(小元件),就會導致元件提供方需要再獨立一個網頁出來(至少需要獨立另一個路徑出來)。非常容易違反軟體開發的漸進增強原則,修改大量非核心商業邏輯。


你說iFrame是專門是用來給人家組合插入的元素,但是專門做組合元件的專案不會以它為技術首選?!

raw-image



iFrame仍發揮著不可忽視的作用

上面列了這麼多缺點,難道iFrame就沒有其他用處了嗎?

上面列的是iFrame在微前端架構中所面臨的問題,但是在嵌入單一複雜組件創建隔離環境,以及實現跨界元件 中發揮著不可忽視的作用。


iFrame 常見使用場景

嵌入小型 UI 組件

如果你的iFrame內容夠小、夠通用、夠精確,那麼iFrame仍是相當方便的嵌入或分享元件的手段。

案例:

  • YouTube 播放器
  • Google 地圖或第三方表單。

這些元件可以隨插隨用,因為iFrame目前大部分瀏覽器都支援,而且導入的對象是一個完整的site,非部分元件,比較不會有只有元件載入頁面但是Http Request失效的問題。


替這些元件提供全域API

案例:


這類API通常會跟另外iFrame元件有一定程度的相依關係,

  • 例如:先嵌入播放器,再透過這個API去控制。


實際作法都是在瀏覽器的全域window底下新增一個一個物件,透過這物件來提供全域API。


如果仔細去看Youtube或是WA的程式,就會看到這種程式碼

window.YT = ...

window.WA = ....


iFrame雖然不適合作為主要的微前端架構,但卻非常適合用來分享小型元件。這些iFrame元件幾乎可以忽略不同瀏覽器或前端框架(如React、Vue、Angular)之間的差異,在大多數情況下都能通用。我們只需確保這些iFrame元件的切割合理,並提供適當的全域API,即可順利運作。

混用

在我的專案中,我們已經使用Webpack的ModuleFederation架構超過兩年了。曾經有客戶希望將我們的ModuleFederation元件嵌入他們運行多年的舊有前端專案中。

由於我們無法為客戶調整其前端框架,也不願針對單一客戶開發客製化的程式碼,最終為了不影響我們元件的邏輯架構,我們決定讓他們使用iFrame將我們的元件包裝起來使用。


結論

在當前的前端技術中,iFrame確實不適合作為微前端實作的主要技術架構。然而,在某些特殊情境下,或在元件規劃足夠嚴謹的情況下,iFrame依然有其不可或缺的作用。

沒有不對的技術,只有適不適合的應用場景,希望我們都能找到最適合自身需求的方法。






留言
avatar-img
留言分享你的想法!
avatar-img
alex.d9的沙龍
20會員
11內容數
這邊應該會放軟體開發、 讀書心得和自我成長的內容。
你可能也想看
Thumbnail
自架網站的優點包括完全控制網站的設計和功能,自定義擴展和調整空間,無需依賴第三方平台;此外,網站擁有者可以選擇最佳的安全措施和SEO策略,提升網站的安全性和可見性。 然而,自架網站的缺點是需要技術知識和時間成本,設置和維護較為複雜,初期投入費用較高,且若缺乏技術支持,可能會遇到技術問題難以解決。
Thumbnail
自架網站的優點包括完全控制網站的設計和功能,自定義擴展和調整空間,無需依賴第三方平台;此外,網站擁有者可以選擇最佳的安全措施和SEO策略,提升網站的安全性和可見性。 然而,自架網站的缺點是需要技術知識和時間成本,設置和維護較為複雜,初期投入費用較高,且若缺乏技術支持,可能會遇到技術問題難以解決。
Thumbnail
本文提供架站工具 Framer 的 SEO 操作中文教學,包括設定 meta title、meta description、keywords、H標籤、圖片 alt 文字和埋放 GA4 追蹤碼的步驟說明,希望對中文使用者利用 Framer 架站並提升網站 SEO 表現有所幫助。
Thumbnail
本文提供架站工具 Framer 的 SEO 操作中文教學,包括設定 meta title、meta description、keywords、H標籤、圖片 alt 文字和埋放 GA4 追蹤碼的步驟說明,希望對中文使用者利用 Framer 架站並提升網站 SEO 表現有所幫助。
Thumbnail
作為一個非常不專業的前端初學者,有陣子常常卡在公司官網,要插入 Youtube 影片無法RWD(響應式)的問題。 跟不熟悉 網頁技術的朋友們介紹,RWD 就是指網頁的排版能跟著螢幕的大小縮放、變化編排,在這個人手一機的時代,特別重要。
Thumbnail
作為一個非常不專業的前端初學者,有陣子常常卡在公司官網,要插入 Youtube 影片無法RWD(響應式)的問題。 跟不熟悉 網頁技術的朋友們介紹,RWD 就是指網頁的排版能跟著螢幕的大小縮放、變化編排,在這個人手一機的時代,特別重要。
Thumbnail
小型企業網站是為了展示企業的產品、服務和品牌形象,此文介紹了小型企業網站的功能和意義,以及如何選擇適合的網站建設工具。
Thumbnail
小型企業網站是為了展示企業的產品、服務和品牌形象,此文介紹了小型企業網站的功能和意義,以及如何選擇適合的網站建設工具。
Thumbnail
在現代網絡世界中,網站速度是一個至關重要的因素。快速加載的網站不僅能提供更好的用戶體驗,還能改善搜索引擎排名和轉換率。為了優化網站速度,我們可以從以下10個面向進行改進,包括選擇靠近目標用戶的主機位置、減少HTTP請求次數、壓縮網頁程式碼、移除未使用的CSS和JavaScript等。
Thumbnail
在現代網絡世界中,網站速度是一個至關重要的因素。快速加載的網站不僅能提供更好的用戶體驗,還能改善搜索引擎排名和轉換率。為了優化網站速度,我們可以從以下10個面向進行改進,包括選擇靠近目標用戶的主機位置、減少HTTP請求次數、壓縮網頁程式碼、移除未使用的CSS和JavaScript等。
Thumbnail
拜讀 莫力全大大的 Day02 X 為什麼要在前端做效能優化? 重點整理 & 重述 & 加一點點自己的補充
Thumbnail
拜讀 莫力全大大的 Day02 X 為什麼要在前端做效能優化? 重點整理 & 重述 & 加一點點自己的補充
Thumbnail
在現代社會,網絡已成為人們生活中不可或缺的一部分。無論是企業、個人還是組織,都希望能夠在網絡上建立自己的存在感。DIY網頁設計服務是一種提供給普通人的工具,讓他們能夠輕鬆地創建和設計自己的網站,而無需具備專業的編程或設計技能。本文將介紹DIY網頁設計的優勢以及使用步驟。
Thumbnail
在現代社會,網絡已成為人們生活中不可或缺的一部分。無論是企業、個人還是組織,都希望能夠在網絡上建立自己的存在感。DIY網頁設計服務是一種提供給普通人的工具,讓他們能夠輕鬆地創建和設計自己的網站,而無需具備專業的編程或設計技能。本文將介紹DIY網頁設計的優勢以及使用步驟。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News