9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Nuxt3の開発環境を作り冒頭の部分を取り上げる

Last updated at Posted at 2023-08-18

はじめに

こんにちは!
最近実務でVue.jsを使う機会が増えてきたので実際に自分で環境を作りたいなと思ったので作っていきます。
今回はNuxt3を使っていきます。
情報量が膨大なためいくつかに分けて解説できればと思います。

公式ドキュメントを参考に記載をしています。

Nuxtとは...

Nuxtは、Vue.jsを使用して、直感的で拡張可能なフルスタックのWebアプリケーションやWebサイトを作成するためのフリーでオープンソースのフレームワークです。
Vue.jsと違い UI だけではなく SSR(サーバサイドレンダリング)を含めたレンダリング機能や Meta タグ、ルーティング、エラーハンドリングなど本格的なアプリケーションの構築に必須となるさまざまな機能を事前に組み込むことでアプリケーション開発を効率的に行うことができます。

環境構築

早速環境を作っていきます。

※node.jsのバージョンは16.10.0 以上を推奨しているため推奨バージョン以上でお願いします。

ターミナル
# nodeインストール
$ nodenv install 16.10.0

# nodeバージョン確認
$ node -v
16.10.0

# フォルダ作成
$ npx nuxi init <プロジェクト名>

$ cd <プロジェクト名>

# 必要な依存関係をインストール
$ yarn install

# 起動
$ yarn dev

これでlocalhost:3000にアクセスできますね。
スクリーンショット 2023-07-17 23.18.06.png

環境構築は以上になります。

ディレクトリ構成について

Nuxt3 ではプロジェクト作成時に.node_modules以外のディレクトリは存在しませんがそれぞれ異なる役割を持っているディレクトリを追加していくことでアプリケーションを構築していきます。
ディレクトリ名は Nuxt3 の中で事前に決められておりコンポーネントを利用する場合はcomponentsディレクトリを作成します。
componentsディレクトリの下にコンポーネントファイルを保存することで Auto Imports 機能により import 文を利用しなくても自動でコンポーネントの import が行われます。
そのためディレクトリ名や作成したディレクトリがどのような役割を持っているのかをディレクトリ毎に理解しておく必要があります。

この記事ではpages, layouts, componentsについて解説していきます。

pagesディレクトリ

ページ構成を作っていきます。

rootディレクトリにpagesというディレクトリを作成します。
作成したpagesの中にindex.vueファイルを作成します。

ディレクトリ構成は下記になります。

プロジェクト名
.
├── .nuxt
├── node_modules
├── public
├── server
├── pages ←新規作成
    └── index.vue ←新規作成
├── .gitignore
├── .npmrc
├── app.vue
├── nuxt.config.ts
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json

index.vueは仮で下記のように書きます。

index.vue
<template>
    <h1>Hello World</h1>
</template>

その後rootディレクトリのapp.vueを修正します。

pages/index.vueファイルを作成しただけでブラウザ上の表示が変わるわけではなりません。

pages/index.vueファイルの内容を表示させるためにはapp.vueファイルにNuxtPageコンポーネントを追加する必要があります。
NuxtPageタグを追加するとNextPageタグを追加した箇所にpages/index.vueファイルのコンテンツが表示されます。

app.vue
<template>
  <div>
    <NuxtWelcome />
  </div>
</template><template>
  <div>
    <NuxtPage />
  </div>
</template>

これでapp.vueからpagesindex.vueコンポーネントが入ってきます。
ページを追加したい場合にpagesディレクトリを利用します。Nuxtではファイルベースルーティングを採用しているのでpagesディレクトリの中にファイルを作成することで自動でルーティングが設定されます。

下記で新規ページを追加したいと思います。
パスは作成したファイル名になります。
例として下記のように作成した場合は...

プロジェクト名
.
├── pages
    └── sports.vue ←新規作成
・

pages/sports.vueというファイルを作成した場合はパスが/sportsになります。
中身はIndex.vueと同様にします。

sports.vue
<template>
  <div>
    Sports
  </div>
</template>

Layoutsディレクトリ

index.vueや、他作成したファイルのページ間を移動できるナビゲーションを追加したい場合にどちらのファイルにも同じ内容を追加することは非効率です。
そのためレイアウトファイルを作成することでページで共通する内容を1つのファイルに記述することができ、レイアウトファイルを共有するすべてのページに適用することができます。

レイアウトを利用したい場合には layouts ディレクトリを作成して default.vue ファイルを作成してください。

ディレクトリ構成は下記になります。

プロジェクト名
.
├── .nuxt
├── node_modules
├── public
├── server
├── pages
├── layouts ←新規作成
    └── default.vue ←新規作成
├── .gitignore
├── .npmrc
├── app.vue
├── nuxt.config.ts
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json

default.vue<slot />は必須です。

default.vue
<template>
  <div>
    <nav>ナビゲーションバー</nav>
    <slot />
  </div>
</template>

layoutsフォルダにdefault.vueファイルを作成してだけでは何も変化はありません。
app.vueファイルにNuxtLayoutタグを追加しNuxtPageタグをラップします。

app.vue
<template>
  <NuxtLayout>
    <NuxtPage />
  </NuxtLayout>
</template>

app.vueファイルにNuxtLayoutタグを追加することで自動でlayoutsディレクトリに存在するdefault.vueファイルの内容が適用されます。

componentsディレクトリ

再利用可能なコンポーネントファイルを保存するためにcomponentsディレクトリを作成します。
その場合プロジェクト直下にcomponentsディレクトリを作成して、その中に各コンポーネントを作成しましょう。

ディレクトリ構成は下記になります。

プロジェクト名
.
├── .nuxt
├── node_modules
├── public
├── server
├── pages
├── layouts
├── components ←新規作成
├── .gitignore
├── .npmrc
├── app.vue
├── nuxt.config.ts
├── package-lock.json
├── package.json
├── README.md
└── tsconfig.json

作成したcomponentsディレクトリにNavbar.vueファイルを作成します。Navbar.vueファイルはdefault.vueファイルでナビテーションバーを設定するために利用します。
(pages/sports.vueも作成して表示をします。)

Navbar.vue
<template>
  <nav>
    <a href="/">Home</a>
    <br>
    <a href="/sports">Sports</a>
  </nav>
</template>

作成したNavbarコンポーネントをlayoutsdefault.vueファイルに追加します。Vue.js では別ファイルに記述したコンポーネントを利用する場合には import を行う必要があります。Nuxt 3 では components ディレクトリに保存したコンポーネントファイルは自動で import されるため import 処理を行う必要がありません。

default.vue
<template>
  <div>
    <Navbar />
    <slot />
  </div>
</template>

これで上部にリンクが設定されます。

スクリーンショット 2023-07-17 18.32.22.png

最後に

駆け足で冒頭の部分を説明してしまいました。
今回のはNuxt3のごく一部になります。
今後記事にしていきますので続きとしてみていただけると嬉しいです。

またNuxt3を使ってみてとても楽しいです。
Nuxt3で何かプロジェクトを作れないかなと、日々考えています。

そして是非弊社で一緒に働きたい、という方を募集しております。
下記URLから応募できますので少しでも興味を持っていただけたら応募してください。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?