検索

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:> <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></https:></p></https:></https:>

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
@KeyFrames対CSSトランジション:違いは何ですか?@KeyFrames対CSSトランジション:違いは何ですか?May 14, 2025 am 12:01 AM

@keyframesandcsstransitionsdifferincomplexity:@keyframesallowsfordeTailedAnimationのシーケンス、whilecsstransitionshandlesimplestatechanges.usecsstransitionsは、ButtonColorChanges、および@keyframesforintricateanimationslikerotatingingspinnnersを使用します。

静的サイトコンテンツ管理にページCMSを使用します静的サイトコンテンツ管理にページCMSを使用しますMay 13, 2025 am 09:24 AM

私は知っています、私は知っています:たくさんのコンテンツ管理システムオプションが利用可能であり、私はいくつかテストしましたが、実際にはY&#039;知っているものはありませんでしたか?奇妙な価格設定モデル、困難なカスタマイズ、一部は全体になることさえあります&

HTMLのCSSファイルをリンクするための究極のガイドHTMLのCSSファイルをリンクするための究極のガイドMay 13, 2025 am 12:02 AM

CSSファイルをHTMLにリンクすることは、HTMLの一部で要素を使用することで実現できます。 1)タグを使用して、ローカルCSSファイルをリンクします。 2)複数のタグを追加することにより、複数のCSSファイルを実装できます。 3)外部CSSファイルは、そのような絶対URLリンクを使用します。 4)ファイルパスとCSSファイルの読み込み順序の正しい使用を確認し、パフォーマンスを最適化すると、CSSプリプロセッサを使用してファイルをマージできます。

CSS Flexbox vsグリッド:包括的なレビューCSS Flexbox vsグリッド:包括的なレビューMay 12, 2025 am 12:01 AM

FlexBoxまたはグリッドの選択は、レイアウト要件によって異なります。1)FlexBoxは、ナビゲーションバーなどの1次元レイアウトに適しています。 2)グリッドは、雑誌のレイアウトなどの2次元レイアウトに適しています。この2つは、レイアウト効果を改善するためにプロジェクトで使用できます。

CSSファイルを含める方法:メソッドとベストプラクティスCSSファイルを含める方法:メソッドとベストプラクティスMay 11, 2025 am 12:02 AM

CSSファイルを含める最良の方法は、タグを使用してHTMLパーツに外部CSSファイルを導入することです。 1.タグを使用して、外部CSSファイルを導入します。 2。小さな調整のために、インラインCSSを使用できますが、注意して使用する必要があります。 3.大規模プロジェクトでは、@Importを介して他のCSSファイルをインポートするために、SASS以下などのCSSプリプロセッサを使用できます。 4。パフォーマンスのために、CSSファイルをマージし、CDNを使用し、CSSNANOなどのツールを使用して圧縮する必要があります。

FlexBox対グリッド:両方を学ぶべきですか?FlexBox対グリッド:両方を学ぶべきですか?May 10, 2025 am 12:01 AM

はい、Youはrelearnbothlexboxandgrid.1)FlexBoxisidealforone-Dimensional、FlexiblleayoutslikenavigationMenus.2)Gridexcelsintwo-digsignssuchasmagazinelayouts.3)Bothenhanceslaysutibulivedibulisunivedivition、floctonsulururを

軌道力学(またはCSSキーフレームアニメーションの最適化方法)軌道力学(またはCSSキーフレームアニメーションの最適化方法)May 09, 2025 am 09:57 AM

独自のコードをリファクタリングするのはどのように見えますか?ジョン・レアは、彼が書いた古いCSSアニメーションを選び、それを最適化するという思考プロセスを歩きます。

CSSアニメーション:それらを作成するのは難しいですか?CSSアニメーション:それらを作成するのは難しいですか?May 09, 2025 am 12:03 AM

cssanimationsArenotintinlentyhardbutrepracticeanderstanding ofcsspropertiesandtimingfunctions.1)

See all articles

ホット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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

SublimeText3 中国語版

SublimeText3 中国語版

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

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