善用 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
alex.d9的沙龍
20會員
11內容數
這邊應該會放軟體開發、 讀書心得和自我成長的內容。
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
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 為什麼要在前端做效能優化? 重點整理 & 重述 & 加一點點自己的補充
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News