[英]emberjs: Glimmer web component pass array/objects not working
我們的業務問題陳述之一是,我們必須創建組件,以便任何消費者都可以將它們用作小部件並嵌入到他們的網站中。 問題是我們已經有了用 ember 制作的那些組件。
我們不知道消費者網站將擁有哪個堆棧,這可能是隨機的。 所以我們想到了將這些 ember 組件轉換為 web 組件。
我們做了小型 POC,我們無法使用 glimmer 從 ember 組件中創建 web 組件。 但是我們面臨着幾個問題
為了使用簡單的微光組件,我遵循了 https://glimmerjs.com/guides/using-glimmer-as-web-components
要旨:
主意
這個想法是創建與框架無關的組件,以便它可以完美地在不同的應用程序中使用。 該組件已經用 emberjs 編寫。
解決方案
顯而易見的解決方案是編寫 web-component,但我們的代碼已經用 emberjs 插件編寫。 因此,我們決定將附加項目遷移到最新的 ember,在我們將附加組件遷移到 glimmerjs 並將 glimmerjs 組件轉換為 web-component (使用@glimmer/web-component
)並使用它之后。
我們付出了努力,並使其發揮了作用。 我正在分享我們應用的當前解決方案。
正如我在問題中提到的那樣,我們面臨着幾個挑戰。 我會一一回答這些問題。
為了在兩個組件之間傳遞 object,我們通過將CustomEvent
從child-component
提升到parent-component
組件來傳遞它
didInsertElement() { this.element.dispatchEvent( new CustomEvent('data-ready', { bubbles: true, detail: this }) ); }
經過研究發現,glimmer 不支持 shadow DOM,他們還沒有支持它的計划。 一旦我們認為shadow-dom
具有特征是好的,重新分析需求。 我們正在使用 CSS 特異性(傳統方式)來隔離特定於組件的 CSS:p
盡管在應用了上述內容之后,我們的狀態良好。 如果您想查看代碼。 請檢查此github 存儲庫(初步查看)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.