最低限の知識と環境構築① ～Nuxt3編～

##  Nuxtとは？
VueのFWである。
Reactから見た、Nextのようなもの。（名前も似てる）
バージョン2,3で書き方が全然違うので、キャッチアップする際は注意する。
TypeScript使える。

知識に関してはこれくらいでいいと考えています。
経験してきて分かりましたが、とりあえず手を動かしてエラーと格闘しないと何もできるようにならないです。

## Nuxt3のプロジェクトをWebページで表示する
好きな場所で以下コマンド実行して、プロジェクトの作成をする。

```
npx nuxi@latest init <project-name> // 公式そのまま
```
コマンドを実行すると、次のように表示されるので好きなものを選んでください。
ここではnpmを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/be663d08-50d8-793e-beba-48139dc56506.png)

次にこのように表示される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/99d051ad-41fb-78e3-730a-fdc2e0dae5eb.png)
Git リポジトリを初期化するかどうかの確認を聞かれるので、これも好きな方を選択してください。
ここではYesにします。

この表示がでれば完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/2d1e8489-4a40-1ad4-86c8-d4b3d832aabd.png)

表示されたとおりコマンドを実行すると、次のように表示されるので`http://localhost:3000/`にカーソルをあてて、Ctrl + クリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/4bf09276-53c7-fc6c-a251-5def4020dc7c.png)

この画面が表示されれば、プロジェクトの作成は完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/d668ff1d-44d0-b3c5-6083-a648e99e598e.png)

## srcディレクトリを使う
作られたプロジェクトをみるとsrcディレクトリがないので、srcを作っていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/095b938a-9e40-6445-c670-1e9394caeeef.png)

正直必須ではないのですが、現場のプロジェクトでは使われていて、Next.jsと構造を合わせるために設定します。

##### srcディレクトリを作る
方法はなんでもよいので、srcディレクトリを作ります。
（なんでもよいと書いたのは、環境や知識によって作り方は違うので出来る方法で作ってください。ここで悩むと時間がもったいないです。）
作成後は以下のようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/88946508-91c3-1c88-cba3-ca5e21a0ab13.png)

##### nuxt.config.tsを開き、以下の設定を追加する
初期設定の段階では次のようになっているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/e1a0cd2c-73eb-d6c5-f80e-b0a5ba70a879.png)

次のように修正してください。
```
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
  compatibilityDate: '2024-04-03',
  devtools: { enabled: true },
  srcDir: 'src/', // 追加部分
})
```

##### src配下にディレクトリとファイルの作成
次の手順で必要になるディレクトリとファイルを作ってください。
①src配下に`pagesディレクトリ`を作成
②pages配下に`index.vueファイル`を作成
作成後イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/b62cb2cf-1168-df77-3050-63fce2826960.png)
~~pagesディレクトリは必須だと思うのに、なんでプロジェクト作成時に自動で作られないのが謎~~

##### index.vueに表示確認用の定義を書く。
表示確認用の為、簡単でよい。
私は以下の形で作りました。
```
<template>
  <div>
    <h1>Welcome to Nuxt 3!</h1>
    <p>This is a simple index page.</p>
  </div>
</template>
  
<script setup>
</script>
  
<style scoped>
</style>
```
こういった画面が表示されていれば、成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/68b6a8cf-e43f-fe49-38c7-3a01ac2d9c80.png)

##### app.vueファイルの移動
移動をしなくても、機能はするのですがプロジェクトが大きくなる場合、ソースコード（pages/ や components/）と設定ファイル（nuxt.config.ts など）を明確に分離するために変更しておきます。

移動後イメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/513233/007aad81-7f21-4fc0-60ac-d18f37b281c8.png)

ただ、この移動をするといままで表示されていたindex.vueの内容が表示されず最初に表示されていた画面に戻ってしまいます。（戻らない場合はリロードしてください）

index.vueを表示するために移動した`app.vueファイル`の内容を次のように変更します。
```
<template>
  <div>
    <NuxtLayout>
      <NuxtPage />
    </NuxtLayout>
  </div>
</template>
```

ファイル内容を変更後、表示画面がindex.vueの内容に変更されていれば設定が正常に完了しています。

長くなってしまったので、②に続きます。
②ではESLintとtailwindCSSの設定をしていきます。