NUXTアプリケーションで動的ルートを作成します
この記事では、Netlifyに展開されたeコマースの例を介して、NUXTアプリケーションで動的ルーティングを作成する方法を示します。これは一般的なシナリオです。APIからデータを取得しますが、これは不明であり、いつでも多数または変更があります。幸いなことに、Nuxtは動的ルーティングを作成するプロセスを非常にスムーズにします。
始めましょう!
デモサイトGitHubリポジトリ
ページを作成します
この例では、Mockarooを使用していくつかの仮想ストアデータを作成し、静的フォルダーに保存しました。通常、VuexストアでFetchまたはAxiosとアクションを使用してこのデータを収集します。いずれにせよ、データをstore/index.js
にVuexを使用して保存します。これには、UIステータスと空のカート配列が含まれています。
「〜/static/storedata.json」からデータをインポートする const state =()=>({{ cartuistatus:「アイドル」、 保存された:データ、 カート:[] })
NUXTでは、ルートを設定するためにpages
ディレクトリに.vue
ファイルを作成するだけであることに注意する必要があります。したがって、 index.vue
ページがホームページとして、ショッピングカートなどのcart.vue
ページがあります。NUXTは、これらのページのすべてのルートを自動的に生成します。
動的ルートを作成するには、これらのページを保存するディレクトリを作成します。この場合、ルートが各製品の詳細ビューを指すため/products
と呼ばれるディレクトリを作成しました。
このディレクトリでは、アンダースコアを備えたページと、ルートの作成に使用したいユニークな識別子を作成します。カート内のデータを見ると、次のようになります。
[ { 「ID」:「9D436E98-1DC9-4F21-9587-76D4C0255E33」、 「色」:「ゴールデンロッド」、 「説明」:「Mauris Enim Leo、Rhoncus Sed、Vestibulum Sit Amet、Cursus ID、Turpis。IntegerAliquet、Massa Id Lobortis convallis、Tortor Riskus dapibus augue、Vel Accumsan Tellus nisi eu orci。 「性別」:「男性」、 「名前」:「デジアダ」、 「レビュー」:「Productize Virtual Markets」、 「星空」:3 「価格」:50.40、 「IMG」:「1.jpg」 }、 … ]
各エントリのIDが一意であることがわかりますので、これは良い候補の識別子であり、ページに名前を付けます。
_id.vue
これで、ルーティングパラメーターを使用して、特定のページのIDをデータに保存できます。
データ() { 戻る { ID:this。$ route.params.id、 } }、
上記のエントリについては、devtoolsのデータを見ると、次のようになります。
ID: "9D436E98-1DC9-4F21-9587-76D4C0255E33"
これを使用して、ストレージからこのエントリに関する他のすべての情報を取得できます。 mapState
を使用します:
"vuex"から{mapstate}をインポートします。 計算:{ ... MapState(["Storedata"])、 製品() { this.storedata.find(el => el.id === this.id)を返します。 } }、
格納されているのは、一意のIDでエントリを見つけるためにstoredata
ています!
NUXT構成に通知します
YARNビルドを使用してアプリケーションを構築すると、完了ですが、NUXTを使用して、展開用の静的サイト、この場合はNetlifyで作成します。 Nuxtを使用して静的サイトを作成するとき、 yarn generate
コマンドを使用します。 nuxt.config.js
のgenerate
コマンドを使用して、動的ファイルについてnuxtに知らせる必要があります。
このコマンドは、次のような配列に解析された約束を返す関数を期待します。
デフォルトのエクスポート{ 生成する: { ルート:[ '/product/1'、 '/product/2'、 '/product/3' ] } }
これを行うには、ファイルの上部に静的ディレクトリからデータを導入し、関数を作成します。
'./static/storedata.json'からデータをインポートする let dynamicRoutes =()=> { 新しい約束を返す(Resolve => { Resolve(data.map(el => `product/$ {el.id}`)) }) }
次に、構成の関数を呼び出します。
生成する: { ルート:DynamicRoutes }、
Axiosを使用してAPIからデータを収集する場合(より一般的です)、次のようになります。
「axios」からaxiosをインポートする let dynamicRoutes =()=> { return axios.get( 'https:// your-api-here/products').then(res => { RETURN RES.DATA.MAP(PRODUCT => `/PRODUCT/$ {PRODUCT.ID}`) }) }
このようにして、ダイナミックルーティングセットアップを完了しました!サーバーをシャットダウンして再起動すると、各製品の動的ルーティングが有効になります!
この記事の最後の部分では、ページの残りの部分がどのように作成され、プロジェクトをカートに追加する方法を説明し続けます。これはあなたも学びたいものかもしれません。
ページに記入します
これで、 product
を計算したプロパティを介してすべての情報にアクセスできるため、必要なフォーマットをページに入力できます。
<main><img src="/static/imghw/default1.png" data-src="https://img.php.cn/" class="lazy" alt="NUXTアプリケーションで動的ルートを作成します"><h1 id="product-name"> {{product.name}}</h1> <h4 id="product-price-ドル">{{product.price |ドル}}</h4> <p>{{ 製品説明 }}</p> ... </main>
この場合、保管中のカートにアイテムを追加する必要があります。アイテムを追加および削除する機能を追加します(ゼロ以下の数の削減を許可しません)
<p> <button> 0 ? quantity-- : quantity = 0"> - </button> {{ 量 }} <button> </button> </p> ... <button>カートに追加</button>
このコンポーネントの方法では、アイテムと新しいフィールド(数量)を配列に追加します。これは、ストアの変異にペイロードとして渡されます。
方法:{ cartadd(){ let item = this.product; item.quantity = this.quantity; this.tempcart.push(item); this。$ store.commit( "addtocart"、item); } }
Vuexストレージでは、プロジェクトが既に存在するかどうかを確認します。それが存在する場合、数のみを増やします。存在しない場合は、数量を含むアイテム全体をカートアレイに追加します。
addtocart :( state、payload)=> { itemfound = falseとします state.cart.foreach(el => { if(el.id === payload.id){ el.quantity = payload.quantity itemfound = true } }) if(!itemfound)state.cart.push(ペイロード) }
ストレージ内のゲッターを使用して合計を計算できるようになりました。これは最終的にStripe ServerLess関数に渡されます(これについての別の投稿が近日公開されます!)。 Reduceは多くの値から値を取得するのに非常に優れているため、これを使用します。 (私はここに詳細を書きました。
carttotal:state => { if(!state.cart.length)return 0 return state.cart.reduce((ac、next)=> ac next.quantity * next.price、0) }
デモサイトGitHubリポジトリ
それでおしまい!個々の製品ページをセットアップしており、Nuxtはビルド時にすべての個別のルートを生成します。あなたは間違いなく自分のためにnuxtを試してみたいと思うでしょう。 ?
以上がNUXTアプリケーションで動的ルートを作成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











それは&#039; Vueチームにそれを成し遂げてくれておめでとうございます。それは大規模な努力であり、長い時間がかかったことを知っています。すべての新しいドキュメントも同様です。

最近のビットコインの価格が20k $ $ USDを超えており、最近30Kを破ったので、イーサリアムを作成するために深く掘り下げる価値があると思いました

私はこの非常に正当な質問で誰かに書いてもらいました。 Leaは、ブラウザから有効なCSSプロパティ自体を取得する方法についてブログを書いています。それはこのようなものです。

先日、Corey Ginnivanのウェブサイトから、この特に素敵なビットを見つけました。そこでは、スクロール中にカードのコレクションが互いに積み重ねられていました。

これらのデスクトップアプリがいくつかあり、目標があなたのサイトをさまざまな次元ですべて同時に表示しています。たとえば、書くことができます

WordPressエディターでユーザーに直接ドキュメントを表示する必要がある場合、それを行うための最良の方法は何ですか?

フレックスレイアウトの紫色のスラッシュ領域に関する質問フレックスレイアウトを使用すると、開発者ツールなどの混乱する現象に遭遇する可能性があります(D ...
