Sveltekitを始めましょう

Mar 09, 2025 am 10:42 AM

Getting Started With SvelteKit

Sveltekitは、新世代のアプリケーションフレームワークを代表しています。もちろん、ファイルベースのルーティング、展開、サーバー側のレンダリングなど、次に提供されているサーバー側のレンダリングなど、アプリケーションを構築します。しかし、Sveltekitは、ネストされたレイアウト、同期されたページデータのサーバー側の突然変異、およびすぐに紹介するその他の機能もサポートしています。

この記事は、Sveltekitを使用したことがない人の興味を刺激することを望んで、Sveltekitの高レベルの概要を示すことを目的としています。簡単な旅になります。あなたが見るものが好きなら、完全なドキュメントはこちらです。

いくつかの点で、この記事を書くことは挑戦的です。 Sveltekitはアプリケーションフレームワークです。それはあなたが構築するのを助けるために存在します...アプリ。これにより、デモが難しくなります。ブログ投稿にアプリケーション全体を構築することは実行不可能です。したがって、私たちは想像力を少し使います。空のUIプレースホルダーとハードコーディングされた静的データを使用して、アプリケーションのスケルトンを構築します。目標は、実際のアプリケーションを構築することではなく、Sveltekitの実行中のメカニズムを表示して、独自のアプリケーションを構築できるようにすることです。 これを行うには、例として試行され、テストされたToアプリケーションを構築します。しかし、心配しないでください。これは、Sveltekitが別のTo Doアプリを作成するよりも、どのように機能するかに焦点を当てます。 この記事のすべてのコードは、githubで見つけることができます。このプロジェクトは、リアルタイムデモのためにVercelに展開されています。

プロジェクトを作成します

新しいSveltekitプロジェクトを開始するのは非常に簡単です。

npmを実行しますsvelte@最新のyour-app-name を端末に作成し、質問のヒントに答えます。必ず「Skeleton Project」を選択してくださいが、TypeScript、Eslintなどの場合は、必要に応じて選択できます。 プロジェクトが作成されたら、

