Node-RED と Vue 3 が連携したプロジェクトに初期表示のコンポーネントと Milligram を導入するメモです。
やりたいこと
Node-RED と Vue 3 が連携したプロジェクトに初期表示のコンポーネントと Bootstrap を導入するメモ
こちらでは Bootstrap を導入しました。
ですが、私の場合、もっと最小限のスタイル設定で作っていきたいときに Milligram という CSS フレームワークを使うことがあるので、それも導入してみます。
Vue のプロジェクトに移動
をベースに進めます。
cd vue-node-red-view
Vue のプロジェクトを設定するため vue-node-red-view フォルダに移動します。vue-node-red-view は、さきほどの記事でつくった私のプロジェクト名なので、読み替えてください。
Milligram 本体を入れる
npm i milligram
Bootstrap の導入と同じように Milligram をインストールします。 2021/09/09 時点で milligram@1.4.1 でした。
main.js を編集
vue-node-red-view/main.js を編集します。
import { createApp } from 'vue' import App from './App.vue' import 'milligram' createApp(App).mount('#app')
最初に生成された main.js に import 'milligram'
だけ加えます。
NodeRED コンポーネント作成
vue-node-red-view/components/NodeRED.vue を新規作成して、以下のように記述します。
<template> <div class="row"> <div class="column"> <div class="row"> <div class="column"> <h1>{{infoTitle}}</h1> </div> </div> <div class="row"> <div class="column"> <ul> <li>An item</li> <li>A second item</li> <li>A third item</li> <li>A fourth item</li> <li>And a fifth one</li> </ul> </div> </div> </div> </div> </template> <script> export default { name: 'NodeRED', props: { msg: String }, data () { return { infoTitle: "Node-RED INDEX" } }, methods: { } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> </style>
Milligram はドキュメントもシンプルで、シンプルなHTMLをいくつか持ってきています。
App.js 修正
vue-node-red-view/App.js を NodeRED コンポーネントを呼び出すように編集します。
<template> <div class="container"> <NodeRED/> </div> </template> <script> import NodeRED from './components/NodeRED.vue' export default { name: 'App', components: { NodeRED } } </script> <style> /* #app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } */ </style>
今回も Bootstrap と同じく #app
に当たっていた初期生成の CSS 定義は Milligram と競合しないように、一旦コメントアウトで外しています。
検証してみる
npm run serve
で確認します。
<h1>{{infoTitle}}</h1>
でデータバインディングしていた infoTitle という値が Node-RED INDEX に置き換わっていて Vue のテンプレート構文もしっかり動いています。
これで、初期表示のコンポーネントを変更できました。
ビルドする
npm run build
いよいよ、Node-RED 側の node-red-static フォルダにビルドします。
Node-RED を起動して確認してみる
cd ..
で、Vue のプロジェクトフォルダから一つ上の階層に上がって
npm run node-red
で、Node-RED を起動して確認してみましょう。
無事、http://127.0.0.1:18801/
でも、同様の表示が確認できました!