atomm 对象
atomm 是平台 SDK(platform-sdk.js)加载后注入到页面的全局对象,提供平台能力与 UI 工具。在生成器代码中可直接使用。
生命周期 atomm.lifecycle
通过 lifecycle.on 注册平台生命周期钩子:
atomm.lifecycle.on('export', async () => { ... })
UI 提示 atomm.ui
弹出平台全局提示(toast)。参数为对象:
type:可选success/warning/error/info,默认successmessage:提示文案duration:可选,展示时长,单位秒,0表示不自动关闭;不传默认 3 秒
toast() 返回本条提示的 id;用 closeToast(id) 主动关闭。duration: 0 的常驻提示必须这样关,否则会一直挂着。
atomm.ui.toast({ type: 'success', message: '已完成' })
// 指定展示 5 秒
atomm.ui.toast({ type: 'info', message: '正在处理…', duration: 5 })
// duration: 0 常驻不自动关闭,任务完成后用 closeToast 关掉
const id = await atomm.ui.toast({ type: 'info', message: '导出中…', duration: 0 })
// …任务完成…
await atomm.ui.closeToast(id)
toast 必须传对象
传字符串(如 toast('已完成'))不会生效——平台只读取对象上的 message 与 type,字符串会被当成空消息。ui 命名空间目前提供 toast(返回提示 id)与 closeToast。
语言 atomm.app
平台当前的界面语言,用来让生成器跟着平台一起本地化。
// 当前语言短码,必定是受支持的 17 种之一
const locale = await atomm.app.getLocale()
// 全部受支持语言(短码 + 展示名),用于做与平台一致的语言选择器
const locales = await atomm.app.getSupportedLocales()
// → [{ code: 'zh', name: '简体中文' }, { code: 'en', name: 'English' }, …]
启动时调一次 getLocale() 决定初始语言就够了。这是一次性读取,不是订阅——平台切语言会整页重载,你的应用随之重启并读到新值,不需要自己监听变化。
getLocale() 返回的一定是下表这 17 种之一,但你的应用未必都翻译了。拿到没有对应文案的语言时,回退到英文或你自己的默认语言。
| 短码 | 展示名 | 语言 |
|---|---|---|
zh | 简体中文 | 简体中文 |
en | English | 英语 |
zh-hant | 繁體中文 | 繁体中文 |
de | Deutsch | 德语 |
es | Español | 西班牙语 |
fr | Français | 法语 |
it | Italiano | 意大利语 |
ja | 日本語 | 日语 |
ko | 한국어 | 韩语 |
ru | Русский | 俄语 |
uk | Українська | 乌克兰语 |
sl | Slovenščina | 斯洛文尼亚语 |
th | ไทย | 泰语 |
pl | Polski | 波兰语 |
cs | Čeština | 捷克语 |
id | Bahasa Indonesia | 印尼语 |
vi | Tiếng Việt | 越南语 |
表格顺序即 getSupportedLocales() 的返回顺序,「展示名」就是它返回的 name,做语言选择器直接用即可。
本地怎么测多语言
开发工具包的「模拟器」里有「预览语言」下拉,切换会改变 getLocale() 的返回值并重载生成器,不用真到平台上切语言。见开发工具包。
用户 atomm.user
// 当前是否已登录(只回布尔,不含 token 与个人信息)
const loggedIn = await atomm.user.isLoggedIn()
// 未登录时主动拉起登录弹窗,等用户登录完成后继续;返回最终是否已登录
if (!loggedIn) {
const ok = await atomm.user.login()
if (!ok) return // 用户取消或登录失败
}
// 到这里已登录,继续你的逻辑
login 在用户手势里调用
login() 会弹出登录窗口,请在用户点击等手势的回调里调用,避免被浏览器弹窗拦截。登录是耗时交互,平台已为它放宽超时(约 5 分钟),无需你自己加超时。
安全调用
不确定是否运行在平台内时,用可选链避免报错:
window.atomm?.ui?.toast?.({ type: 'info', message: 'hi' })