検索
ホームページウェブフロントエンドCSSチュートリアルNUXTアプリケーションで動的ルートを作成します

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.jsgenerateコマンドを使用して、動的ファイルについて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/imghwm/default1.png" data-src="https://img.php.cn/?x-oss-process=image/resize,p_40" 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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
カーソルの次のレベルCSSスタイリングカーソルの次のレベルCSSスタイリングApr 23, 2025 am 11:04 AM

CSSを備えたカスタムカーソルは素晴らしいですが、JavaScriptを使用して次のレベルに物事を引き出すことができます。 JavaScriptを使用して、カーソル状態間で移行し、カーソル内に動的テキストを配置し、複雑なアニメーションを適用し、フィルターを適用できます。

Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Worlds Collide:スタイルクエリを使用したキーフレーム衝突検出Apr 23, 2025 am 10:42 AM

2025年には、互いに互いに跳ね返る要素を伴うインタラクティブなCSSアニメーションは、CSSにPongを実装する必要はありませんが、CSSの柔軟性とパワーの増加はLee&#039;の疑いを補強します。

UI効果にCSSバックドロップフィルターを使用しますUI効果にCSSバックドロップフィルターを使用しますApr 23, 2025 am 10:20 AM

CSSバックドロップフィルタープロパティを使用してユーザーインターフェイスをスタイルするためのヒントとコツ。バックドロップフィルターを複数の要素間でレイヤー化する方法を学び、それらを他のCSSグラフィカル効果と統合して、精巧なデザインを作成します。

微笑んでいますか?微笑んでいますか?Apr 23, 2025 am 09:57 AM

まあ、SVG&#039;の組み込みのアニメーション機能は、計画どおりに非推奨されることはありませんでした。確かに、CSSとJavaScriptは負荷を運ぶことができる以上のものですが、以前のようにSmilが水中で死んでいないことを知っておくのは良いことです

「かわいい」は見る人の目にあります「かわいい」は見る人の目にありますApr 23, 2025 am 09:40 AM

イェーイ、テキストワラップのジャンプを見てみましょう:サファリテクノロジーのプレビューにかなり着陸してください!しかし、それがChromiumブラウザーでの仕組みとは異なることに注意してください。

CSS-Tricks XLIIIを記録しますCSS-Tricks XLIIIを記録しますApr 23, 2025 am 09:35 AM

このCSS-Tricksアップデートは、アルマナック、最近のポッドキャスト出演、新しいCSSカウンターガイド、および貴重なコンテンツを提供するいくつかの新しい著者の追加の大幅な進歩を強調しています。

Tailwind&#039;の@Apply機能は、響きよりも優れていますTailwind&#039;の@Apply機能は、響きよりも優れていますApr 23, 2025 am 09:23 AM

ほとんどの場合、人々はTailwind&#039;の@Apply機能を紹介します。このように展示されたとき、@Applyはまったく有望な音をしません。だからobvio

私はリリースがないように感じます:正気な展開への旅私はリリースがないように感じます:正気な展開への旅Apr 23, 2025 am 09:19 AM

馬鹿のように展開することは、展開に使用するツールと複雑さの報酬と複雑さの減少との間の不一致になります。

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

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン