本文摘要
泛微 Ecology10 的 UI 层改用 weappUi 后,只保留了全屏遮罩式的 Spin,缺少 E9 中 antd.message.loading 那种轻量可控的加载提示。文章利用 weappUi.Dialog.message 搭配 Spin 封装了一个伪 message.loading,返回可手动销毁的实例,避免全屏遮罩阻断操作,适合接口查询、短轮询等轻量异步场景,并指出 E10 虽移除了部分顺手的组件,却给前端扩展留下更多空间。
Ecology E9 时代,antd.message.loading 是很多前端人的心头好——轻量、可控、非遮罩式、还能手动关闭。
但到了 Ecology 10 ,UI 层全面转向 weappUi,只保留了 Spin 的全局遮罩样式。
结果就是:异步任务的 Loading 不够友好,也缺乏 message 级别的可控 loading 提示。
丸子用最简单的方式,实现了一个「伪 message.loading」效果:
轻量、可关闭、不干扰页面交互。
效果展示:

方案:自己封装一个 message-like Loading
核心思路:
利用 weappUi.Dialog.message + weappUi.Spin 拼一个轻量提示,再返回可销毁实例。
代码极简两行:
window.showLoading = () => weappUi.Dialog.message({ type: 'custom', delay: 0, icon: React.createElement(weappUi.Spin, { spinning: true, size: 'small' }), content: '加载中...' });
window.hideLoading = (inst) => inst?.destroy();使用方式也与 antd 非常相似:
const loadingInst = window.showLoading();
// 模拟异步任务setTimeout(() => { window.hideLoading(loadingInst);}, 1500);Minimal. Elegant. 有手就行。
为什么不用全局遮罩?
原因很现实:Ecology10 的全局遮罩太“重”了
- 遮住整个屏幕 → 用户无法操作
- 对轻任务(接口查询、短轮询)不友好
- 经常误导用户以为系统卡死
- 影响复杂页面的交互体验
很多时候,我们只是想来个“轻提示”,而不是把世界暂停。
自定义 Loading 的优点
更轻量
不阻断用户操作,比全屏 Spin 更自然。
可控性强
返回实例 → 我们想关就关,不用等待延时关闭。
视觉一致
照样用 weappUi 的风格,不突兀。
代码极简
只两行代码,随处可复用。
写在最后
Ecology10 虽然去掉了很多 E9 时代顺手的 Web 组件,但也给了前端更多自由度。
轻量级 Loading 只是其中一个小例子。
如果你也在 E10 做前端扩展,欢迎来丸子的博客看看