界面与设计
介绍
前端开发,也就是由浏览器进行可视化处理的部分,是在 ui 文件夹中完成的。
默认情况下,该文件夹中包含使用 ReactJS、Ant.Design 和 Less 开发的环境,并使用 Vite 进行编译。
尽管默认环境已配置为这些技术,因为它们在当今使用非常广泛,但并非局限于此。
如果你打算使用其他技术,如 VueJS、MaterialUI、Sass、Bootstrap、TypeScript 等……只需在 📂 ui 文件夹中把 📂 package.json 和 📂 vite.config.js 的配置改为你更偏好的技术即可。
关于集成且集中的终端的更多信息。
前置要求
开始之前,请务必确认已安装 Bun。
请参阅如何安装 Bun。
为了更好地理解使用界面如何工作,我们推荐:
扩展服务
在通过 Visual Studio Code 于 📂 server/services/员工.js 中创建 员工 服务后,该服务会在以下地址以 JSON 形式提供信息:
下一步是扩展它,以便在浏览器界面中展示数据。
我们将使用这些数据,以表格和图表的形式展示它们。
假设你已打开 Visual Studio Code 或其他文本编辑器,并载入了 示例 应用。
在编辑器中打开以下文件:
📂 ui/src/containers/仪表盘容器/index.jsx
我们将修改这段现有代码。
准备 state
在 function 内,组件 仪表盘容器 的开头就是其 state 的定义。
添加一个新条目来保存员工数据,如下所示:
// 👇 在下方添加新的代码行:
const [员工, set员工] = useState([]);
const [加载中, set加载中] = useState(false);
也就是说,添加新的状态行 const [员工, set员工] = useState([]);。
创建函数 加载员工
再往下看,注意有一个名为 加载员工 的函数;该函数负责获取当前显示在仪表盘中的员工数据。
此函数用于加载员工数据。
插入以下代码:
/**
*** 🚀 加载员工数据。
*** 通过执行服务:
** http://localhost:9000/services/员工
*/
const 加载员工 = () => {
set员工([]);
set加载中(true);
_service({
url: intl.locale.indexOf('zh') == 0 ? '/services/员工' : '/services/workers',
success: (response) => {
set员工(response.json);
set加载中(false);
},
fail: (e) => {
set加载中(false);
console.error('员工服务失败。', e);
message.error(intl.formatMessage({ id: `${messages}.loading_error` }));
}
});
};
上面这段代码的作用是:通过执行 员工 服务,把 员工 数据传入 ReactJS 组件的 state;该服务收到 JSON 数据后,通过执行 set员工 将这些数据保存到 state 中。
最终代码应组织成如下形式:
useEffect(() => {
...
}, []);
const 加载员工 = () => {
...
}
return (
...
);
其中
...是各代码块中省略的多行代码。
执行 useEffect Hook
现在还需要在组件“挂载”时执行我们的 useEffect Hook;该 Hook 会在组件构建到浏览器的可视化界面时执行。
为此,只需在稍上方把代码行 加载员工(); 添加到 useEffect Hook 中,如下所示:
useEffect(() => {
加载员工();
}, []);
这行新代码会调用执行先前创建的 http://localhost:9000/services/员工 服务的函数,以获取 JSON 数据并将其保存在组件的 state(状态)中,以便在 return(视图)中展示。
编译
保存文件,然后注意在运行 Netuno 的 终端 中会出现 ui 的新编译结果,包含 ReactJS + Vite 编译结果的新行。
终端中的预期输出应类似以下内容:
> ui@1.0.0 watch netuno/apps/示例/ui
> bunx --bun vite build --watch
vite v7.1.2 building for production...
watching for file changes...
(!) outDir netuno/apps/示例/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.
如果编译中出现任何错误,终端中会显示问题提示。
到这里,我们已经完成了对 员工 服务的调用,获取的数据会保存在组件 仪表盘容器 的 state 中,因此可以在 return 中使用。
展示数据
接下来需要在用户于浏览器中看到的界面上以可视化方式展示数据。
要在浏览器中展示数据,我们必须修改 return,它负责处理 ReactJS 组件的外观。
在 仪表盘容器 代码的末尾,你会找到:return ( ... );
我们将只再添加一行代码,以包含另一个组件 数据可视化,用于展示 员工 的数据;代码应如下所示:
// 🔍 在现有代码中查找:
return (
<div ref={ref}>
{ 加载中 == false ?
<数据可视化 data={员工} />
: <Spin/>
}
<服务列表 />
</div>
);
请注意,只需添加下面这一行:
<数据可视化 data={员工} />
这样,数据可视化 就会接收通过 JSON 从 员工 服务获取并保存在 state 中的数据。
最终编译
保存包含到目前为止所有修改的文件。
确保 终端 输出中没有错误。
现在刷新浏览器中的页面,你应该会看到最终结果;或者,点击下面的链接:
如果仪表盘显示为空白,说明代码中有错误。
请在 浏览器 的 开发者工具 控制台中检查是否有错误。
了解更多 👇
ReactJS 快速入门: