プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Nuxt.js
  • 【Nuxt.js】基本、インストール(アクセスできない問題、Nuxt.js専用のコンポーネ…
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Nuxt.js】基本、インストール(アクセスできない問題、Nuxt.js専用のコンポーネントについて(nuxt-link等)、Buefy)、使用できるコマンドについて

07.15

  • miyabisan2
  • コメントを書く

この記事は4分で読めます

 Nuxt.jsとは?

JavaScriptフレームワークで有名な「Vue.js」のさらなるフレームワークとなります。

Nuxt.jsは、「ユニバーサルアプリケーション」を作成できる。

ユニバーサルアプリとは?

クライアントとサーバーどちらでも実行できるJavaScriptのアプリケーションのことです。(以前、「isomophic」と呼ばれていた概念になります。)

要は、同じJavaScriptのコードで、クライアントサイドSPAと、SSR(サーバーサイドレンダリング)を実現してしまうものになります。

Nuxt.jsを利用すれば、Vue.jsのビューと、Nuxt.jsを利用して簡単にユニバーサルアプリを作成することができます。

SPA(Single Page Application)とは?

下記の記事で解説しています。

【JavaScript】「SPA」について

SSR(サーバーサイドレンダリング)とは?

Nuxt.jsは、UIレンダリングを行うフロントエンドサーバーとして利用することができます。

フロントエンドのUIレンダリングは、Nuxt.jsで構築したフロントエンドサーバーに任せて、動的な情報はバックエンドサーバーから取得する設計とすることもできます。

バックエンドの情報を取得するには?

.vueファイルに「asyncDataメソッド」や「fetchメソッド」等を追加して、サーバーから情報を取得します。

それらのメソッドを使うことで、ビューをレンダリングする前にデータを取得し、完成したHTMLの状態でページに表示させることができます。

その他のNuxt.jsの用途

Nuxt.jsをミドルウェアとして利用して、express等のアプリケーションサーバーから使用することも可能です。

Nuxt.jsを「静的ファイルジェネレータ」としての活用する。

pagesディレクトリの中の、ページコンポーネントをそのままHTMLファイルとして出力する「静的ファイルジェネレータ」としての役割も行うこともできます。

出力されたHTMLには、Vue.jsや、Vuexが含まれているので、そのままWebアプリとして活用することもできます。

「firebase hosting」や「GitHub Pages」等の静的ファイルホスティングサービスを利用することにより、サーバーレスなアプリを構築することができます。

Nuxt.jsプロジェクトの作成手順

Ubuntu18.04で動作確認をしております。

Nuxt.jsをインストールする前に事前に、node.jsをインストールしておきます。

1
sudo apt-get install nodejs

yarnをインストールします。

1
npm i -g yarn

次に、vue-cliをインストールします。

vue-cliをグローバルのパッケージにインストールしています。

1
yarn global add vue-cli

vue-cliを使う理由

npmを使ってゼロから作成した場合は、全て自分でディレクトリのファイルを作成しなければならないため非常に手間がかかる作業になります。

vue-cliを使い、公式のNuxt.jsテンプレートを使うことで、必要なディレクトリ構成が初めから用意されたプロジェクトから始めることができます。

Nuxt.jsのプロジェクトを作成します。

1
vue init nuxt-community/starter-template (プロジェクト名)

initコマンドについて

vue-cliのテンプレートを作成することができるコマンドになります。

ただ、vue-cliのバージョンが3系では使えないレガシーなコマンドになります。

vue-cliのバージョンは下記のコマンドで確認することができます。

1
vue --version

起動コマンド

作成されたプロジェクトディレクトリのルートに移動して、下記の二つのコマンドのどちらかを実行しましょう。

yarnを使う方法

1
yarn dev

npmを使う方法

1
npm run dev

アクセスできない問題

下記の手順を参考にして、Ubuntuに、Nuxt.jsのチュートリアル的なアプリをインストールしました。

https://qiita.com/corosuke_k/items/a5ca4c8184f431e0ee26

しかし、Chromeで「http://(IPアドレス):3000」にアクセスしても、下記のメッセージが表示されてアクセスできませんでした。

このサイトにアクセスできません接続が拒否されました。

ERR_CONNECTION_REFUSED

Ubuntのファイアウォールの3000番ポートもあいていることは確認しています。

どうやら、正解は、Nuxt.jsのコアの設定ファイルにて「localhost」からアクセスしか許可しないように、URL制御がハードコーディングされているようでした。

設定ファイルは、下記にありました。

node_modules/nuxt/lib/core/nuxt.js

下記のように、locahostでハードコーディングされている箇所を、アクセスしたいIPアドレスに書き換えました。

そうすることで、下記のようにIP経由でもアクセスできるようになりました。

コマンド一覧

コマンド 説明
nuxt 開発サーバーを起動します。このコマンドで起動したサーバーはソースに変更があった場合は即座に反映される。(ホットリロード)
nuxt build アプリをWebpackとしてビルドします。このコマンドは「nuxt startコマンド」の前に実行する必要があります。
nuxt start プロダクションモードでサーバーを起動します。
nuxt generate Nuxt.jsの静的ジェネレータの機能を使う際に使用するコマンドです。このコマンドでの出力結果は、distディレクトリに配置されます。

--helpオプション

各コマンドの細かい使い方はこのオプションで確認することができます。

Nuxt.js専用のコンポーネントについて(nuxt-link等)

コンポーネント一覧

コンポーネント 説明
<nuxt-link> 現状は、「Vue Router」の「router-link」のラッパーなので、同じように遷移先を指定します。
<nuxt-child> ネストされたルート内で、子コンポーネントを表示するために使用します。
<nuxt /> レイアウト内で、ページコンポーネントを表示するために使用します。

nuxt-linkコンポーネント

本体の場所

.nuxt/components/nuxt-link.js

nuxtコンポーネント

「layouts/」のファイル内容が反映されます。

404エラーが出た場合は、「error.vue」の内容が出力されます。

Buefyの組み込み

node_moduleにbuefyを追加します。

1
yarn add buefy

pluginsフォルダに、buefy.jsというBuefyを読み込むための設定を記述します。

1
2
3
4
import Vue from 'vue'
import Buefy from 'buefy'
 
Vue.use(Buefy)

nuxt.config.jsに、インポートしたpluginを登録するために、下記の記述を追加します。

1
2
3
  plugins: [
    '~plugins/buefy'
  ]

「layouts/default.vue」に、下記のCSSの記述を追加します。

1
<style src="buefy/lib/buefy.css"></style>

後は、下記で起動すれば、HTMLにbuefyのCSSが適用された状態で起動することができます。

1
yarn dev

ためしに、Buefyのドロップダウンリストのサンプルを実行してみる。

Buefyの公式ページのDocumentationに多くのWebパーツのサンプルが転がっています。

https://buefy.github.io/#/documentation/dropdown

その中で、ドロップダウンのサンプルコードを試しに、ビューに貼り付けて実行してみます。

pages/index.vue

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<template>
    <section>
        <b-dropdown>
            <button class="button is-primary" slot="trigger">
                <span>Click me!</span>
                <b-icon icon="menu-down"></b-icon>
            </button>
 
            <b-dropdown-item>Action</b-dropdown-item>
            <b-dropdown-item>Another action</b-dropdown-item>
            <b-dropdown-item>Something else</b-dropdown-item>
        </b-dropdown>
 
        <b-dropdown hoverable>
            <button class="button is-info" slot="trigger">
                <span>Hover me!</span>
                <b-icon icon="menu-down"></b-icon>
            </button>
 
            <b-dropdown-item>Action</b-dropdown-item>
            <b-dropdown-item>Another action</b-dropdown-item>
            <b-dropdown-item>Something else</b-dropdown-item>
        </b-dropdown>
 
        <b-dropdown disabled>
            <button class="button" slot="trigger">
                <span>Disabled</span>
                <b-icon icon="menu-down"></b-icon>
            </button>
 
            <b-dropdown-item>Action</b-dropdown-item>
            <b-dropdown-item>Another action</b-dropdown-item>
            <b-dropdown-item>Something else</b-dropdown-item>
        </b-dropdown>
 
        <b-dropdown>
            <p class="tag is-success" slot="trigger">
                Custom trigger
            </p>
 
            <b-dropdown-item>Action</b-dropdown-item>
            <b-dropdown-item>Another action</b-dropdown-item>
            <b-dropdown-item>Something else</b-dropdown-item>
        </b-dropdown>
    </section>
</template>
 
<style scoped>
    .tag {
        cursor: pointer;
    }
</style>

実行結果

下記のように、公式サンプルどおりのドロップダウンリストを表示させることができました。

スポンサーリンク
  • 2018 07.15
  • miyabisan2
  • コメントを書く
  • Nuxt.js
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 07.14

    【Nuxt.js】作成したページの「ルーティング」をさせてみる。

  2. 2018 07.15

    【Nuxt.js】「ページコンポーネント」の属性「asyncData」について

  3. 2018 07.14

    【Nuxt.js】「レイアウトファイル」の使い方

  4. 2018 07.14

    【Nuxt.js】ディレクトリ構成(nuxt.config.js、middreware、plugin、page、ルーティングなど)

  5. 2020 04.11

    【Vue.js】「Vuex」の概要、Nuxt.jsでの活用

  6. 2018 07.14

    【Nuxt.js】「ページコンポーネント」(asyncData、fetch、コンテキスト、layout)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Nuxt.js】「ページコンポーネント」(async…

【Nuxt.js】「ページコンポーネント」の属性「as…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー