====== 181201 Nuxt.jsとBulmaでハンバーガーメニューを写経してみる ======
レスポンシブなサイトを作ってみたかった。
テンプレートをいろいろ探したが、しっくりくるものを見つけられずに困っていた。
「ハンバーガーメニューはユーザーフレンドリーではない」という意見は置いておいて、とりあえず、やってみる。
以下のサイトを写経してみたい。
https://qiita.com/isamusuzuki/items/5ec800e423a3a56ef03d
{{:z_blog:2018:pasted:20181201-194620.png}}
===== 開発環境 =====
Windows 8.1 Pro
nvm-windows 1.1.7
node v10.14.1
npm 6.4.1
==== Node.jsをv10.14.1に変更 ====
Node.jsのサイトから、最新のWindows用のインストーラーでNode.jsをインストールしてもよいのだが、私の場合は、npmのバージョン管理はnvm-windows[[https://github.com/coreybutler/nvm-windows/releases|nvm-windows]]をインストールして、行っている。詳細は以下へ。
http://twosquirrel.mints.ne.jp/?p=28131
-nvm-windows下で、Node.jsの更新
nvm list available
nvm list
nvm uninstall 8.12.0
nvm install 10.14.1
nvm list
nvm use 10.14.1
{{:z_blog:2018:pasted:20181202-095716.png}}
{{:z_blog:2018:pasted:20181202-095820.png}}
===== @vue/cli(Version 3)のインストール =====
//yarnのインストール
npm install -g yarn
//@vue/cli (Vue clientのVersion3)のインストール
//yarn global add @vue/cli
//しようとしたが、以下のコマンド後にvue -vしても、
//'vue' は、内部コマンドまたは外部コマンド、
//操作可能なプログラムまたはバッチ ファイルとして認識されていません。
//と言われてしまったので、
npm install -g @vue/cli
{{:z_blog:2018:pasted:20181202-101024.png}}
いろいろ警告が出るが、5分くらいかかって、@vue/cliがインストールされた。
参考:https://qiita.com/Junpei_Takagi/items/603d44f7885bd6519de2
{{:z_blog:2018:pasted:20181202-100249.png}}
このように、yarnで@vue/cliをインストールしたつもりであったが、その後にvue -Vしても、
'vue' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とエラーが出てしまった。最初からnpm でインストールすればよかった。。。
//@vue/cli (Vue clientのVersion3)のインストール
npm install -g @vue/cli
npm -V
{{:z_blog:2018:pasted:20181202-102252.png}}
構築した環境
@vue/cli 3.2.1
Nuxt.jsを利用するだけなら、@vue/cliのインストールは不要あもしれない、、、
===== 新規Nuxt.jsプロジェクトの作成 =====
C:/vue/フォルダをVisualStudioCodeで開き、Ctrl+@でコマンドプロンプトを開き、以下を入力。
npx create-nuxt-app Nuxt-Bulma-Hamburger
//いろいろ聞かれるが、UI flameworkで、bulmaを選択
//rendering modeはSingle Page Appを選択
{{:z_blog:2018:pasted:20181202-103316.png}}
{{:z_blog:2018:pasted:20181202-103437.png}}
{{:z_blog:2018:pasted:20181202-104956.png}}
なんかここで止まってしまったが、とりあえずVisualStudioCodeを閉じた。
C:\vue\Nuxt-Bulma-Hamburger フォルダをVisualStudioCodeで開き、Ctrl+@でコマンドプロンプトを開き、以下を入力。
npm install
//これも数分かかる。
npm run dev
//数分かかる
//表示されるアドレスを、Ctrlを押しながらクリックすると、ブラウザが立ち上がる
{{:z_blog:2018:pasted:20181202-105849.png}}
{{:z_blog:2018:pasted:20181202-110024.png}}
やはり、フルスタックフレームワークであるNuxt.jsは、AngularやIonicと同じくらい、HelloWorldには時間がかかる。
Vue.js(@vue/cli)はその辺、HelloWorldが非常に短時間でできるし、ファイル数が非常に少ないところはよい。
ファイル構造は、以下のようになっている。
今回は、pages, components, layouts, storeの4つのフォルダを触るとのこと。
{{:z_blog:2018:pasted:20181202-111551.png}}
===== AboutページとContactページの作成 =====
pages/about.vue (新規作成)
{{:z_blog:2018:pasted:20181202-113532.png}}
pages/about.vueファイルを上記のように作成するだけで、Nuxt.jsの方で自動的にルーティングが設定されており、右側のブラウザで、http://localhost:3000/about というアドレスを入力すると、ちゃんとAboutページが表示される。
同様に、Contactページも作成する。
pages/contact.vue (新規作成)
{{:z_blog:2018:pasted:20181202-113930.png}}
参考:https://qiita.com/ochiochi/items/de1afd2d3fc8f6d3ea55
{{:z_blog:2018:pasted:20181202-114428.png}}
===== ナビゲーションバーのComponentを作成 =====
Bulmaフレームワークを利用して、レスポンシブなナビゲーションバーを作成する。
コンポーネントは、名前の通り、components/xxx.vueというような名前で、components/フォルダに作成する。
components/Navbar.vue (新規作成)
{{:z_blog:2018:pasted:20181202-132251.png}}
Navbarコンポーネントを、レイアウトファイルに取り付ける。
具体的には、 layouts/default.vue を以下のように変更する。
(変更前)
{{:z_blog:2018:pasted:20181202-132441.png}}
(変更後)
{{:z_blog:2018:pasted:20181202-132800.png}}
あまりカッコヨクナイ、、、
ブラウザの横幅を広げるとこんな感じになる。
{{:z_blog:2018:pasted:20181202-132847.png}}
ブラウザの横幅(px, pixel)に応じて、ハンバーガーメニューが表示されたり、されなかったりしるBulmaの仕様を利用しています。
参考:[[https://bulma.io/documentation/components/navbar/
|Bulma公式サイトのNavbarの説明]]
{{:z_blog:2018:pasted:20181202-133412.png}}
https://bulma.io/documentation/components/navbar/#basic-navbar
{{:z_blog:2018:pasted:20181202-133505.png}}
Bulmaのtouch deviceとは、横幅が1023px以下とのことだそうです。
もうちょっと横幅が小さくなってからハンバーガーメニュー出してほしいのだけれど、、、
https://bulma.io/documentation/overview/responsiveness/
{{:z_blog:2018:pasted:20181202-134416.png}}
===== ハンバーガーメニューをトグル(クリックするとメニューを表示)するようにする =====
横幅を狭くしたときに、タイトルと、ハンバーガーメニューが一行におさまりきらない原因は不明であった。。。
とりあえず次に進む。
components/Navbar.vue