どこにでもいるSEの備忘録

たぶん動くと思うからリリースしようぜ

【自由研究】Vue.js+Flask+Dockerで普通のWebアプリケーションを作る(その2:画面をちゃんとする)

f:id:nogawanogawa:20190302094848j:plain
 

前回はこんな感じのことをやってました。

nogawanogawa.hatenablog.com

今回は画面をちゃんとします←アホそう

フロントエンド

Vue.js

「一年に一つ新しいプログラミング言語を習得する」っていう、鬼畜縛りプレーに取り組む一貫で、Javascriptを含めたVue.jsの勉強をしていました。

nogawanogawa.hatenablog.com

普通のフロントエンドエンジニアには足元に及びませんが、絶賛勉強中です。

Vuetify.js

Vueを勉強するとか言ってはいるものの、結局フレームワーク使うくらいしかできないんですよね。 さすがに、ECサイトとか作るんだったら一から弄り倒す必要はありそうですが、デザインとか一からやってたらキリないですし。。。

Vue周りのcssフレームワークで気に入ってるのはVuetifyですね。 最近アップデートして、コンポーネントもたくさん増えてきたので、社内webアプリくらいの完成度で良ければこれで十分作れます。

vuetifyjs.com

nogawanogawa.hatenablog.com

下準備

Webアプリケーションってくらいだから、CRUD操作が定番でしょう。 ということでCRUD操作ができる画面を作ってみたいと思います。

過去の記事をご参考ください。 まずは、どうせ後で使うことになるであろう下記をインストール。

  • vue-router
  • vuex

$npm install vue-router vuex

それからフォントも。

$ npm install material-design-icons-iconfont -D
$ npm install @mdi/font -D
$ npm install @fortawesome/fontawesome-free -D

なんかmain.jsも書き換えろって書いてあるので、書き換え。

Pre-made layout

Vuetifyの既存のメニューバーとかを使用します。 サンプルコードをそのままはっつけるとこんな感じです。

f:id:nogawanogawa:20190810234344p:plain

中二っぽくていいですね←

Atomic Design

Atomic Designはフロントエンドのコンポーネント設計の考え方みたいなもんですね。

どこでコンポーネントの粒度を揃えるかという難しい感覚の話はありますが、今回はとりあえずAtomic Designの手法に則って適当に作ります。 ということで、Frontend/srcディレクトリないのcomponentsをこんな感じにぶった切ってます。

components/
├── atoms
├── molecules
├── organisms
├── pages
└── templates

各ディレクトリになるべく概念的粒度の揃ったコンポーネントを入れていきます。

個人的にポイントかなと思っていることは、当たり前ですけどなるべく使いまわしが効くようにコンポーネントを分解していくことかなと思っています。 そのために、各コンポーネントの定義や粒度を整理していくことがポイントになると思います。はい。。。

routerの設定

画面の外枠ができたところで、今度はページ遷移を作っていきます。 今回もSPAでつくっていこうと思うので、routerでページ遷移を作っていきます。

作ってみる

今回は画面しか作らないので、ハリボテみたいなものができると思ってください。 細かいところはバックエンド触るようになってから考えたいと思いますので、まずは画面遷移のイメージがサマになっていればOKです。

C: 入力

ハリボテを作っていきます。 まずは入力画面はこんな感じになりました。

f:id:nogawanogawa:20190811123513p:plain

R: 一覧表示、詳細表示

次に、記録されている内容の一覧表示と詳細表示画面はこんな感じになりました。 一覧表示の画面は、エントリポイントになるページにしています。

f:id:nogawanogawa:20190811123611p:plain

U: 更新

更新画面は入力画面とほとんど同じですね。細かい内容は、バックエンドいじり始めてから帳尻合わせます。はい。。。

f:id:nogawanogawa:20190811123839p:plain

D: 削除

最後に削除の画面です。これは、一応削除の前に確認くらいしてあげるのがマナーですかね。

f:id:nogawanogawa:20190811123735p:plain

作ったもの

こちら。

github.com

前回の手順に沿ってビルドしてFlaskからでも動かせます。

感想

しゅごい。(小並感)