====== 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