npm i および<https:>npm run dev<code>を実行し、開発サーバーの実行を開始する必要があります。起動<https:>localhost:5173<code>ブラウザで、スケルトンアプリケーションのプレースホルダーページを取得します。 <https:> <https:>基本的なルーティング<h3> <src> src <https:>の下の<p>ルート<code>フォルダーに注意してください。すべてのルートのコードが含まれています。ルートの内容を含む<https:> page.svelte<code>ファイルが既にあります。ファイル階層のどこにいても、そのパスの実際のページには常に<https:>page.svelte<code>という名前が付けられています。これを念頭に置いて、しましょう<https:>https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list <code>、<https:>https://www.php.cn/link/29a9f8c8840e5e2be4de57 、<code>https://www.php.cn/link/29a9f8460e5e2be4edde557fd83712adminhttps://www.php.cn/link/29a9f8c8460e5e5e2be4edde57fuss83712usおよび<https:>https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712adminhttps://www.php.cn/link/29a9f8c8460e5e2be4edede57fdectuspatus各ページのテキストプレースホルダー。 <code> <https:>ファイルレイアウトは次のようになります <code>ブラウザのアドレスバーのURLパスを変更することでナビゲートできるはずです。 <https:> <code>レイアウト<https:> <code>アプリにナビゲーションリンクを追加する必要がありますが、作成した各ページにタグをコピーすることは確かにありません。それでは、Sveltekitがすべてのページのグローバルテンプレートとして扱う<https:>ルートのルートで<https:> layout.svelte<p>ファイルを作成しましょう。それにコンテンツを追加しましょう:<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;home&lt;https:&gt; &lt;https:&gt; &lt;li&gt; &lt;a href=&quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list&quot;&gt;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;アカウントステータス&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;ユーザー設定&lt;https:&gt; &lt;https:&gt; &lt;https:&gt; &lt;https:&gt; &lt;slot&gt;&lt;https:&gt; &lt;style&gt; nav { 背景色:ベージュ; } nav ul { ディスプレイ:Flex; } li { リストスタイル:なし; マージン:15px; } { テキスト装置:なし; 色:黒; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt;いくつかの基本的なナビゲーションといくつかの基本的なスタイル。特に重要なのは、&lt;code&gt; &lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;タグです。これは、WebコンポーネントとShadow Domで使用するスロットではなく、コンテンツの配置場所を示すSvelteの機能です。ページがレンダリングされると、ページコンテンツがスロットが配置されている場所にスライドします。 &lt;em&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt;ナビゲーションがあります!デザインの競争には勝ちませんが、それもやろうとはしませんでした。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;ネストされたレイアウト&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt;すべての管理ページに、構築したばかりの通常のレイアウトを継承し、すべての管理ページ(ただし管理ページのみ)の共通点を共有したい場合はどうなりますか?問題ありません。別の&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt;layout.svelte&lt;p&gt;をroot&lt;code&gt;admin&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;&lt;div&gt;これは管理ページ&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712div&gt;です &lt;slot&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; &lt;style&gt; div { パディング:15px; マージン:10px 0; 背景色:赤; 色:白; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt;これが管理ページであることを示す赤いバナーを追加し、以前と同様に、&lt;code&gt; &lt;slot&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt;は、ページのコンテンツをどこに行きたいかを示します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;以前のルートレイアウトがレンダリングされます。ルートレイアウトには&lt;p&gt;&lt;code&gt; &lt;slot&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt;タグがあります。ネストされたレイアウトの内容は、ルートレイアウト&lt;最後に、ネストされたレイアウトは、ページのコンテンツがレンダリングされる独自の&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;code&gt;&lt;slot&gt;を定義します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;管理ページに移動する場合は、新しい赤いバナーが表示されます。 &lt;code&gt;データを定義&lt;slot&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712slot&gt;わかりました、実際のデータをレンダリングしましょう。または、少なくとも実際のデータをどのようにレンダリングするかを見てみましょう。データベースを作成して接続する方法はたくさんあります。この投稿は、dynamodbを管理していないSveltekitに関するものなので、代わりにいくつかの静的データを「ロード」します。ただし、実際のデータに使用するのと同じメカニズムを使用して、読み取り、更新します。実際のWebアプリケーションの場合、静的データを返す関数を、使用するデータベースを接続してクエリする関数に置き換えます。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;&lt;p&gt;libhttps://www.php.cn/link/29a9f8c8c8460e5e2be4edde557fd83712datahttps:///www.php.cn/link/29a9f8c8460pde54ded844ded8444ded8444deddathttps odata.ts&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;これは、実際のクエリをシミュレートするために手動の遅延とともにいくつかの静的データを返します。これは、&lt;h3&gt;$ lib&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt;を介して他の場所にインポートされている&lt;p&gt;lib&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;フォルダーが表示されます。これは、Sveltekitがその特定のフォルダーに提供するものであり、独自のエイリアスを追加することもできます。&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; todos = [ {id:1、title: &quot;sveltekitイントロブログ投稿を書く&quot;、割り当て: &quot;adam&quot;、tags:[1]}、 {id:2、title: &quot;sveltekit write sveltekit dibanced data loading blog郵便&quot;、assioned: &quot;adam&quot;、tags:[1]}、 {id:3、title: &quot;prepare renderatl talk&quot;、assigned: &quot;adam&quot;、tags:[2]}、 {id:4、title:「すべてのsveltekitバグを修正」、割り当てられた: &quot;rich&quot;、tags:[3]}、 {ID:5、タイトル:「Adamのブログ投稿を編集」、割り当てられた:「Geoff」、タグ:[4]}、 ]; tags = [ {id:1、name: &quot;sveltekit content&quot;、color: &quot;ded&quot;}、 {id:2、name: &quot;Conferences&quot;、color: &quot;purple&quot;}、 {id:3、name: &quot;sveltekit development&quot;、color: &quot;pink&quot;}、 {id:4、name: &quot;css-tricks admin&quot;、color: &quot;blue&quot;}、 ]; エクスポートconst wait = async(nomul)=&gt; New Promise((res)=&gt; setimeout(res、金額?? 100)); async関数をエクスポートgettodos(){ 待ってください(); Todosを返します。 } async関数gettags()をエクスポート{ 待ってください(); return tags.reduce((lookup、tag)=&gt; { lookup [tag.id] = tag; return lookup; }、{}); } async関数gettodo(id)をエクスポートする{ return todos.find((t)=&gt; t.id == id); }&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt; 一个函数返回我们待办事项的扁平数组、我们的标签的查找以及获取单个待办事项的函数(我们将在 &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;リスト&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;Import {gettodos、gettags}から&quot;$ libhttps://www.php.cn/link/29a9f8460e5e2be4edde557fd83712datahttps://www.php.cn/link/29a9f8c8460e5e5e5e4ede5557fd83712ta&quot;; export function load(){ const todos = gettodos(); const tags = gettags(); 戻る { トドス、 タグ、 }; }&lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt;我们定义了一个&lt;p&gt; load()&lt;code&gt;函数、它会提取页面所需的数据。请注意、我们&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;em&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt;&lt;code&gt;等待对我们的&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;gettodos&lt;code&gt;和&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;gettags &lt;code&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;では、ページコンポーネントからこのデータにどのようにアクセスしますか? Sveltekitは、コンポーネントに&lt;code&gt; data&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;属性をデータとともに提供します。リアクティブな割り当てを使用して、to-dosとタグにアクセスします。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;リストページコンポーネントは次のようになりました。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt;&lt;script&gt; データをエクスポートします。 $ :( {todos、tags} = data); &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;タスク&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712th&gt; &lt;th&gt;タグ&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712th&gt; &lt;th&gt;割り当て&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)=&gt; tags [id] .name).jein( '、')} &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 { テキストアライグ:左; } &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; &lt;p&gt;これにより、To Doリストが表示されるはずです! &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h3&gt;レイアウトグループ&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; &lt;p&gt;詳細ページと変異したデータに移る前に、Sveltekitの非常に巧妙な機能:&lt;strong&gt;レイアウトグループ&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt;を簡単に見てみましょう。すべての管理ページのネストされたレイアウトを見てきましたが、ファイルシステムの同じレベルで任意のページ間でレイアウトを共有したい場合はどうでしょうか?特に、リストページと詳細ページ間でレイアウトを共有したい場合はどうなりますか?すでにそのレベルでグローバルなレイアウトがあります。代わりに、新しいディレクトリを作成できますが、名前は次のようにブラケットに配置する必要があります。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;リストと詳細ページをカバーするレイアウトグループがあります。私はそれを&lt;p&gt;(todo-management)&lt;code&gt;と名付けましたが、好きなものは何でも名前を付けることができます。この名前がレイアウトグループのページのURLに影響しないことは明らかです。 URLは同じままです。レイアウトグループは、すべてのレイアウトをページに追加できます。 &lt;em&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt;&lt;code&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;レイアウトを追加できます。svelte&lt;p&gt;ファイルと、「ねえ、私たちは何をしているのか」と言っている愚かな&lt;em&gt;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em&gt;バナーです。しかし、もっと面白いことをしましょう。レイアウトは、&lt;code&gt;load()&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;関数を定義して、その下のすべてのルートのデータを提供できます。この機能を使用してタグを読み込みましょう。詳細ページにタグを使用し、リストページを既に使用しています。実際、単一のデータを提供するためだけにレイアウトグループを強制することは、ほぼ確実に価値がありません。しかし、この投稿では、Sveltekitの新機能を見るために必要な言い訳を提供します! &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;最初に、リストページの&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;page.server.js&lt;p&gt;ファイルにアクセスして、そこからタグを削除しましょう。 &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; intorm {gettodos} from &quot;$ libhttps://www.php.cn/link/29a9f8c8460e5e2bbe4edde557fd83712datahttps://www.php.cn/link/29a9f8c8460pde57pde57pdeddedpedpedded ata &quot;; export function load(){ const todos = gettodos(); 戻る { トドス、 }; }&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;タグ&lt;p&gt;オブジェクトがないため、エラーが発生するようになりました。この問題を解決して、A &lt;server.server.js&lt;code&gt;ファイルをレイアウトグループに追加し、タグをロードする&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;load()&lt;code&gt;関数を定義します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; 「$ libhttps://www.php.cn/link/29a9f8c8460e5e2bbe4edde557fd83712datahttps://www.php.cn/link/29a9f8c8460pde57pde57pde570e2de54de570pde570pde570pdeddedde5570pde570pttps ata &quot;; export function load(){ const tags = gettags(); 戻る { タグ、 }; }&lt;code&gt; このように、リストページは再びレンダリングされました! &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; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt;ここで何が起こっているのかに焦点を当てましょう:&lt;p&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h4&gt;レイアウトグループのa &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h4&gt;load()&lt;p&gt;関数を定義し、&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;layout.server.js&lt;ul&gt;に配置します。 &lt;li&gt; これにより、レイアウトにサービスを提供するすべての&lt;code&gt;ページのデータが提供されます。この場合、これは私たちのリストと詳細ページを意味します。&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt;リストページは、&lt;server.js&lt;code&gt;ファイルにある&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; load()&lt;code&gt;関数も定義しています。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt;sveltekitは重い持ち上げを実行し、これらのデータソースの結果を一緒に統合し、両方を&lt;li&gt;データ&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; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt;詳細ページを使用して、To Doリストを編集します。まず、To-Do IDを含むクエリ文字列の詳細ページにリンクする列をリストページに追加しましょう。 &lt;p&gt; &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; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712a&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712td&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt;今すぐ詳細ページを作成しましょう。まず、ローダーを追加して、編集しているTo Doアイテムを取得します。 &lt;p&gt; page.server.js&lt;code&gt;in&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712details&lt;code&gt;次のコンテンツ:&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; intorm {gettodo} from &quot;$ libhttps://www.php.cn/link/29a9f8c8460e5e5e2be4edde557fd83712datahttps://www.php.cn/link/29a9f8c8460pde57pdeddedpeddedpeddedpdedpedded ata &quot;; エクスポート関数負荷({url}){ const id = url.searchparams.get( &quot;id&quot;); const todo = gettodo(id); 戻る { トッド、 }; }&lt;pre class=&quot;brush:php;toolbar:false&quot;&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt;私たちのローダーには、クエリの文字列値を抽出できる&lt;p&gt;url&lt;code&gt;属性が付属しています。これにより、編集しているTo Doリストを簡単に見つけることができます。 to-doをレンダリングし、関数を編集しましょう。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;Sveltekitには、フォームを使用する限り、優れた組み込みの可変性があります。フォームを覚えていますか?これが詳細ページです。簡単にするために、スタイルを省略しました。&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt;&lt;script&gt; 「$ apphttps://www.php.cn/link/29a9f8c8460e5e5e2be4edde557fd83712forms &quot;から{entance}をインポートします。 データをエクスポートします。 $:({todo、tags} = data); $:currenttags = todo.tags.map((id)=&gt; tags [id]); &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712script&gt; &lt;div&gt; {#each currentTagsとしてタグ} {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; save&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;レイアウトグループのローダーから以前のようにラベルと、ページのローダーからTo Doアイテムを取得します。タグIDのto-doリストから実際のタグオブジェクトを取得し、すべてをレンダリングします。非表示のID入力と実際のタイトル入力を備えたフォームを作成します。ラベルを表示し、フォームを送信するボタンを提供します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt; &lt;code&gt;使用に気づいた場合:拡張&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;、これはSveltekitにプログレッシブエンハンスメントとAJAXを使用してフォームを送信するように指示するだけです。常に使用できます。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;h4&gt;編集をどのように保存しますか? &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h4&gt; &lt;p&gt; &lt;code&gt;action = &quot;?https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712edittodo&quot;&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;フォーム自体の属性?これにより、編集されたデータをどこに送信するかがわかります。私たちのケースでは、&lt;code&gt;edittodo &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &quot;Action&quot;に提出したいと考えています。&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;server.server.js&lt;p&gt;ファイルに次のように追加して作成してみましょう(詳細」を既に提供しています(現在、ファイルには&lt;code&gt;load()&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;関数があります。 &lt;sveltejshttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712kit &quot;から&lt;code&gt; import {redirect}から{redirect}。 「$ libhttps://www.php.cn/link/29a9f8c8460e5e2bbe4edde557fd83712datahttps://www.php.cn/link/29a9f8c8460e4de4de2be4de2be4de2de257pdde257pdde257pdde2be4dde2be4dedahtttstpsttsttsttsttsttsttsttps」から{updatodo、wait}をインポートしてくださいa &quot;; https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4ede557fd83712 ... constアクションをエクスポート= { async edittodo({request}){ const formdata = await request.formdata(); const id = formdata.get( &quot;id&quot;); const newtitle = formdata.get( &quot;title&quot;); 待っています(250); updateTodo(id、newtitle)を待っています。 スローリダイレクト(303、 &quot;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list&quot;); }、 }; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; フォームアクションは、さまざまなフォームフィールドに&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; formdata &lt;pre class=&quot;brush:php;toolbar:false&quot;&gt;メソッドを備えた&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt; formdata&lt;p&gt;へのアクセスを提供する&lt;code&gt;リクエスト&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;オブジェクトを提供します。編集中のTo-Doを見つけるためにここでそれを取得できるように、Hidden ID値入力を追加しました。遅延をシミュレートし、new&lt;code&gt;updateTodo()&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;メソッドを呼び出し、ユーザーを&lt;code&gt;https://www.php.cn/link/29a9f8c8460e5e2bbe4edde557fd83712リスト&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;ページに戻します。 &lt;code&gt;updateTodo()&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;メソッドは、実生活では単純に更新されます。 &lt;code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;async関数updateTodo(id、newtitle)をエクスポート{{ const todo = todos.find((t)=&gt; t.id == id); object.Assign(todo、{title:newtitle}); }&lt;code&gt; &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;次に、To-Doアイテムの1つの編集ボタンをクリックして、&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre&gt;https://www.php.cn/link/link/29a9f8c8460e5e5e2be4edde557fd83712details&lt;p&gt;で編集ページを表示しましょう。&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;新しいタイトルを追加します:&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;さあ、[保存]をクリックします。これにより、&lt;code&gt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;ページに戻り、新しいto-doタイトルを適用します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;新しいタイトルはどのように登場しましたか?これは自動です。 &lt;code&gt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712list&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt;ページにリダイレクトすると、sveltekitはすべてのローダーを通常のように自動的に繰り返します。これは、Sveltekit、Remix、次の13のオファーなどの新世代アプリケーションフレームワークが提供する重要な進歩です。ページをレンダリングする便利な方法を提供する代わりに、データを更新する必要があるエンドポイントを取得することは幸運で、データのロードとデータのロードを統合し、2つを連携させることができます。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;知りたいことがあるかもしれないこと... &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;&lt;strong&gt;この突然変異の更新はそれほど印象的ではないようです。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt;ナビゲート中にローダーが再び実行されます。フォームアクションにリダイレクトを追加せず、代わりに現在のページにとどまるとどうなりますか? Sveltekitは、以前と同様にフォーム操作の更新を実行しますが、ページレイアウトのものを含む現在のページのすべてのローダーを再実行します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;&lt;strong&gt;データを無効にするためのよりターゲットを絞った方法を持つことができますか?たとえば、&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt;タグは編集されていないため、実生活ではそれらを再クエリにしたくありません。はい、私があなたに示しているのは、Sveltekitのデフォルトのフォーム動作だけです。 &lt;code&gt;使用にコールバックを提供することにより、デフォルトの動作をオフにすることができます。 Sveltekitは、手動障害関数を提供します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;&lt;p&gt;ナビゲートするたびにデータを読み込むことは、高価で不要になる可能性があります。 &lt;strong&gt;このデータは、React-Queryのようなツールのようにキャッシュできますか?はい、それはただ違うです。 Sveltekitを使用すると、Webが提供したキャッシュコントロールヘッダーを設定(および尊重)できます。後続の記事でキャッシュ障害メカニズムを紹介します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;記事全体で静的データを使用し、メモリ内の値を変更します。すべてを復元して最初からやり直す必要がある場合は、&lt;p&gt;npm run dev&lt;code&gt;ノードプロセスを停止して再起動します。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt;要約&lt;h3&gt; &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3&gt; Sveltekitの表面に触れましたが、あなたが興奮するのに十分なものを見てきたことを願っています。Web開発がとても面白いと思ったのを最後に覚えていません。バンドリング、ルーティング、SSR、展開など、すぐに使用できる機能を使用すると、構成よりもコーディングに多くの時間を費やすことができます。 &lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;p&gt;以下は、Sveltekitを学ぶための次のステップとして使用できるリソースをいくつかあります:&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p&gt; &lt;ul&gt; &lt;li&gt;Sveltekit 1.0(Svelte blog)を発表しました&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt;Sveltekit初心者コース(Vercel)&lt;https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li&gt; &lt;li&gt;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">ログイン後にコピー</div></div></https:></p></https:></https:>

