ダッシュボードのtemplateについて その2

4th February 2025 at 12:55am

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>

HomeへNode-REDの記事Topへ