安装组件单独,而不是像 #app 这样的根节点。

huangapple go评论86阅读模式
英文:

Mounting components individually without a root like #app

问题

以下是您提供的内容的中文翻译部分:

我有一个由后端渲染的页面,希望能够在没有ID的情况下加载Vue3并挂载应用程序和组件。有人告诉我这并不困难,但显然我的Vue技能不够强。我以为这将是一个相当常见的流程,或者我可能在错误的地方寻找。我偶然发现了petite-vue,但生产构建中的“使用风险自负”的警告对我来说有点可疑。

到目前为止,我所在的地方如下,非常感谢任何帮助:

预渲染的标记:

<body>
     <hello-world :msg="prop passed from BE"></hello-world>
</body>

vue.config.js:

module.exports = {
  filenameHashing: false,
  runtimeCompiler: true,
  transpileDependencies: true,
  configureWebpack: {
    devtool: "eval-source-map",
    entry: {
      main: "../exec.js",
    },
  },
  productionSourceMap: true
};

Exec.js(入口点):

import HelloWorld from "./src/components/HelloWorld.vue";
import { createApp } from "vue";
import compile from "vue";

const app = createApp({})
app.mount()
app.component("HelloWorld", HelloWorld)

HelloWorld.vue:

<template>
  <div>
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
export default {
  props: {
    msg: {
      type: String,
      default: null,
    },
  },
  name: "HelloWorld",
};
</script>

<style lang="scss">
.root {
  text-align: center;
  color: red;
}
</style>

我在撰写这个问题时注意到了一些事情。如果我加载https://unpkg.com/vue@3.2.9/dist/vue.global.js然后挂载#app,它是非破坏性的,而且我奇怪地甚至可以看到来自helloworld.vue的样式被应用,但没有模板渲染。

app.vue:

<script>
import HelloWorld from "./components/HelloWorld.vue";
export default {
  name: "App",
  components: {
    HelloWorld
  },
};
</script>

exec.js:

import { createApp } from "vue";
import App from "./src/App.vue";
const app = createApp(App)
app.mount("app")

HTML:

<body id="app">
     <hello-world :msg="prop passed from BE"></hello-world>
</body>

请注意,我已经为您提供了内容的中文翻译,如您所要求,不包括代码部分。如果您需要进一步的帮助或翻译,请告诉我。

英文:

I have a page rendered from the back-end and I was hoping to be able to load Vue3 and mount the app and components without an ID. I was informed that this isn't difficult, but clearly my Vue kung fu is weak. I thought this would be a fairly common flow, or maybe I'm looking in the wrong places. I did stumble on petite-vue, but the use at your own risk warning is sketchy for a production build.

This is where I'm at so far, any help is greatly appreciated:

Pre-rendeded markup:

&lt;body&gt;
&lt;hello-world :msg=&quot;prop passed from BE&quot;&gt;&lt;/hello-world&gt;
&lt;/body&gt;

vue.config.js:

module.exports = {
filenameHashing: false,
runtimeCompiler: true,
transpileDependencies: true,
configureWebpack: {
devtool: &quot;eval-source-map&quot;,
entry: {
main: &quot;../exec.js&quot;,
},
},
productionSourceMap: true
};

Exec.js (entry point):

import HelloWorld  from &quot;./src/components/HelloWorld.vue&quot;
import { createApp } from &quot;vue&quot;;
import compile from &quot;vue&quot;
const app = createApp({})
app.mount()
app.component(&quot;HelloWorld&quot;, HelloWorld)

HelloWorld.vue:

&lt;template&gt;
&lt;div&gt;
&lt;h1&gt;{{ msg }}&lt;/h1&gt;
&lt;/div&gt;
&lt;/template&gt;
&lt;script&gt;
export default {
props: {
msg: {
type: String,
default: null,
},
},
name: &quot;HelloWorld&quot;,
};
&lt;/script&gt;
&lt;/script&gt;
&lt;style lang=&quot;scss&quot;&gt;
.root {
text-align: center;
color: red;
}
&lt;/style&gt;

I did notice something while writing this question. If I load https://unpkg.com/vue@3.2.9/dist/vue.global.js and then mount #app it's non-destructive and I weirdly can even see the styles from helloworld.vue being applied, but no template rendering.

app.vue:

&lt;script&gt;
import HelloWorld from &quot;./components/HelloWorld.vue&quot;;
export default {
name: &quot;App&quot;,
components: {
HelloWorld
},
};
&lt;/script&gt;

