Vue.js始めるおれおれアドベントカレンダー2016 – 18日目
作りましたというか、まだもうちょっといじろうと思ってるんだけど、動きはします。

Reactもそうなんだけど、オブジェクトを入れ子にしてく書き方、なかなか面倒じゃないですか。そういうのをなんかこう装飾子みたいにさらってできねえかなーそういやテンプレート文字列は改行も含められるんだなーあれでやれたらいいなーと考えて作ってみました。
propsの検証
Vueの機能として、型等を指定することができます。
こんな感じ。
const MyComponent = {
props: {
simpleString: { type: String },
requiredNumber: { type: Number, required: true },
defaultBoolean: { type: Boolean, default: true },
validatedObject: {
validator: function (value) {
return (value.flag1 && value.flag2)
}
}
}
}
vue-props-template
さっきの指定を、だいたいこう書けるようになります。
const pt = require('vue-props-template')
const MyComponent = {
props: pt`
string simpleString
required number requiredNumber
boolean defaultBoolean = true
`
}
どうでしょうか、こういうの。
あとは validatedObject をどうしようかなあというところです。現状こんなん。
const pt = require('vue-props-template')
const MyComponent = {
props: pt.extend(pt`
object validatedObject
`, {
validatedObject: {
validator: function (value) {
return (value.flag1 && value.flag2)
}
}
}
}
}
よくわからないこと
便利?
個人的にはあんな風に書けたら便利だと思ってるんだけど、他の人はどうなんだろ。まあ自分で使う用でも構わないんだけど。
既存でこういうのないか?
ちょっと探して見つからなかったけどありそうで怖い。
validator の扱い
埋め込み値 ${…} の中に関数を書くのってどうかなあ。別に良いかなあ。例えばこういうの。
props: pt`
validatedObject as ${function (value) {
return (value.flag1 && value.flag2)
}}
`
あーこういうのも悪くないかなあ。どうかなあ。
この場合、他の「型 名前」の順の書き方と違ってきちゃうけど、んーまあ良いか。
最近のライブラリの作り方
Vue本体を参考に、ブラウザで読み込んでもNode.js(vueify)経由でも動くようにはした。でも今はそれを直接元コードに書いてて、なんかこう「ビルド」をしてそういうのを出力するやり方の方が良いだろうか。
あとバージョン管理も実はあんまりよくわかってない。semverは良いんだけど、なんか手動でぽちぽちやるんじゃなくてnpm scriptに更新コマンドも用意して、なんて話を前聞いた気がする。
他にやること
これ全部終わったらv1.0.0ということにしようかなと思ってます。
validatorの扱い- バベる
- ドキュメントの見直し
- GitHub pagesの充実
- npm登録