Language-tools: Mendukung impor komponen Svelte tanpa ekstensi

Dibuat pada 23 Sep 2020  ·  5Komentar  ·  Sumber: sveltejs/language-tools

Apakah permintaan fitur Anda terkait dengan masalah?

Saya memiliki beberapa komponen kompleks dengan banyak subkomponen. Subkomponen bersifat pribadi dan berkumpul untuk membuat satu komponen besar.

Berikut ini contohnya:

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

Jelaskan solusi yang Anda inginkan

Saya ingin dapat menyelesaikan form/ menjadi form/index.svelte daripada secara eksplisit menulis form/index.svelte .

Saya pikir plugin ini secara default harus mengikuti resolusi gaya node.js untuk file yang memiliki ekstensi .svelte .

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

Komentar yang paling membantu

Jika Anda ingin tahu perasaan Rich tentang ini: https://twitter.com/Rich_Harris/status/1002959357250801664 - dan itu juga sama dengan Ryan Dahl, pencipta Node.js.

Saya juga setuju. Hanya karena Anda dapat menyelesaikan file tanpa ekstensi, bukan berarti Anda harus .

Semua 5 komentar

Saya menentang ini, karena Anda kemudian tidak memiliki perbedaan lagi file mana yang merupakan file Svelte dan file mana yang merupakan file normal. Apa yang terjadi jika Anda memiliki index.js dan index.svelte dalam folder yang sama? Apa yang harus diimpor? Ini akan menjadi perubahan yang menghancurkan. Juga tidak didukung oleh bundler sejauh yang saya tahu.

Untuk kasus spesifik Anda, saya sarankan untuk menambahkan index.js dengan konten berikut:

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

Dan kemudian impor seperti

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

Terimakasih atas tanggapan Anda. Saya ingin memeriksa kembali apakah kita berada di halaman yang sama karena saya tidak menganggap masalah ini sangat kontroversial.

Saya meminta kemampuan untuk menyelesaikan file Svelte dengan cara yang sama seperti Anda menyelesaikan file Javascript, TypeScript, JSX, atau TSX.

Dengan cara yang sama Anda tidak perlu menambahkan ekstensi di TypeScript atau proyek React:

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

Resolver TypeScript VSCode mengikuti aturan resolusi Node.js. Poin Anda sangat valid ketika kita berbicara tentang merancang aturan Resolusi Node. Saya setuju dengan Anda untuk menjadi lebih membatasi.

Tetapi mengingat kapal itu telah berlayar, apa yang membuat ekstensi .svelte berbeda dari ekstensi .ts , .tsx , .jsx ?

Melewatkan ekstensi secara historis merupakan keistimewaan mekanisme resolusi Node. Isaac Z. Schlueter dari Npm yang, saya kira, telah terlibat dalam diskusi pada saat itu, telah menyatakan penyesalannya tentang hal itu. Dan dia bertemu dengan ketidakpahaman dalam komentar di postingannya. Yakinlah ini pasti topik yang sangat kontroversial.

Impor ESM standar tidak berarti apa-apa dalam arti melewatkan ekstensi, dan itulah arah yang cenderung disejajarkan dengan Svelte (dan Rollup), secara default.

Yang sedang berkata, itu murni masalah bundler yang Anda gunakan. Jika saya ingat dengan benar, dengan Webpack ekstensi .svelte adalah opsional secara default. Dan di Rollup, ini adalah opsi dari plugin

Yang sedang berkata, itu murni masalah bundler yang Anda gunakan. Jika saya ingat dengan benar, dengan Webpack ekstensi .svelte adalah opsional secara default. Dan di Rollup, ini adalah opsi dari plugin

Menarik, saya tidak tahu bahwa ekstensi itu opsional secara default di plugin webpack.

Mendukung ini berarti mengubah cara resolusi modul dilakukan di server bahasa, dan mungkin hal-hal lain. Juga, itu perlu menjadi pengaturan sehingga orang dapat mendeklarasikan apakah mereka menginginkan perilaku ini atau tidak - setelah semua, mereka mungkin perlu mengubah konfigurasi build mereka juga jika mereka ingin impor Svelte ditulis tanpa .svelte .

Saya akan membuka kembali sehingga orang lain dapat mempertimbangkan ini.

Jika Anda ingin tahu perasaan Rich tentang ini: https://twitter.com/Rich_Harris/status/1002959357250801664 - dan itu juga sama dengan Ryan Dahl, pencipta Node.js.

Saya juga setuju. Hanya karena Anda dapat menyelesaikan file tanpa ekstensi, bukan berarti Anda harus .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

matthewmueller picture matthewmueller  ·  3Komentar

non25 picture non25  ·  5Komentar

scippio picture scippio  ·  3Komentar

koddr picture koddr  ·  6Komentar

vatro picture vatro  ·  3Komentar