exec.js:

import { createApp } from &quot;vue&quot;;
import App from &quot;./src/App.vue&quot;
const app = createApp(App)
app.mount(&quot;app&quot;)

HTML:

&lt;body id=&quot;app&quot;&gt;
&lt;hello-world :msg=&quot;prop passed from BE&quot;&gt;&lt;/hello-world&gt;
&lt;/body&gt;

答案1

得分: 3

# 导入必要的库
从vue中导入createVNode, render

# 定义函数 mountComponent
def mountComponent(app, elem, component, props):

    # 使用传入的组件和属性创建一个虚拟节点
    vNode = createVNode(component, props)
    
    # 将应用上下文赋值给虚拟节点
    vNode.appContext = app._context
    
    # 将虚拟节点渲染到指定的DOM元素上
    render(vNode, elem)
    
    # 返回渲染的组件
    return vNode.component

# 参数说明
# app - vue3 应用实例
# elem - 要挂载到的 DOM 元素
# component - 你的组件
# props - 要传递给新创建的组件的属性

# 进一步的改进可以是将 JavaScript 变量传递给 props:
# https://stackoverflow.com/questions/76539373/passing-variable-as-prop-to-vue-component/76539718#76539718

# 你也可以使用 Vite 的 import.meta.glob 自动挂载任何组件,而无需手动导入。所以 main.js 看起来像这样:
# ...

进一步的改进可以是在挂载的组件上使用 Vue 或 MutationObserver 实现响应式属性(在这种情况下不应该删除它们)。

整个项目的源代码:

...

...


<details>
<summary>英文:</summary>
You can create and mount a component to any DOM element you want:

import { createVNode, render } from 'vue';
function mountComponent(app, elem, component, props) {

let vNode = createVNode(component, props);
vNode.appContext = app._context;
render(vNode, elem);
return vNode.component;

}

 * app - vue3 app instance
* elem - DOM element to mount to
* your component
* props to pass to your newly created component
&gt; Further improvement could be passing JS variables to props:  
&gt; https://stackoverflow.com/questions/76539373/passing-variable-as-prop-to-vue-component/76539718#76539718
You can also mount any of your components automatically with Vite&#39;s `import.meta.glob` without any manual imports. So the `main.js` looks like that:

import './assets/main.css'
import { createVNode, render } from 'vue';

import { createApp } from 'vue'
import App from './App.vue'

// create fake mount point
const $app = document.createElement('div');
$app.id = 'app';
$app.style.display = 'none';
document.body.appendChild($app);
const app = createApp(App).mount('#app');

const components = import.meta.glob('@/**/*.vue');
for (const path in components) {

const tag = path.match(/([^/]+).vue/)?.[1].split(/(?=[A-Z])/g).join(&#39;-&#39;);
const { default: component } = await components[path]();
document.querySelectorAll(tag).forEach(elem =&gt; {
const props = [...elem.attributes].filter(attr =&gt; attr.name[0] === &#39;:&#39;).reduce((props, attr) =&gt; {
props[attr.name.slice(1)] = attr.value;
return props;
}, {});
mountComponent(app, elem, component, props);
// move the component&#39;s DOM before the mount element
[...elem.children].forEach(child =&gt; elem.parentNode.insertBefore(child, elem));
// remove the mount element not to clutter the page
elem.remove();
});

}

function mountComponent(app, elem, component, props) {

let vNode = createVNode(component, props);
vNode.appContext = app._context;
render(vNode, elem);
return vNode.component;

}


Further improvements could be reactive properties on the mounted components either with Vue or MutationObserver on the mount elements (we shouldn&#39;t delete them in that case).
The whole project source:
&lt;!-- begin snippet: js hide: false console: true babel: false --&gt;
&lt;!-- language: lang-js --&gt;
const src = &quot;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&quot;;
&lt;!-- language: lang-html --&gt;
&lt;h1&gt;Download source code&lt;/h1&gt;
&lt;a download=&quot;mount-components.zip&quot;&gt;Right click and Save link as...&lt;/a&gt;
&lt;script&gt;
setTimeout(()=&gt;document.querySelector(&#39;a&#39;).href = `data:application/zip;base64,${src}`, 300);
&lt;/script&gt;
&lt;!-- end snippet --&gt;
</details>

huangapple
  • 本文由 发表于 2023年6月13日 05:09:02
  • 转载请务必保留本文链接:https://go.coder-hub.com/76460347.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定