7週間7種類のフロントエンドフレーム4:Vue.js Directive
Directive
Angularの定義と似ているように見えますが、 Vux https://github.com/airyland/vux Angular Bootstrap https://github.com/angular-ui/bootstrap
比較すると、Vueでは共通のコンポーネント(共通かどうかにかかわらず)をパッケージ化するのは
誤導を避けるため、後からAngular Directiveを比較しなくなった.
ライフサイクル
ライフサイクルは3つのステップに分かれています. bindがDOM要素に最初にバインドされたときに がトリガーされる. update bindが完了するとすぐにトリガーされ、以降パラメータが更新されるたびに がトリガーされる. unbind解除とDOM要素のバインド時に がトリガーされる
APIは泣くほど簡潔...このうち
次に、Todoリストに入力された内容を検証(フォーム検証)する役割を果たす簡単なDirectiveを実現します.Directiveの基本構造は次のとおりです.
次に、ユーザーが入力したときに検証する必要があります.ここでは、簡単な
基本論理は
今のところ、Directiveは似たような機能を実現するために存在するはずだが、もちろん細かい使い方はもう詳しく話さないことが多い.DirectiveはVueでは重要ではありませんが、普段コードを書くときはCorponentを書くことが多いです.
FilterとMixinsは簡単に見えますが、省略します.
Angularの定義と似ているように見えますが、
Directive
はDOM機能の拡張ですが、VueのDirective
はずっと弱いです.Vue Component
はもともとDOMに対する操作を含んでいるので、多くの場合、Component
ではなくDirective
と書かれていますが、Angularでは一般的にDirective
と書かれています.だから私はVueのDirective
がAngularに比べて弱いと言って、純粋な多さと言ってもいいです.彼はDOMに関する論理をカプセル化するためではなく、DOM機能の拡張です.興味があれば、この2つのUIライブラリを比較することで理解できます.比較すると、Vueでは共通のコンポーネント(共通かどうかにかかわらず)をパッケージ化するのは
Component
ですが、AngularではDirective
です.AngularのController
は実際には$scope
の役割ドメインしか作成できないからです.Vue Directive = Angular Directive + Controller
で簡単に考えられます.前述したように、Vueの多くのデザインはAngular 2と似ています.VueのDirective
は基本的にAngular 2のDirective
に等価ですが、AngularのDirective
と混同してはいけません.誤導を避けるため、後からAngular Directiveを比較しなくなった.
ライフサイクル
ライフサイクルは3つのステップに分かれています.
APIは泣くほど簡潔...このうち
update
が最も重要であり、すなわちDirectiveが1つの値の更新を受信すると対応するコードが実行される.update関数が受信するパラメータは、Attr
を介してユーザが入力した値である.次に、Todoリストに入力された内容を検証(フォーム検証)する役割を果たす簡単なDirectiveを実現します.Directiveの基本構造は次のとおりです.
Vue.directive("minlength", {
bind: function() {
},
update: function(value) {
},
unbind: function() {
}
});
次に、ユーザーが入力したときに検証する必要があります.ここでは、簡単な
minlength
検証を実現します.コードは以下の通りです.Vue.directive("minlength", {
bind: function() {
var self = this;
var el = this.el;
el.addEventListener("keydown", function(e) {
if(e.keyCode === 13) {
if(el.value.length < self.minlength) {
e.preventDefault();
}
}
});
var submit = el.parentNode.querySelector("button, [type='submit']");
submit.disabled = true;
el.addEventListener("keyup", function(e) {
submit.disabled = (el.value.length < self.minlength);
});
},
update: function(value) {
this.minlength = parseInt(value);
},
unbind: function() {
}
});
基本論理は
bind
段階でイベントをバインドし、update
時に渡されたminlength
値に基づいて判断する.今のところ、Directiveは似たような機能を実現するために存在するはずだが、もちろん細かい使い方はもう詳しく話さないことが多い.DirectiveはVueでは重要ではありませんが、普段コードを書くときはCorponentを書くことが多いです.
FilterとMixinsは簡単に見えますが、省略します.