Vue: Componentes verdadeiramente dinâmicos de arquivo único

Criado em 28 mai. 2020  ·  3Comentários  ·  Fonte: vuejs/vue

Qual problema esse recurso resolve?

Eu tenho um aplicativo onde terceiros podem criar plug-ins. Eu gostaria que eles pudessem criar esses plug-ins como componentes de arquivo único, que são puxados e exibidos como componentes integrados. No momento, a única maneira de fazer isso é criando um componente neste formato:

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

Isso é estranho, além de não haver uma maneira fácil de incluir estilos.

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

Eu acho que a lógica para fazer isso existe, mas está no vue-loader e realmente deve ser usado com o Webpack. Webpack não foi projetado para uso em tempo de execução.

Qual é a aparência da API proposta?

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

Comentários muito úteis

Ok, mas não há documentação suficiente para realmente usá-los. Não existem exemplos.

Passei por alguns códigos de rollup procurando por algum, mas até mesmo a importação básica gera uma tonelada de erros de compilação, principalmente relacionados ao consolidate.js:

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

Não marque como fechado sem adicionar um exemplo de uso simples. O exemplo pode ser adicionado ao README e também usado para responder à pergunta dessa pessoa: https://github.com/vuejs/vue-component-compiler/issues/93

Todos 3 comentários

Já existem ferramentas para realizar o processo de compilação que existe dentro do vue-loader: https://github.com/vuejs?q=compiler&type=&language=

Ok, mas não há documentação suficiente para realmente usá-los. Não existem exemplos.

Passei por alguns códigos de rollup procurando por algum, mas até mesmo a importação básica gera uma tonelada de erros de compilação, principalmente relacionados ao consolidate.js:

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

Não marque como fechado sem adicionar um exemplo de uso simples. O exemplo pode ser adicionado ao README e também usado para responder à pergunta dessa pessoa: https://github.com/vuejs/vue-component-compiler/issues/93

@posva Queria ter certeza de que você viu meu comentário acima.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

paceband picture paceband  ·  3Comentários

seemsindie picture seemsindie  ·  3Comentários

robertleeplummerjr picture robertleeplummerjr  ·  3Comentários

aviggngyv picture aviggngyv  ·  3Comentários

lmnsg picture lmnsg  ·  3Comentários