J'ai une application où des tiers peuvent créer des plugins. J'aimerais qu'ils puissent créer ces plugins en tant que composants à fichier unique, qui sont extraits et affichés comme des composants intégrés. À l'heure actuelle, la seule façon pour eux de le faire est de créer un composant sous cette forme :
{
template: "<div>stuff</div>",
props: ...
etc.
}
C'est gênant, et il n'y a pas de moyen facile d'inclure des styles.
Plus de détails : https://stackoverflow.com/questions/62035019/load-vue-single-file-component-dynamically-at-runtime
Je pense que la logique pour le faire existe, mais c'est dans vue-loader, et vraiment destiné à être utilisé avec Webpack. Webpack n'est pas conçu pour être utilisé au moment de l'exécution.
<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>
Il existe déjà des outils pour réaliser le processus de compilation qui existe dans vue-loader : https://github.com/vuejs?q=compiler&type=&language=
D'accord, mais il n'y a pas suffisamment de documentation pour les utiliser réellement. Il n'y a pas d'exemples.
J'ai parcouru du code de cumul à la recherche d'un certain nombre, mais même l'importation de base génère une tonne d'erreurs de compilation, principalement relatives à consolider.js :
import { createDefaultCompiler } from "@vue/component-compiler";
Veuillez ne pas marquer ceci comme fermé sans ajouter un exemple d'utilisation simple. L'exemple pourrait être ajouté au README, et également utilisé pour répondre à la question de cette personne : https://github.com/vuejs/vue-component-compiler/issues/93
@posva Je voulais m'assurer que vous avez vu mon commentaire ci-dessus.
Commentaire le plus utile
D'accord, mais il n'y a pas suffisamment de documentation pour les utiliser réellement. Il n'y a pas d'exemples.
J'ai parcouru du code de cumul à la recherche d'un certain nombre, mais même l'importation de base génère une tonne d'erreurs de compilation, principalement relatives à consolider.js :
Veuillez ne pas marquer ceci comme fermé sans ajouter un exemple d'utilisation simple. L'exemple pourrait être ajouté au README, et également utilisé pour répondre à la question de cette personne : https://github.com/vuejs/vue-component-compiler/issues/93