インターフェースとデザイン
はじめに
フロントエンドの開発、つまりブラウザによって視覚的に処理される部分は、ui フォルダ内で行われます。
標準では、このフォルダには ReactJS、Ant.Design、Less で構築され、Vite でコンパイルされる開発環境が含まれています。
標準環境はこれらの技術向けに設定されていますが、現在広く使われているという理由もあり、これらの技術に限定されるものではありません。
VueJS、MaterialUI、Sass、Bootstrap、TypeScript などの別の技術を使用したい場合は、📂 ui フォルダ内の 📂 package.json と 📂 vite.config.js の設定を、希望する技術に合わせて変更するだけです。
統合・集中ターミナル について詳しく。
前提条件
始める前に、Bun がインストールされていることを確認してください。
Bun のインストール方法を参照してください。
利用インターフェースの仕組みをよりよく理解するには、次の資料をおすすめします:
サービスを拡張する
📂 server/services/workers.js に workers サービスを Visual Studio Code で作成し、次のアドレスで JSON 情報を提供できるようになったとします:
次のステップは、これを拡張してブラウザのインターフェースにデータを表示することです。
このデータを使って、表とグラフで表示します。
Visual Studio Code または他のテキストエディタで Demo アプリケーションを開いているものとします。
エディタで次のファイルを開きます:
📂 ui/src/containers/DashboardContainer/index.jsx
この既存のコードを変更します。
state を準備する
function 内の DashboardContainer コンポーネントの先頭に、その state の定義があります。
次のように、workers のデータを保存する新しいエントリを追加します:
// 👇 以下の新しいコード行を追加します:
const [workers, setWorkers] = useState([]);
const [loading, setLoading] = useState(false);
つまり、新しい state 行 const [workers, setWorkers] = useState([]); を追加します。
loadWorkers 関数を作成する
さらに下に、loadWorkers という関数があります。この関数は、現在ダッシュボードに表示されている workers のデータを取得します。
この関数は workers のデータを読み込むために使用されます。
以下のコードを挿入します:
/**
*** 🚀 workers のデータを読み込みます。
*** 次のサービスを実行します:
** http://localhost:9000/services/workers
*/
const loadWorkers = () => {
setWorkers([]);
setLoading(true);
_service({
url: intl.locale.indexOf('pt') == 0 ? '/services/workers' : '/services/workers',
success: (response) => {
setWorkers(response.json);
setLoading(false);
},
fail: (e) => {
setLoading(false);
console.error('workers サービスの取得に失敗しました。', e);
message.error(intl.formatMessage({ id: `${messages}.loading_error` }));
}
});
};
上記のコードは、ReactJS のコンポーネントの state に workers のデータを渡します。これは workers サービスを実行し、JSON でデータを受け取ると、それを setWorkers の実行によって state に保存します。
最終的なコードは次のような構造になります:
useEffect(() => {
...
}, []);
const loadWorkers = () => {
...
}
return (
...
);
ここで
...は、それぞれのブロック内で省略された複数のコード行です。
useEffect フックを実行する
次に、コンポーネントが「マウント」されたときに useEffect フックを実行する必要があります。このフックは、コンポーネントがブラウザの表示上で構築されるときに実行されます。
そのためには、少し上で useEffect フック内に loadWorkers(); というコード行を次のように追加するだけです:
useEffect(() => {
loadWorkers();
}, []);
この新しいコード行は、先ほど作成した http://localhost:9000/services/workers サービスを実行する関数を呼び出し、JSON でデータを取得してコンポーネントの state(状態)に保存し、return(表示)で表示できるようにします。
コンパイル
ファイルを保存すると、すぐに Netuno を実行しているターミナルに ui の新しいコンパイル結果が表示され、ReactJS + Vite のコンパイル結果の新しい行が出力されます。
ターミナルで期待される出力は次のようになります:
> ui@1.0.0 watch netuno/apps/demo/ui
> bunx --bun vite build --watch
vite v7.1.2 building for production...
watching for file changes...
(!) outDir netuno/apps/demo/public is not inside project root and will not be emptied.
Use --emptyOutDir to override.
build started...
transforming...
✓ 4008 modules transformed.
rendering chunks...
computing gzip size...
../public/scripts/ui.js 1,433.96 kB │ gzip: 421.89 kB
built in 2128ms.
コンパイルでエラーがある場合は、ターミナルに問題の内容が表示されます。
ここまでで、workers サービスの利用を実装しました。取得したデータは DashboardContainer コンポーネントの state に保存され、return で利用できるようになります。
データを表示する
あとは、ユーザーがブラウザで見るインターフェースにデータを視覚的に表示するだけです。
ブラウザにデータを表示するには、ReactJS のコンポーネントの見た目を処理する return を変更する必要があります。
DashboardContainer のコードの最後に return ( ... ); があります。
これにコードを1行追加して、workers に関するデータを表示する DataVisualization コンポーネントを含めます。コードは次のようになります:
// 🔍 既存のコード内で次を探します:
return (
<div ref={ref}>
{ loading == false ?
<DataVisualization data={workers} />
: <Spin/>
}
<ListServices />
</div>
);
追加するのは、次の行だけであることに注意してください:
<DataVisualization data={workers} />
これにより DataVisualization は、workers サービスから JSON 経由で取得され state に保存されたデータを受け取ります。
最終コンパイル
ここまでのすべての変更を加えたファイルを保存します。
ターミナルの出力にエラーがないことを確認してください。
ブラウザでページを更新すると最終結果が表示されます。または、次のリンクをクリックしてください:
ダッシュボードが空白で表示される場合は、コードにエラーがあります。
ブラウザの開発者ツールのコンソールでエラーを確認してください。
さらに詳しく 👇
ReactJS の簡単な紹介: