Vue.jsの設計方針


概要

自分自身のナレッジのため、Vue.jsの設計方針をまとめました。

環境

Vue.js 2系
TypeScript
Vuex
Vue Router

ディレクトリ構成

Atomic Designからtemplateを省いて、崩しています。
他ディレクトリもできるだけシンプルな責任分担にしています。

いろいろな用途に汎用性を持たせるのと、
コーディングのルール付けくらいになるレベルまでの定義を意識しました。
(ガチガチに固めるとそれはそれで実装効率を下げると考えました)

src
|--assets
|--components
|  |--atoms
|  |--molecules
|  |--organisms
|  |--pages
|--constants
|--models
|--router
|--service
|--store
|  |--modules
|--utils
|--views

各ディレクトリの役割

ディレクトリごとに責務を分離し、

  • 何がどこにあるか
  • 改修時どこを編集すればいいのか
  • 機能追加時どこに何を追加すればいいのか

が分かりやすいよう定義することを意識しました。

ディレクトリ名 役割
assets 静的ファイル・汎用CSS
components/atoms これ以上分解できない最小単位の汎用コンポーネント
components/molecules 一つの汎用的な部品を構成するコンポーネント
components/organisms 一つの機能を構成するコンポーネント
components/pages viewsから呼び出され、organismsを用いてページを構成するコンポーネント
constants 定数定義
models データの型定義
router Vue Routerの定義
service APIの呼び出しやLocalStorageの使用
store/modules Vuexストアの定義
utils 汎用的なメソッド
views ページ遷移のために使用する、ページ単位のコンポーネント

リポジトリ

上記を定義した個人学習用リポジトリです。
改修の余地はissueに纏めています。
https://github.com/RinyuDrvo/language_app