以上がSveltekitを始めましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

静的フォームプロバイダーの比較 静的フォームプロバイダーの比較 Apr 16, 2025 am 11:20 AM

ここでは、「静的フォームプロバイダー」という用語を埋めてみましょう。あなたはあなたのHTMLを持ってきます

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 Apr 17, 2025 am 10:55 AM

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

HTMLダイアログ要素を使用したいくつかの実践 HTMLダイアログ要素を使用したいくつかの実践 Apr 16, 2025 am 11:33 AM

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

ペーパーフォーム ペーパーフォーム Apr 16, 2025 am 11:24 AM

購入またはビルドは、テクノロジーの古典的な議論です。自分で物を構築することは、あなたのクレジットカードの請求書にはラインアイテムがないため、安価に感じるかもしれませんが

「ポッドキャストにサブスクライブ」リンクはどこにすべきですか? 「ポッドキャストにサブスクライブ」リンクはどこにすべきですか? Apr 16, 2025 pm 12:04 PM

しばらくの間、iTunesはポッドキャストの大きな犬だったので、「ポッドキャストにサブスクライブ」をリンクした場合:

毎週のプラットフォームニュース:テキスト間隔のブックマークレット、トップレベルの待望、新しいアンプロードインジケーター 毎週のプラットフォームニュース:テキスト間隔のブックマークレット、トップレベルの待望、新しいアンプロードインジケーター Apr 17, 2025 am 11:26 AM

今週のラウンドアップ、タイポグラフィを検査するための便利なブックマークレットである。

独自の非JavaScriptベースの分析をホストするためのオプション 独自の非JavaScriptベースの分析をホストするためのオプション Apr 15, 2025 am 11:09 AM

サイトの訪問者と使用データを追跡するのに役立つ分析プラットフォームがたくさんあります。おそらく、特にGoogleアナリティクスが広く使用されています

See all articles