Dashboard 2.0 の「template」ノードを詳しく勉強する時には、「Node-RED Dashboard 2.0」「Vue.js」や「Vuetify」のサイトを読むことをお勧めします。
ここでは、 Vue.js をもう少し詳しく調べてみます。
Vue.js について
Vue.js は、ユーザーインターフェースを構築するためのJavaScriptフレームワークです。Evan You によって開発されました。コンポーネントベースのアーキテクチャやリアクティブなデータバインディングが特徴です。シンプルで柔軟性が高く、シングルページアプリケーション(SPA)の開発に適していると言われています。
コンポーネントベースのアーキテクチャ
特徴で述べているコンポーネントベースのアーキテクチャというのは、 .vue ファイルのことです。
Vue.js で使われる シングルファイルコンポーネント(SFC: Single File Component)のことで、1つの .vue ファイルに HTML/ CSS/ JavaScript をまとめて書けるのが特徴です。
これにより、各コンポーネントが独立して管理しやすくなり、再利用性が高まります。
具体的には、 .vue ファイルは以下のような構造を持っています:
<template>
HTMLテンプレート(UI部分)
</template>
<script>
export default {
Javascript(ロジック部分)
}
</script>
<style scoped>
CSS(スタイル部分)
</style>各セクションの役割
| セクション | 役割 |
|---|---|
<template> | HTMLを書く場所(Vueのテンプレート) |
<script> | コンポーネントのロジック(データや関数)を書く |
<style> | CSSを書く |
データバインディング
Vue.js のデータバインディングは、データ(<script>)とビュー(<template>)の同期を行う仕組みです。双方向バインディングと単方向バインディングの両方をサポートしています。
(1) Mustache記法 {{ }}
<script> ⇒ <template> の単方向バインディングです。
<template>
<p>{{ message }}</p>
</template>
<script>
export default {
data() {
return {
message: "こんにちは、Vue.js!"
};
}
};
</script>(2) v-bindディレクティブ(属性バインディング)
<script> ⇒ <template> の単方向バインディングです。HTMLの属性にデータをバインドできます。
<template>
<img v-bind:src="imageUrl" alt="画像">
</template>
<script>
export default {
data() {
return {
imageUrl: "https://upload.wikimedia.org/wikipedia/commons/thumb/c/cf/230128_Kamakura_Daibutsu_Japan04s3.jpg/640px-230128_Kamakura_Daibutsu_Japan04s3.jpg"
};
}
};
</script>v-bind:src="imageUrl は、 :src="imageUrl と省略することもできます。
(3) v-modelディレクティブ
フォーム入力要素(例:入力フィールド、チェックボックス、ラジオボタンなど)とデータを同期させるために使用されます。
<template>
<input v-model="name" placeholder="名前を入力">
<p>こんにちは、{{ name }} さん!</p>
</template>
<script>
export default {
data() {
return {
name: ""
};
}
};
</script>