[英]Vue3: how to avoid Vitejs to erase/replace all DOM content when mounting the app?
我來自 Vue 2,我習慣使用 wordpress 標准 html 頁面並在其中使用一些 Vue 組件。 只需將容器傳遞給主 app el
屬性,然后我就可以在容器上使用我想要的組件,而無需刪除或替換所有默認容器的內容。 基本上,將一個 dom 元素傳遞給el
屬性,使該元素成為一個 Vue 應用程序,包括它的所有內容(即使沒有任何 Vue 組件)。
使用 Vue 3 和 createApp,似乎沒有辦法做到這一點,因為一旦我將應用程序安裝到容器(比如#app),那么所有容器的內容都會被刪除或替換為組件的模板(如果傳遞了一個組件) )。 即使是以下不使用任何組件的內容,也會清除所有#app 原始內容:
import { createApp } from 'vue'
createApp({
}).mount('#app');
如何避免? 如何在免費的 html 頁面上只使用一些備用組件? SFC 使用同樣的方法怎么樣?
從技術上講,Vue 總是替換元素的內容(Vue 2 替換了元素本身,Vue 3 替換了它的內部內容 - 遷移指南)
如果正在安裝的應用程序/組件沒有template
選項或render
function,那么(並且只有在那時)Vue 會獲取 DOM 元素的原始內容(在它安裝之前)並嘗試將其編譯為渲染 function(這就是您需要編譯器的原因+ 使用 DOM 內模板時的運行時構建)
這也意味着,如果您的頁面主要由 static HTML(來自 WordPress)和 Vue 的“少量”組成,那么這個解決方案非常無效,也是petit-vue存在的原因(我建議閱讀與標准 Vue 的比較
反正。 我無法重現您的問題...
const app = Vue.createApp({ }).mount("#app")
<script src="https://unpkg.com/vue@3.2.9/dist/vue.global.js"></script> <div id='app'> <div> <h2>Hello from HTML!</h2> </div> </div>
那么有什么問題呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.