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登録