Vue: Véritables composants dynamiques à fichier unique

Créé le 28 mai 2020  ·  3Commentaires  ·  Source: vuejs/vue

Quel problème cette fonctionnalité résout-elle ?

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.

A quoi ressemble l'API proposée ?

<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>

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 :

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

Tous les 3 commentaires

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.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

loki0609 picture loki0609  ·  3Commentaires

franciscolourenco picture franciscolourenco  ·  3Commentaires

gkiely picture gkiely  ·  3Commentaires

wufeng87 picture wufeng87  ·  3Commentaires

bdedardel picture bdedardel  ·  3Commentaires