Vue: Echte dynamische Single-File-Komponenten

Erstellt am 28. Mai 2020  ·  3Kommentare  ·  Quelle: vuejs/vue

Welches Problem löst diese Funktion?

Ich habe eine App, in der Drittanbieter Plugins erstellen können. Ich möchte, dass sie diese Plugins als einzelne Dateikomponenten erstellen können, die wie integrierte Komponenten eingezogen und angezeigt werden. Im Moment können sie dies nur tun, indem sie eine Komponente in dieser Form erstellen:

{
template: "<div>stuff</div>",
props: ...
etc.
}

Dies ist umständlich und es gibt keine einfache Möglichkeit, Stile einzuschließen.

Weitere Details: https://stackoverflow.com/questions/62035019/load-vue-single-file-component-dynamically-at-runtime

Ich denke, dass die Logik dafür existiert, aber es ist im Vue-Loader und wirklich für die Verwendung mit Webpack gedacht. Webpack ist nicht für die Nutzung zur Laufzeit ausgelegt.

Wie sieht die vorgeschlagene API aus?

<template>
  <div>
    The component goes here:
    <component :is="pluginComponent"></component>
  </div>
</template>
<script>
import { compileSFC } from "vue-template-compiler";
export default {
  data() {
    return {
      pluginComponent: null
    };
  },
  mounted() {
    // fetch code from some external source here
    let code = "<template><div>hello</div></template><style>some styles</style><script>some code</script>";
    let comp = compileSFC(code);
    this.pluginComponent = comp;
  }
};
</script>

Hilfreichster Kommentar

Ok, aber es gibt nicht genügend Dokumentation, um sie tatsächlich zu verwenden. Es gibt keine Beispiele.

Ich habe nach einigen Rollup-Codes gesucht, aber selbst der grundlegende Import generiert eine Menge Kompilierungsfehler, die hauptsächlich consolidate.js betreffen:

import { createDefaultCompiler } from "@vue/component-compiler";

Bitte markieren Sie dies nicht als geschlossen, ohne ein einfaches Anwendungsbeispiel hinzuzufügen. Das Beispiel könnte der README hinzugefügt werden und auch verwendet werden, um die Frage dieser Person zu beantworten: https://github.com/vuejs/vue-component-compiler/issues/93

Alle 3 Kommentare

Es gibt bereits Tools, um den im vue-loader vorhandenen Kompilierungsprozess zu erreichen: https://github.com/vuejs?q=compiler&type=&language=

Ok, aber es gibt nicht genügend Dokumentation, um sie tatsächlich zu verwenden. Es gibt keine Beispiele.

Ich habe nach einigen Rollup-Codes gesucht, aber selbst der grundlegende Import generiert eine Menge Kompilierungsfehler, die hauptsächlich consolidate.js betreffen:

import { createDefaultCompiler } from "@vue/component-compiler";

Bitte markieren Sie dies nicht als geschlossen, ohne ein einfaches Anwendungsbeispiel hinzuzufügen. Das Beispiel könnte der README hinzugefügt werden und auch verwendet werden, um die Frage dieser Person zu beantworten: https://github.com/vuejs/vue-component-compiler/issues/93

@posva Wollte sicherstellen, dass Sie meinen obigen Kommentar gesehen haben.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen