2019/03/20 v-kansai Vue.js/Nuxt.js meetup #4
Nuxt.js のディレクトリ
View Slide
ショウノシオリ@shosho_egg ・株式会社 chatbox テックリード ・PHPカンファレンス関西2017&2018 実行委員長 ・Laravel/Nuxt.js をよく使う ・「技術が好き」というより チームで何かを作り上げるのが好き
Nuxt.js って?▷ Vue.js 製のフレームワーク▷ App 開発に便利なツールが揃ってる○ Vuex Store、Vue Router、SSR など▷ npx コマンドで簡単に作れる
個人的な Nuxt.js の使い心地▷ ディレクトリ構成がわかりやすい○ どこに何を書けばいいのかがすぐわかる○ 複数人で開発していても破綻しにくい○ 途中から参画した人、あまり使い慣れていない人にとっても構成が分かりやすいので、作業分担が比較的やりやすい(最初に各ディレクトリの説明は必要)
各ディレクトリの役割について説明する機会が多かったのでまとめてみました
1.基本となるディレクトリApp を構築するのに最低限必要なもの
PagesComponentsLayoutsAssetsStaticnuxt.config.jspackage.json1-1.リソース1-2.画面をつくるもの1-3.設定ファイルApp をつくる3つの要素
1-1. リソース▷ Assets○ Stylus、Sass、image、fonts といったコンパイルしていないファイルを置く▷ Static○ 静的ページファイルなどを置く○ 直接サーバーのルートに配置される。(/static/robots.txt は http://localhost:3000/robots.txt )※画像については「部品っぽいものは Assets 、そのまま使うものは Static」のように分けて管理しても良いApp で使う画像やフォントなどの置き場所
1-2. 画面をつくるもの▷ Layouts○ App のレイアウトを決めるファイルを置く○ ページ毎にレイアウトを指定することもできる見た目を作るファイルの置き場所
1-2. 画面をつくるもの▷ Pages○ 各URLに対するファイルを置く○ ここに .vue ファイルを作れば、Nuxt が勝手にディレクトリ内の .vue ファイルを全て読み込みURL を自動生成してくれる見た目を作るファイルの置き場所
▷ Components○ コンポーネントファイルを置く○ 使うときは import で読み込む&コンポーネントとしての登録が必要1-2. 画面をつくるもの見た目を作るファイルの置き場所
▷ package.json○ Appの依存やスクリプトについて記述されたファイル。これをもとにして npm i で node_modules が出来上がる○ npm 経由で新たにモジュールを追加した際などに自動的に更新されていく※package.json が更新されている場合はnpm i し直すのを忘れないこと1-3. 設定ファイルNuxt.js App の設定を行う重要なファイル
▷ nuxt.config.js○ App 全般の設定を行うとても重要なファイル○ 各プロパティでカスタム可能○ 設定は基本的にこのファイルで行う1-3. 設定ファイルNuxt.js App の設定を行う重要なファイル
PagesComponentsLayoutsAssetsStaticnuxt.config.jspackage.jsonこの3つの要素を使えば基本的な App はつくれる!1-1.リソース1-2.画面をつくるもの1-3.設定ファイルのだけど...
▷ 規模が大きくなってきた▷ データの持ち回しが辛い▷ JSプラグインを使ってみたい...▷ 毎回ページを読み込む前にある処理を実行させたい ...作り出すと出てくる欲
2.+αで使うと便利なディレクトリより良い App 開発を行うために
データを一箇所で管理したい▷ Store○ データを一括で管理できる Vuex Store ファイルを置く(データの受け渡しをpropsで頑張らなくてよくなる)○ Nuxt.js の場合はここに index.js を置くだけで OK(Vue.js の場合は自分で入れる必要がある)○ store のファイルは index.js 以外にもつくることができる
JS プラグインを使いたい▷ Plugins○ App の root インスタンスができる前に実行したい JS プラグインを置く○ nuxt.config.js で登録するのを忘れずに○ コンポーネントの一括登録にも使える
毎回同じ処理を最初に実行したい▷ Middleware○ アプリケーションのミドルウェア。ページがレンダリングされる前に実行するカスタム関数を定義できる○ ファイル名がミドルウェア名となる○ 全てのルートに実行する場合は nuxt.config.js に登録、特定のページで使いたい場合は ページコンポーネントの middleware で登録
StorePluginsMiddleware4つの要素を組み合わせるとより良い App 開発が可能に!nuxt.config.jspackage.jsonPagesComponentsLayoutsAssetsStatic
ディレクトリの全体像がわかると...▷ 影響範囲を考慮した作業振り分けができる▷ 今まで困っていたことに対する解決手段が、実はFWに備わっていたことに気付けたりする▷ 好きなようにカスタマイズしやすくなり、よりFWを柔軟に活用していくことができる(一部だけ利用したり、バックエンドFWと組み合わせたり)(Nuxt.js に限らず、FW全般)
まとめ▷ Nuxt.js のディレクトリ構造はシンプルで分かり易く、便利なツールもたくさん揃っている▷ FW の全体像を知っていると、App 開発をより良い方向に進めていく近道となる
Thanks!Any questions?You can find me at:@username[email protected]