Vue/Nuxtの現場でのあれこれ
UIT meetup Fukuoka vol.1 @masaakikunsan
自己紹介
masaakikunsan (石岡 将明)
株式会社ROXX (旧SCOUTER)
back check PdM / Frontend Engineer
自称フロント界隈1の加藤恵のオタク
VueFesで登壇します
すまん、俺東京の人だ...
宣伝
映画までにアニメを見よう
Agenda
1. 弊社Devチームについて
2. 弊社Devチームの現場のルール
3. さいごに
弊社Devチームについて
back check
オンライン完結のリファレンスチェックサービス
Nuxt + Laravel で実装
Frontend Engineerは4人
3ヶ月ぐらい開発をし1月にβ版をリリース
現在は、本リリースに向けて格闘中
弊社Devチームの現場のルール
Component について
Vue の StyleGuide に準拠している
ex) コンポーネントは複数単語でパスカルケースにする
https://jp.vuejs.org/v2/style-guide/
Atomic Designを採用
- Atoms
- 他のComponentに依存していない
- Storeに依存していない
- Molecules
- Atomsを1つ以上使っている
- Store依存していない
- ビジネスロジックを内包していない
- Organisms
- AtomsかMoleculesを1つ以上使っている or ビジネスロジックを内包している or Storeに依存している
個人的に Atomic Designは人類には早いと思っているのでやりたくない。
ただ、他に明確な指標もないので一旦なんちゃってでやっている
Component について
一度定義し、それ以上上書きしないもの (例えばバリデーションルールなど) は computed を使う。
LocalState と computed について
computed: {
tableHead: () => [
{
key: 'hoge',
label: 'huga'
}, {
key: 'hoge',
label: 'huga'
}
]
}
<template> 内で式をなるべく書かないようにして、computed, methods に処理を寄せるように。
理由としてはコンポーネントでテストをしやすくするためと、一目で処理を分かりやすくするため。
<template> の債務
いくつかのページで共通化して使える値は定数として定義して同じ値を参照するようにする。
定数は ~/constants 以下に置く。ファイル名はキャメルケース
定数のルール
const USER_STATUSES = {
CREATED: 'created',
SENT: 'sent',
}
export default USER_STATUSES
<template> で使う場合、 computed で定数を返すように定義する。このとき、 アロー関数を用いて返すようにする。
細かい話はじまぐさんの過去のスライドを見てくれ
https://slides.com/nakajmg/replace-axios-module#/
API通信について
API通信について
// src/utils/request.js
import axios from 'axios'
const apiRoot = '/api'
export default {
get(url, config = {}) {
return axios({
method: 'GET',
url: `${apiRoot}${url}`,
...config
})
.then(res => res.data)
.catch(err => err)
},
post(url, config = {}) {
return axios({
method: 'POST',
url: `${apiRoot}${url}`,
...config
})
.then(res => res.data)
.catch(err => err)
},
...
}
axiosを直接使わずにリクエストだけを行うモジュールを、$axiosと同じようなインターフェースで実装
API通信について
エンドポイントごとに関数化しファイルを分割する
// src/api/getUserData.js
import request from '~/utils/request'
function getUserData({ userId }) {
const path = `/users/${userId}`
return request.get(path)
}
export default getUserData
その他
今はやっていないけどStorybookを導入して便利デバッグツールとして使いたい
(カタログ目的じゃなく開発の効率化のために使う)
Component駆動開発的なイメージでテスト書いていきたい気持ちがある
さいごに
さいごに
back checkチームでの、ルール・やってることを紹介しました。
チームで共通認識を揃えて、ある程度ルールを作成することで、カオスな現場にはなりにくいかなとは思っています。
すぐ現場で使えるものも多いと思うのでいいながあればぜひ使ってみてください。
弊社でこうしているとかあればぜひリプをいただけると!
Vue/Nuxtの現場でのあれこれ
By masaakikunsan
Vue/Nuxtの現場でのあれこれ
- 1,530