Rumah > hujung hadapan web > tutorial css > Bermula dengan Sveltekit

Bermula dengan Sveltekit

Lisa Kudrow
Lepaskan: 2025-03-09 10:42:14
asal
453 orang telah melayarinya

Getting Started With SvelteKit Sveltekit adalah wakil generasi baru rangka kerja aplikasi. Ia tentu akan membina aplikasi untuk anda, termasuk penghalaan berasaskan fail, penempatan, dan penyampaian sisi pelayan yang seterusnya sentiasa disediakan. Tetapi Sveltekit juga menyokong susun atur bersarang, mutasi sisi pelayan data halaman yang disegerakkan, dan beberapa ciri lain yang akan kami perkenalkan tidak lama lagi.

Artikel ini bertujuan untuk memberikan gambaran keseluruhan tahap Sveltekit, dengan harapan dapat memberi inspirasi kepada kepentingan sesiapa yang tidak pernah menggunakan Sveltekit. Ia akan menjadi perjalanan yang mudah. Jika anda suka apa yang anda lihat, dokumentasi penuh ada di sini.

Dalam beberapa cara, menulis artikel ini mencabar. Sveltekit adalah rangka kerja aplikasi

. Ia wujud untuk membantu anda membina ... aplikasi. Ini menjadikan demonstrasi sukar. Membina keseluruhan aplikasi dalam catatan blog tidak boleh dilaksanakan. Jadi kita akan menggunakan imaginasi kita sedikit. Kami akan membina rangka aplikasi, menggunakan beberapa ruang letak UI kosong dan data statik yang berkod keras. Matlamatnya bukan untuk membina aplikasi sebenar, tetapi untuk menunjukkan kepada anda mekanisme Sveltekit yang berjalan supaya anda dapat membina aplikasi anda sendiri. Untuk melakukan ini, kami akan membina aplikasi yang dicuba dan diuji sebagai contoh. Tetapi jangan risau, ini akan memberi tumpuan lebih kepada bagaimana Sveltekit berfungsi daripada membuat aplikasi tugasan yang lain.

Semua kod dalam artikel ini boleh didapati di GitHub. Projek ini juga telah digunakan di Vercel untuk demonstrasi masa nyata.

Buat projek

Sangat mudah untuk memulakan projek Sveltekit baru. Jalankan npm Buat svelte@terbaru anda-app-name

di terminal dan jawab petua soalan. Pastikan untuk memilih "Projek Skeleton", tetapi untuk TypeScript, Eslint, dan lain -lain, anda boleh membuat pilihan jika anda mahu.

