【今日からはじめるNuxt.js】Nuxt.jsのはじめのいっぽ(プロジェクトの作成~簡単なページ遷移まで)

nuxt-js vue

今回は、Nuxt.jsの基礎的な部分(プロジェクトの作成~「HelloWorld」を画面に表示する)について
書いていきたいと思います。

目次

1.Nuxt.jsとは
2.プロジェクトの作成~確認
3.「Hello World」を画面に表示する。
4.簡単なページ遷移を実装する。
5.おわりに

1.Nuxt.jsとは

モダンなwebアプリケーションを作成するVue.jsに基づいたプログレッシブフレームワーク。

Vue.jsはUIを構築するためのフレームワークであり、Ajaxやサーバーサイドレンダリングなどの機能は提供していませんが、

Nuxt.jsはVue.jsのUI機能と、Vue.jsが提供しないUI以外の機能をまとめて利用できる環境を提供し、Vue.jsを用いてアプリ開発を行うことができます。

2.プロジェクトの作成

早速プロジェクトを作成します。

前提

  • Node.js(v8.9.0以上)
  • NPM(v5.2.0以上)

がインストールされていることを前提とします。

プロジェクトのインストール

以下コマンドで、プロジェクトファイルを作成します。

$ npx create-nuxt-app helloworld

npxコマンドは、v5.2.0以上のNPMをインストールしていれば利用できます。

コマンド実行後、プロジェクト名はどうするかなど、対話形式で設定を行っていきます。

パッケージマネージャーをNPMにした部分以外は、デフォルトでいいでしょう。

create-nuxt-app v2.11.1
✨  Generating Nuxt.js project in nuxt-first-exercise
? Project name nuxt-first-exercise
? Project description My superb Nuxt.js project
? Author name skakehi
? Choose the package manager Npm
? Choose UI framework None
? Choose custom server framework None (Recommended)
? Choose Nuxt.js modules (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Choose linting tools (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Choose test framework None
? Choose rendering mode Universal (SSR)
? Choose development tools (Press <space> to select, <a> to toggle all, <i> to invert selection)
npm WARN deprecated flatten@1.0.2: I wrote this module a very long time ago; you should use something else.

プロジェクトの構造を見てみる

インストール後のプロジェクト構造を見てみます。

各ディレクトリやファイルの役割ですが

  • assets・・・スタイルシシートや画像などを配置
  • components・・・vuejsのコンポーネントファイルを配置
  • layouts・・・ページの外観を変えるレイアウトファイルを配置
  • middleware・・・レンダリングされる前に実行されるカスタム関数を配置する(ex.認証)
  • pages・・・各ページごとで使うコンポーネントファイルを配置する
  • plugin・・・jsライブラリを配置
  • static・・・静的ファイルを配置する。
  • store・・・状態を管理するvuexストアのファイルを格納
  • nuxt.config.js・・・nuxt.jsのカスタム設定を行うファイル
  • package-lock.json・・・依存するパッケージのバージョンを固定する。
  • package.json・・・アプリケーションが依存するパッケージを記述。mavenのpom.xmlに相当

となっています。

プロジェクトの起動

プロジェクトを開発モードで起動します。

作成したプロジェクトのディレクトリに移動し、以下コマンドを実行します

$ npm run dev
> helloworld@1.0.0 dev C:\Users\kkp\Documents\nuxt-projects\helloworld
> nuxt

   ╭─────────────────────────────────────────────╮
   │                                             │
   │   Nuxt.js v2.10.1                           │
   │   Running in development mode (universal)   │
   │                                             │
   │   Listening on: http://localhost:3000/      │
   │                                             │
   ╰─────────────────────────────────────────────╯

i Preparing project for development                                                                                                                                                                     11:11:24
i Initial build may take a while                                                                                                                                                                        11:11:24
√ Builder initialized                                                                                                                                                                                   11:11:24
√ Nuxt files generated                                                                                                                                                                                  11:11:24

√ Client
  Compiled successfully in 6.19s

√ Server
  Compiled successfully in 5.34s

i Waiting for file changes                                                                                                                                                                              11:11:33
i Memory usage: 151 MB (RSS: 227 MB)                                                                                                                                                                    11:11:33

開発モードで起動すると、ホットリロード(ソースコードを変更すると自動反映される)で起動します。

デフォルトページへアクセス

プロジェクト作成時にデフォルトでindex.vueも作成されているので、確認してみます。

http://localhost:3000 にアクセスします。

デフォルトで作成されていたページが表示されました。

3.「Hello World」を画面に表示する。

index.vueをいじって”Hello World”という文字列を表示してみましょう。

作成したプロジェクト>pages>index.vue

<template>
  <div class="container">
    <h1>{{message}}</h1>
  </div>
</template>

<script>
export default {
  data: function() {
    return {
      message: "Hello World!"
    };
  }
};
</script>

Mustache構文(”{{}}“のところ)を用いています。Mustache構文についてはこちらの記事で。

文字列が表示できました。

4.簡単なページ遷移を実装する。

次に、トップページから別ページに遷移するSPAの最小構成を実装してみましょう。

前提知識としてNuxt.jsは、ファイルをpagesディレクトリに配置すればルーティングを勝手に行ってくれます。

例えば、pagesディレクトリにmypage.vueというファイルを配置した場合

http://localhost:3000/mypage でアクセスできるといった感じです。

それでは、以下2ファイルを作成してみましょう。

作成したプロジェクト>pages>index.vue

<template>
  <div class="container">
    <h1>Top Page</h1>
    <br><hr>
    <router-link to="/mypage">マイページ</router-link>
  </div>
</template>

作成したプロジェクト>pages>mypage.vue

<template>
  <div class="container">
    <h1>マイページ</h1>
    <br />
    <hr />
    <router-link to="/">Top Page</router-link>
  </div>
</template>

動作を確認してみましょう。

トップページとマイページを遷移する仕組みが作成できました。

ページの遷移には「Vue Router」というパッケージが使われています。

5.おわりに

いかがだったでしょうか。
今回紹介した内容はNuxt.jsのほんの触りに過ぎないと思っています。
今後もNuxt.jsについて学習し、記事にしていきたいと思っているのでよろしくお願いいたします~