Language-tools: Admite la importación de componentes Svelte sin extensión

Creado en 23 sept. 2020  ·  5Comentarios  ·  Fuente: sveltejs/language-tools

¿Su solicitud de función está relacionada con un problema?

Tengo algunos componentes complejos con muchos subcomponentes. Los subcomponentes son privados y se unen para formar un componente grande.

He aquí un ejemplo:

form/
  input.svelte
  textarea.svelte
  index.svelte
  radio.svelte
  checkbox.svelte

Describe la solución que te gustaría

Me gustaría poder resolver form/ a form/index.svelte lugar de escribir explícitamente form/index.svelte .

Creo que este complemento por defecto debería seguir la resolución de estilo node.js para archivos que tienen la extensión .svelte .

form/             => form/index.svelte
form/input        => form/input.svelte (or form/input/index.svelte)
form/input.svelte => form/input.svelte
enhancement

Comentario más útil

En caso de que desee conocer los sentimientos de Rich sobre esto: https://twitter.com/Rich_Harris/status/1002959357250801664 , y esos también son los mismos que Ryan Dahl, creador de Node.

Yo también estoy de acuerdo. El hecho de que pueda resolver archivos sin una extensión no significa que deba hacerlo .

Todos 5 comentarios

Estoy en contra de esto, porque entonces ya no tiene distinción entre qué archivo es un archivo Svelte y qué archivo es un archivo normal. ¿Qué sucede si tienes index.js y index.svelte en la misma carpeta? ¿Qué se debe importar? Este sería un cambio rotundo. Además, no es compatible con los paquetes que yo sepa.

Para su caso específico, sugiero agregar un index.js con el siguiente contenido:

export { default as Index } from './index.svelte';
// ... you can add your other Svelte files here as well

Y luego importarlo como

<script>
   import { Index } from './form';
</script>

Gracias por su respuesta. Me gustaría volver a comprobar que estamos en la misma página porque no consideré que este tema fuera muy controvertido.

Estoy solicitando la capacidad de resolver archivos Svelte de la misma manera que resuelve cualquier archivo Javascript, TypeScript, JSX o TSX.

De la misma manera, no es necesario agregar la extensión en los proyectos de Typecript o React:

import A from "./a.ts"
// you can just do
import A from "./a"

El resolutor de mecanografiado VSCode sigue las reglas de resolución de Node.js. Su punto es súper válido cuando hablamos de diseñar reglas de resolución de nodo. Estoy de acuerdo contigo en ser más restrictivo.

Pero dado que el barco ha zarpado, ¿qué hace que la extensión .svelte sea ​​diferente de las extensiones .ts , .tsx , .jsx ?

Omitir extensiones es históricamente una idiosincrasia del mecanismo de resolución de Node. Isaac Z. Schlueter de Npm, quien, supongo, había estado involucrado en la discusión en ese momento, ha expresado su pesar al respecto. Y se encontró con incomprensión en los comentarios de su publicación. Tenga la seguridad de que este es sin duda un tema muy controvertido.

Las importaciones de ESM estándar no tienen nada en el sentido de omitir extensiones, y esa es la dirección con la que Svelte (y Rollup) tienden a alinearse, de forma predeterminada.

Dicho esto, eso es puramente una preocupación del paquete que utiliza. Si mal no recuerdo, con Webpack .svelte extensión es opcional por defecto. Y en Rollup, es una opción del complemento de

Dicho esto, eso es puramente una preocupación del paquete que utiliza. Si mal no recuerdo, con Webpack .svelte extensión es opcional por defecto. Y en Rollup, es una opción del complemento de

Interesante, no sabía que la extensión es opcional de forma predeterminada en el complemento del paquete web.

Apoyar esto significaría cambiar la forma en que se realiza la resolución del módulo en el servidor de idiomas, y posiblemente otras cosas. Además, debería ser una configuración para que las personas puedan declarar si quieren o no este comportamiento; después de todo, es posible que también necesiten cambiar su configuración de compilación si quieren que las importaciones de Svelte se escriban sin .svelte .

Volveré a abrir para que otros puedan opinar sobre esto.

En caso de que desee conocer los sentimientos de Rich sobre esto: https://twitter.com/Rich_Harris/status/1002959357250801664 , y esos también son los mismos que Ryan Dahl, creador de Node.

Yo también estoy de acuerdo. El hecho de que pueda resolver archivos sin una extensión no significa que deba hacerlo .

¿Fue útil esta página
0 / 5 - 0 calificaciones