Selepas projek itu dibuat, jalan npm i <https:> dan <code> npm run dev <https:>, dan pelayan pembangunan harus mula berjalan. Pelancaran <code> localhost: 5173 <https:> dalam penyemak imbas anda dan anda akan mendapat halaman tempat untuk aplikasi Skeleton. <https:> <h3> Routing Asas <https:> <p> Sila ambil perhatian folder <code> <https:> di bawah <code> src <https:>. Ia mengandungi kod untuk semua laluan kami. Terdapat fail <code> page.svelte <st> yang mengandungi kandungan akar <https:> https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712 <code> Tidak kira di mana anda berada dalam hierarki fail, halaman sebenar laluan itu selalu dinamakan <https:> page.svelte <code>. Dengan ini, mari <https:> https://www.php.cn/link/29a9f8c8460e5e2be4edde5557fd83712list <code>, <https:> https://www.php.cn , <stww.cn dan pemegang letak teks untuk setiap halaman.> <https:> susun atur fail anda sepatutnya kelihatan seperti ini: <code> <https:> anda harus dapat menavigasi dengan menukar laluan URL di bar alamat penyemak imbas. <code> <https:> Layout <https:> <p> Kami mahu menambah pautan navigasi ke aplikasi kami, tetapi kami pasti tidak mahu tag mereka disalin ke setiap halaman yang kami buat. Oleh itu mari kita buat fail <stsvelte> di akar folder <p> <https:> folder, yang Sveltekit akan dianggap sebagai templat global untuk semua halaman.Mari tambahkan beberapa kandungan kepadanya: <https:> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> &lt;nav&gt; &lt;ul&gt; &lt;li&gt; &lt;a href=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712&quot;&gt; rumah &lt;https:&gt; &lt;https:&gt; &lt;li&gt; &lt;a href=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list&quot;&gt; Senarai To-Do &lt;https:&gt; &lt;https:&gt; &lt;li&gt; &lt;a href=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712adminhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712paid-status&quot;&gt; status akaun &lt;https:&gt; &lt;https:&gt; &lt;li&gt; &lt;a href=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712adminhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712user-settings&quot;&gt; Tetapan Pengguna &lt;https:&gt; &lt;https:&gt; &lt;https:&gt; &lt;https:&gt; &lt;slot&gt; &lt;https:&gt; &lt;style&gt; nav { latar belakang warna: beige; } nav ul { Paparan: Flex; } li { Senarai gaya: Tiada; Margin: 15px; } { Teks-penyerapan: Tiada; Warna: Hitam; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; Beberapa navigasi asas dan beberapa gaya asas. Apa yang penting ialah tag &lt;code&gt; &lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; &lt;s&gt;. Ini &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; bukan slot yang anda gunakan dengan komponen web dan bayangan dom, tetapi ciri svelte yang menunjukkan di mana kandungan kami diletakkan. Apabila halaman diberikan, kandungan halaman akan meluncur ke lokasi di mana slot terletak. &lt;em&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt; Sekarang kita mempunyai beberapa navigasi! Kami tidak akan memenangi sebarang pertandingan reka bentuk, tetapi kami tidak cuba untuk melakukannya sama ada. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; susun atur bersarang &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt; Bagaimana jika kita mahu semua halaman pengurusan mewarisi susun atur biasa yang baru kita bina dan juga berkongsi beberapa titik umum dari semua halaman pengurusan (tetapi hanya halaman pengurusan)? Tidak ada masalah, kami menambah satu lagi &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; susun atur.svelte &lt;p&gt; ke direktori akar &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; dan ia akan diwarisi oleh segala -galanya di bawahnya.Mari buat ini dan tambahkan ini: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;div&gt; Ini adalah halaman admin &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712div&gt; &lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; &lt;style&gt; div { Padding: 15px; Margin: 10px 0; latar belakang warna: merah; Warna: Putih; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; Kami menambah sepanduk merah yang menunjukkan bahawa ini adalah halaman admin, dan kemudian, seperti dahulu, A &lt;code&gt; &lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; menunjukkan di mana kami mahu kandungan halaman itu pergi. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; susun atur akar sebelumnya akan diberikan. Terdapat tag &lt;p&gt; &lt;code&gt; &lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; dalam susun atur akar. Kandungan susun atur bersarang memasuki susun atur akar &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;code&gt; &lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt;. Akhirnya, susun atur bersarang mentakrifkan sendiri &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;code&gt; &lt;slot&gt; di mana kandungan halaman akan diberikan. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; Jika anda menavigasi ke halaman admin, anda harus melihat sepanduk merah baru: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Tentukan data &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt; Baiklah, mari kita jadikan beberapa data sebenar - atau sekurang -kurangnya melihat bagaimana kita memberikan beberapa data sebenar. Terdapat banyak cara untuk membuat dan menyambung ke pangkalan data. Siaran ini adalah mengenai Sveltekit, tidak menguruskan DynamoDB, jadi kami sebaliknya akan &quot;memuatkan&quot; beberapa data statik. Walau bagaimanapun, kami akan menggunakan mekanisme yang sama yang anda gunakan untuk data sebenar untuk membaca dan mengemas kini. Untuk aplikasi web sebenar, gantikan fungsi yang mengembalikan data statik dengan fungsi yang menghubungkan dan menanyakan mana -mana pangkalan data yang anda gunakan. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; &lt;p&gt; mari kita buat modul yang sangat mudah dalam libhttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712datahttps: //www.cn Ata.ts &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; yang mengembalikan beberapa data statik bersama -sama dengan kelewatan manual untuk mensimulasikan pertanyaan sebenar. Anda akan melihat folder ini &lt;p&gt; lib &lt;code&gt; yang diimport di tempat lain melalui &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; $ lib &lt;code&gt;. Inilah yang disediakan oleh Sveltekit untuk folder tertentu, dan anda juga boleh menambah alias anda sendiri.&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; biarkan todos = [ {id: 1, Tajuk: &quot;Tulis Sveltekit Intro Blog Post&quot;, ditugaskan: &quot;Adam&quot;, tags: [1]}, {id: 2, Tajuk: &quot;Tulis Sveltekit Lanjutan Data Memuatkan Data Pos&quot;, Ditugaskan: &quot;Adam&quot;, Tags: [1]}, {id: 3, Tajuk: &quot;Sediakan RenderAtl Talk&quot;, ditugaskan: &quot;Adam&quot;, tags: [2]}, {id: 4, tajuk: &quot;Betulkan semua bug sveltekit&quot;, ditugaskan: &quot;kaya&quot;, tags: [3]}, {id: 5, Tajuk: &quot;Edit catatan blog Adam&quot;, yang ditugaskan: &quot;Geoff&quot;, tags: [4]}, ]; Biarkan tags = [ {id: 1, nama: &quot;kandungan sveltekit&quot;, warna: &quot;ded&quot;}, {id: 2, nama: &quot;persidangan&quot;, warna: &quot;ungu&quot;}, {id: 3, nama: &quot;pembangunan sveltekit&quot;, warna: &quot;merah jambu&quot;}, {id: 4, nama: &quot;css-tricks admin&quot;, warna: &quot;biru&quot;}, ]; Export const Wait = Async (Amaun) = &amp; gt; janji baru ((res) = &amp; gt; setTimeout (res, amaun ?? 100)); Eksport fungsi async getTodos () { menunggu tunggu (); kembali todos; } Eksport fungsi async getTags () { menunggu tunggu (); kembali tags.Reduce ((lookup, tag) = &amp; gt; { lookup [tag.id] = tag; kembali carian; }, {}); } Eksport fungsi async getToDo (id) { kembali todos.find ((t) = &amp; gt; t.id == id); } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; 一个函数返回我们待办事项的扁平数组、我们的标签的查找以及获取单个待办事项的函数 (我们将在 &quot;详细信息&quot; 页面中使用最后一个函数)。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt; 加载数据 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; &lt;p&gt; 我们如何将这些数据放入我们的 svelte 页面?方法有很多, 但现在, 让我们在 &lt;code&gt; senarai &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; 文件夹中创建一个 &lt;code&gt; page.server.js &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; 文件, 并将此内容放在其中: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; import {getTodos, getTags} dari &quot;$libhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712datahttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712todoData&quot;; beban fungsi eksport () { const todos = getTodos (); const tags = getTags (); kembali { Todos, tag, }; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; 我们定义了一个 &lt;code&gt; beban () &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; 函数, 它会提取页面所需的数据。请注意, 我们 &lt;em&gt; 没有 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt; 等待对我们的 &lt;code&gt; gettodos &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; 和 &lt;code&gt; gettags &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; 异步函数的调用。这样做会创建一个数据加载瀑布, 因为我们在加载标签之前等待待办事项进入。相反, 我们从&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Jadi, bagaimana kita mengakses data ini dari komponen halaman? Sveltekit menyediakan komponen kami dengan atribut data &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; dengan data. Kami akan mengakses to-dos dan tag kami menggunakan tugasan reaktif. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Komponen halaman senarai kami kini kelihatan seperti ini. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;script&gt; Eksport Let Data; $: ({todos, tags} = data); &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt; tugas &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712th&gt; &lt;th&gt; tags &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712th&gt; &lt;th&gt; Ditugaskan &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712th&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712tr&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712thead&gt; &lt;tbody&gt; {#each todos as t} &lt;tr&gt; &lt;td&gt; {t.title} &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712td&gt; &lt;td&gt; {t.tags.map ((id) = &amp; gt; tags [id] .name) .join (',')} &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712td&gt; &lt;td&gt; {t.assigned} &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712td&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712tr&gt; {https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712each} &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712tbody&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712table&gt; &lt;style&gt; th { Teks-Align: Kiri; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; Ini harus menjadikan senarai tugasan kami! &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt; Kumpulan susun atur &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; &lt;p&gt; Sebelum kita beralih ke halaman butiran dan data yang bermutasi, mari kita lihat dengan cepat ciri -ciri yang sangat bijak dari Sveltekit: &lt;strong&gt; Kumpulan Layout &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt;. Kami telah melihat susun atur bersarang untuk semua halaman pengurusan, tetapi bagaimana jika kita mahu berkongsi susun atur antara halaman sewenang -wenangnya pada tahap yang sama dalam sistem fail? Khususnya, bagaimana jika kita hanya mahu berkongsi susun atur antara halaman senarai kami dan halaman butiran? Kami sudah mempunyai susun atur global pada tahap itu. Sebaliknya, kita boleh membuat direktori baru, tetapi nama itu harus diletakkan dalam kurungan, seperti berikut: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Kami kini mempunyai kumpulan susun atur yang meliputi halaman senarai dan butiran. Saya menamakannya &lt;code&gt; (Todo-Management) &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;, tetapi anda boleh menamakannya apa sahaja yang anda suka.Harus jelas bahawa nama ini &lt;em&gt; tidak akan menjejaskan URL halaman dalam kumpulan susun atur. URL akan tetap sama; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt; &lt;code&gt; kami &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; boleh &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; tambah file &lt;p&gt;Tetapi mari kita buat sesuatu yang lebih menarik. Susun atur boleh menentukan fungsi &lt;code&gt; () &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; untuk menyediakan data untuk semua laluan di bawahnya. Mari kita gunakan ciri ini untuk memuatkan tag kami - kerana kami akan menggunakan tag kami di halaman butiran - dan halaman senarai yang kami ada. Malah, ia hampir tidak bernilai untuk memaksa kumpulan susun atur hanya untuk menyediakan satu data; Tetapi untuk jawatan ini, ia akan memberikan alasan yang kita perlukan untuk melihat ciri -ciri baru Sveltekit! &lt;code&gt; 3 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; import {gettodos} dari &quot;$ libhttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712datahttps: //www.php.cn/link/29a9 a &quot;; beban fungsi eksport () { const todos = getTodos (); kembali { Todos, }; } &lt;p&gt; &lt;code&gt; Halaman senarai kami kini harus menghasilkan ralat kerana tidak ada &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; tags &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; objek. Mari kita selesaikan masalah ini dengan menambahkan fail susun atur &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; import {gettags} dari &quot;$ libhttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712datahttps: //www.pn. a &quot;; beban fungsi eksport () { const tags = getTags (); kembali { tag, }; } &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; Dengan cara ini, halaman senarai kami diberikan lagi! &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; Kami memuatkan data dari pelbagai lokasi &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; mari kita fokus pada apa yang berlaku di sini: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; Kami menentukan fungsi &lt;p&gt; () &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; untuk kumpulan susun atur, dan kami meletakkannya dalam &lt;h4&gt; susun atur.server.js &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h4&gt;. &lt;p&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; Ini menyediakan data untuk semua halaman &lt;ul&gt; yang melayani susun atur - dalam kes ini, ini bermakna senarai senarai dan butiran kami.&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt; Halaman senarai kami juga mentakrifkan fungsi &lt;code&gt; () &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; yang terletak di fail &lt;code&gt; page.server.js &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt; Sveltekit melakukan pengangkat berat, menggabungkan hasil sumber data ini bersama -sama dan menyediakan kedua -dua data &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712ul&gt; &lt;h3&gt; Halaman Butiran &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; &lt;p&gt; Kami akan menggunakan halaman Butiran untuk mengedit senarai tugasan. Pertama, mari tambahkan lajur ke halaman senarai yang menghubungkan ke halaman butiran rentetan pertanyaan yang mengandungi ID To-Do. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;td&gt; &lt;a href=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712details?id={t.id}&quot;&gt; edit &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712a&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712td&gt; &lt;s&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; mari kita bina halaman butiran sekarang. Pertama, kami akan menambah loader untuk mendapatkan item tugasan yang kami edit. Buat A &lt;p&gt; import {getTodo} dari &quot;$ libhttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712datahttps: //www.pn/link/29a9 a &quot;; beban fungsi eksport ({url}) { const id = url.searchParams.get (&quot;id&quot;); const todo = getToDo (id); kembali { Todo, }; } &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; Loader kami dilengkapi dengan atribut &lt;code&gt; url &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; dari mana kami dapat mengekstrak nilai rentetan pertanyaan. Ini menjadikannya mudah untuk mencari senarai tugasan yang kami edit. Mari kita membuat tugas, dan edit berfungsi. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; Sveltekit mempunyai mutabiliti terbina dalam yang sangat baik selagi anda menggunakan borang tersebut. Ingat borang? Inilah halaman butiran kami. Untuk kesederhanaan, saya telah meninggalkan gaya.&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;script&gt; import {enhance} dari &quot;$ apphttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712forms&quot;; Eksport Let Data; $: ({todo, tags} = data); $: currentTags = todo.tags.map ((id) = &amp; gt; tags [id]); &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script&gt; &lt;div&gt; {#each currentTags sebagai tag} {tag.name} {https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712each} &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712div&gt; &lt;form method=&quot;POST&quot; action=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712editTodo&quot; use:enhance&gt; &lt;input type=&quot;hidden&quot; name=&quot;id&quot; value={todo.id} https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712&gt; &lt;input type=&quot;text&quot; name=&quot;title&quot; bind:value={todo.title} https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712&gt; &lt;button type=&quot;submit&quot;&gt; Simpan &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712button&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712form&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; Kami mendapat label dari loader kumpulan susun atur seperti dahulu dan item tugasan dari loader halaman. Kami mendapat objek tag sebenar dari senarai tugasan ID Tag dan kemudian memberikan segala-galanya. Kami membuat borang dengan input ID tersembunyi dan input tajuk sebenar. Kami memaparkan label dan kemudian memberikan butang untuk menyerahkan borang. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Jika anda melihat &lt;code&gt; Gunakan: Tingkatkan &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;, ini hanya memberitahu Sveltekit untuk menggunakan peningkatan progresif dan Ajax untuk menyerahkan borang kami. Anda boleh sentiasa menggunakannya. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h4&gt; Bagaimana kita menyimpan suntingan kita? &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h4&gt; &lt;p&gt; Nota &lt;code&gt; action = &quot;? Https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712edittodo&quot; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; atribut pada borang itu sendiri? Ini memberitahu kami di mana kami mahu menyerahkan data yang diedit. Untuk kes kami, kami ingin menyerahkan kepada &lt;code&gt; edittodo &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; tindakan &quot;.&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; mari kita buat dengan menambahkan yang berikut ke page.server.js &lt;code&gt; fail yang telah kami sediakan untuk &quot;butiran&quot; (fail yang kini mempunyai &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; beban () &lt;code&gt; fungsi untuk mendapatkan item tugas kami): &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; import {redirect} dari &quot;@sveltejshttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712kit&quot;; Import {UpdateTodo, tunggu} dari &quot;$ libhttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712datahttps: //www.php.cn/Link. &quot;; https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e2be5557fd8fd8fd8fd8fd8fd8f. Eksport Const Actions = { async edittodo ({request}) { const formData = menunggu permintaan.FormData (); const id = formData.get (&quot;id&quot;); const newtitle = formData.get (&quot;tajuk&quot;); menunggu tunggu (250); menunggu updateToDo (id, newtitle); membuang redirect (303, &quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list&quot;); }, }; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; Tindakan borang &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; menyediakan kami dengan objek &lt;p&gt; &lt;code&gt; yang memberikan akses kepada kami &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; formData &lt;code&gt; yang mempunyai &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; get &lt;code&gt; kaedah untuk pelbagai bidang bentuk kami. Kami menambah input nilai ID tersembunyi supaya kami dapat mendapatkannya di sini untuk mencari tugas yang kami edit. Kami mensimulasikan kelewatan itu, hubungi kaedah baru &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; UpdateToDo () &lt;code&gt;, dan mengalihkan pengguna kembali ke &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; https://www.php.cn/link/29A9F8460E5E2E4EDDE557FD83712LIST &lt;code&gt; PAGE. Kaedah &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; UpdateToDo () &lt;code&gt; hanya mengemas kini data statik kami; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; Export async function updateToDo (id, newtitle) { const todo = todos.find ((t) = &amp; gt; t.id == id); Object.assign (todo, {title: newtitle}); } &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; mari cuba. Kami mula -mula pergi ke halaman senarai: &lt;p&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; Sekarang, mari klik butang Edit untuk salah satu item To-Do untuk membawa halaman edit dalam &lt;p&gt; https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712details &lt;code&gt;.&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; kami akan menambah tajuk baru: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Sekarang, klik Simpan.Ini harus membawa kita kembali ke &lt;code&gt; https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; dan memohon tajuk To-Do yang baru. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Bagaimana tajuk baru muncul? Ini adalah automatik. Sebaik sahaja kita mengarahkan ke &lt;code&gt; https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; Page, Sveltekit akan secara automatik akan meraih semula semua pemuat kita secara automatik. Ini adalah kemajuan utama bahawa rangka kerja aplikasi generasi baru seperti Sveltekit, Remix, dan 13 tawaran seterusnya. Daripada memberi anda cara yang mudah untuk menjadikan halaman, maka nasib baik mendapatkan sebarang titik akhir yang mungkin anda perlukan untuk mengemas kini data anda, mereka mengintegrasikan mutasi data dengan pemuatan data, yang membolehkan kedua -duanya bekerja bersama. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Beberapa perkara yang mungkin anda ingin tahu ... &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; &lt;strong&gt; Kemas kini mutasi ini tidak kelihatan terlalu mengagumkan. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt; Loader akan berjalan semula semasa anda menavigasi. Apa yang berlaku jika kita tidak menambah pengalihan dalam tindakan borang, tetapi sebaliknya tinggal di halaman semasa? Sveltekit akan melakukan kemas kini dalam operasi borang seperti dahulu, tetapi masih akan memulihkan semua pemuat untuk halaman semasa, termasuk yang ada dalam susun atur halaman. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; &lt;strong&gt; Bolehkah kita mempunyai cara yang lebih disasarkan untuk membatalkan data kami? &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt; Sebagai contoh, tag kami tidak diedit, jadi dalam kehidupan sebenar kami tidak mahu membuat pertanyaan semula. Ya, semua yang saya tunjukkan adalah tingkah laku bentuk lalai di Sveltekit. Anda boleh mematikan tingkah laku lalai dengan memberikan panggilan balik kepada &lt;code&gt; penggunaan: Tingkatkan &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;. Sveltekit kemudian menyediakan fungsi kegagalan manual. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; &lt;strong&gt; Memuatkan data setiap kali anda menavigasi boleh mahal dan tidak perlu. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt; Bolehkah saya cache data ini seperti alat seperti React-Query? Ya, ia hanya berbeza. Sveltekit membolehkan anda menetapkan (dan kemudian menghormati) tajuk kawalan cache yang disediakan oleh web. Saya akan memperkenalkan mekanisme kegagalan cache dalam artikel berikutnya. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Kami menggunakan data statik sepanjang artikel dan mengubah nilai dalam ingatan. Jika anda perlu memulihkan segala -galanya dan mulakan semula, hentikan dan mulakan semula proses nod &lt;code&gt; npm run dev &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt; Ringkasan &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; &lt;p&gt; Kami hanya menyentuh permukaan Sveltekit, tetapi diharapkan anda telah melihat sesuatu yang cukup untuk membuat anda teruja.Saya tidak ingat kali terakhir saya mendapati pembangunan web begitu menarik. Dengan ciri-ciri luar kotak seperti bundling, routing, ssr, dan penempatan, saya boleh menghabiskan lebih banyak masa pengekodan daripada mengkonfigurasi. &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; Berikut adalah lebih banyak sumber yang boleh anda gunakan sebagai langkah seterusnya untuk mempelajari Sveltekit: &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;ul&gt; &lt;li&gt; mengumumkan sveltekit 1.0 (blog svelte) &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt; kursus pemula sveltekit (vercel) &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt; Dokumentasi Sveltekit &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712ul&gt;&lt;/style&gt;&lt;/https:&gt;&lt;/slot&gt;&lt;/https:&gt;&lt;/https:&gt;&lt;/https:&gt;&lt;/https:&gt;&lt;/a&gt; &lt;/li&gt;&lt;/https:&gt;&lt;/https:&gt;&lt;/a&gt; &lt;/li&gt;&lt;/https:&gt;&lt;/https:&gt;&lt;/a&gt; &lt;/li&gt;&lt;/https:&gt;&lt;/https:&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;/nav&gt;</pre><div class="contentsignin">Salin selepas log masuk</div></div></https:></https:></p></stsvelte></p></https:></https:>

Atas ialah kandungan terperinci Bermula dengan Sveltekit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan