善用 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
19會員
10內容數
這邊應該會放軟體開發、 讀書心得和自我成長的內容。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
alex.d9的沙龍 的其他內容
你知道Emoji看起來是一個符號,但寫程式時長度卻不一樣嗎? 😀.length 跟 👩🏽‍🦳.length 是不相等的喔! 一起來了解Emoji的故事吧
使用React.js實作CAPTCHA元件的步驟和技巧
你知道Emoji看起來是一個符號,但寫程式時長度卻不一樣嗎? 😀.length 跟 👩🏽‍🦳.length 是不相等的喔! 一起來了解Emoji的故事吧
使用React.js實作CAPTCHA元件的步驟和技巧
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
自架網站的優點包括完全控制網站的設計和功能,自定義擴展和調整空間,無需依賴第三方平台;此外,網站擁有者可以選擇最佳的安全措施和SEO策略,提升網站的安全性和可見性。 然而,自架網站的缺點是需要技術知識和時間成本,設置和維護較為複雜,初期投入費用較高,且若缺乏技術支持,可能會遇到技術問題難以解決。
Thumbnail
這篇文章教你如何製作側邊欄,包括準備工作、HTML和CSS的部分,還有一些互動效果。文章涵蓋了連結、圖片、超連結、大小、顏色、排版、flex和滑鼠互動等內容。
Thumbnail
極簡網頁設計依然是主流,以其乾淨、有序的視覺效果和強調內容的功能性,幫助用戶集中注意力於重要信息。
Thumbnail
在當今的IG時代,多媒體內容已成為網頁設計不可或缺的一部分,它不僅豐富了用戶的互動體驗,還能顯著提升網站的吸引力和溝通效率。本文將探討多媒體內容對用戶體驗(UX)的影響、SEO最佳實踐與多媒體的整合方法,並提供成功整合多媒體的網站案例。
Thumbnail
作為一個非常不專業的前端初學者,有陣子常常卡在公司官網,要插入 Youtube 影片無法RWD(響應式)的問題。 跟不熟悉 網頁技術的朋友們介紹,RWD 就是指網頁的排版能跟著螢幕的大小縮放、變化編排,在這個人手一機的時代,特別重要。
Thumbnail
交互式元素在現代網頁設計中扮演著越來越重要的角色,不僅因為它們能夠提升用戶體驗,還因為它們對搜索引擎最佳化(SEO)帶來的潛在好處。本文將探討交互式設計對SEO的好處、實施交互式元素的方法,並通過一個成功案例分析,展示這些元素如何有效地提升網站性能和搜索排名。
圖片大小 漂亮的圖片讓人賞心悅目,對網站美化也是一大加分項,但若是為了呈現自家商品或吸引人的圖片搭配文字,而塞進過量的圖片,導致網站本身太重跑得太慢,容易使客人失去耐性。|SEO工具 隨著時代的進步網路速度也與時俱進,但若網站本身太重,就算網路狀況再良好也無法馬上將網站載好,根據統計,大多數人的
透過Responsive網頁設計技術,能夠讓您的網站在不同裝置上顯示良好。此外,我們的服務還包括多種語言介面支援、內容管理系統、無限頁數網站、無限網上影片、無限網上表格以及專業的Banner設計。
Thumbnail
建立一個優秀網站需要適當選擇並使用各種網頁素材。這些素材可包括圖片、圖示、音頻、視頻、字體和設計元素等。本篇文章詳細介紹了這些素材的重要性以及選擇和優化的建議。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
自架網站的優點包括完全控制網站的設計和功能,自定義擴展和調整空間,無需依賴第三方平台;此外,網站擁有者可以選擇最佳的安全措施和SEO策略,提升網站的安全性和可見性。 然而,自架網站的缺點是需要技術知識和時間成本,設置和維護較為複雜,初期投入費用較高,且若缺乏技術支持,可能會遇到技術問題難以解決。
Thumbnail
這篇文章教你如何製作側邊欄,包括準備工作、HTML和CSS的部分,還有一些互動效果。文章涵蓋了連結、圖片、超連結、大小、顏色、排版、flex和滑鼠互動等內容。
Thumbnail
極簡網頁設計依然是主流,以其乾淨、有序的視覺效果和強調內容的功能性,幫助用戶集中注意力於重要信息。
Thumbnail
在當今的IG時代,多媒體內容已成為網頁設計不可或缺的一部分,它不僅豐富了用戶的互動體驗,還能顯著提升網站的吸引力和溝通效率。本文將探討多媒體內容對用戶體驗(UX)的影響、SEO最佳實踐與多媒體的整合方法,並提供成功整合多媒體的網站案例。
Thumbnail
作為一個非常不專業的前端初學者,有陣子常常卡在公司官網,要插入 Youtube 影片無法RWD(響應式)的問題。 跟不熟悉 網頁技術的朋友們介紹,RWD 就是指網頁的排版能跟著螢幕的大小縮放、變化編排,在這個人手一機的時代,特別重要。
Thumbnail
交互式元素在現代網頁設計中扮演著越來越重要的角色,不僅因為它們能夠提升用戶體驗,還因為它們對搜索引擎最佳化(SEO)帶來的潛在好處。本文將探討交互式設計對SEO的好處、實施交互式元素的方法,並通過一個成功案例分析,展示這些元素如何有效地提升網站性能和搜索排名。
圖片大小 漂亮的圖片讓人賞心悅目,對網站美化也是一大加分項,但若是為了呈現自家商品或吸引人的圖片搭配文字,而塞進過量的圖片,導致網站本身太重跑得太慢,容易使客人失去耐性。|SEO工具 隨著時代的進步網路速度也與時俱進,但若網站本身太重,就算網路狀況再良好也無法馬上將網站載好,根據統計,大多數人的
透過Responsive網頁設計技術,能夠讓您的網站在不同裝置上顯示良好。此外,我們的服務還包括多種語言介面支援、內容管理系統、無限頁數網站、無限網上影片、無限網上表格以及專業的Banner設計。
Thumbnail
建立一個優秀網站需要適當選擇並使用各種網頁素材。這些素材可包括圖片、圖示、音頻、視頻、字體和設計元素等。本篇文章詳細介紹了這些素材的重要性以及選擇和優化的建議。