背景
我最近在一個 Vue 3 低程式碼專案中收到一個載入遠端元件的需求。這些遠端組件具有不可預測的名稱並儲存在資料庫中。我需要透過 API 取得所有元件資料以確定哪些元件可用。經過研究,我找到了兩個可行的解決方案來滿足這個要求。
HTML 檔案 UMD 元件
這是最簡單的實作解決方案。我們只需要將元件封裝成UMD格式,直接在HTML檔案中使用即可。
<div> <p>However, this solution is not suitable for large projects due to its low efficiency.</p> <h2> Vue 3 Project + ESM/UMD Components </h2> <p>This is the solution I implemented in my low-code project. During my research, I encountered and solved two main problems. Here's how it works:</p> <h3> Problem 1: Relative References </h3> <p>Since our project doesn't need to be compatible with IE, we can package the source code in ESM format. For example:<br> </p> <pre class="brush:php;toolbar:false">import { reactive } from 'vue' // other code...
然後在專案中使用:
const { default: TestInput } = await import('http://localhost/component/input/0.1.0/bundle.mjs')
如上所示載入遠端 TestInput 元件時,會導致「相對引用必須以 '/'、'./' 或 '../' 開頭」錯誤。這是因為瀏覽器不支援直接使用 import {reactive } from 'vue' - 我們需要將 'vue' 改為 https://..../vue.js 或 './vue.js'。通常,我們不需要擔心這個,因為我們的建置工具會自動處理它。
問題 2:不同的 Vue 3 上下文
解決第一個問題的第一次嘗試是將元件及其所有相依性打包。雖然這刪除了所有導入語句,但不幸的是它不起作用。這是因為我們專案中的 Vue 3 上下文和 node_modules 中的 Vue 3 上下文不相容 - 它們需要共享相同的上下文才能正常運作。
儘管所有 Vue 3 方法名稱在不同上下文中都是相同的,但它們的變數卻不同。這會阻止遠端元件正常載入。
解決方案
解決這些問題:
- 我們可以將 import {reactive } from 'vue' 替換為 const {reactive } = Vue 以避免相對引用錯誤。
- 我們可以在 main.js 中匯入整個 Vue 3 實例,而不是將其與原始程式碼一起打包。這確保我們的專案和遠端元件使用相同的 Vue 上下文。
為了處理程式碼轉換,我創建了一個名為 rollup-plugin-import-to-const 的 rollup 插件(同時支援 vite 和 rollup)。它會自動將程式碼從 import {reactive} 從 'vue' 轉換為 const {reactive} = Vue。有了這些解決方案,我們就可以在專案中載入遠端元件了:
const { default: TestInput } = await import('http://localhost/component/input/0.1.0/bundle.mjs')
其實只要解決了這兩個問題,我們就可以載入任何格式的元件(ESM/UMD/CJS等)。
概括
載入遠端組件不限於這兩種解決方案。例如,我們也可以使用 vue3-sfc-loader 或 webpack5 Module Federation。選擇取決於您專案的特定要求。
一般來說,載入遠端元件最常用於低程式碼平台。
以上是如何在 Vue 3 中載入遠端元件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C 和JavaScript通過WebAssembly實現互操作性。 1)C 代碼編譯成WebAssembly模塊,引入到JavaScript環境中,增強計算能力。 2)在遊戲開發中,C 處理物理引擎和圖形渲染,JavaScript負責遊戲邏輯和用戶界面。

JavaScript在網站、移動應用、桌面應用和服務器端編程中均有廣泛應用。 1)在網站開發中,JavaScript與HTML、CSS一起操作DOM,實現動態效果,並支持如jQuery、React等框架。 2)通過ReactNative和Ionic,JavaScript用於開發跨平台移動應用。 3)Electron框架使JavaScript能構建桌面應用。 4)Node.js讓JavaScript在服務器端運行,支持高並發請求。

Python更適合數據科學和自動化,JavaScript更適合前端和全棧開發。 1.Python在數據科學和機器學習中表現出色,使用NumPy、Pandas等庫進行數據處理和建模。 2.Python在自動化和腳本編寫方面簡潔高效。 3.JavaScript在前端開發中不可或缺,用於構建動態網頁和單頁面應用。 4.JavaScript通過Node.js在後端開發中發揮作用,支持全棧開發。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。1)C 用于解析JavaScript源码并生成抽象语法树。2)C 负责生成和执行字节码。3)C 实现JIT编译器,在运行时优化和编译热点代码,显著提高JavaScript的执行效率。

JavaScript在現實世界中的應用包括前端和後端開發。 1)通過構建TODO列表應用展示前端應用,涉及DOM操作和事件處理。 2)通過Node.js和Express構建RESTfulAPI展示後端應用。

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

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

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

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