网页应用之约 0.1.0
此包令一浏览器中之豫言应用启同站之另一豫言浏览器应用。云控制台诸服务页(用量分析、AI 市场)各为独立构建之豫言应用,宿主页中之控制台应用,需时以之挂于页上,而不使页面别书 JavaScript 以动态载之。客依此包,诸术皆当具。
“豫言浏览器应用”,谓构建器所生之应用目录:其中有加载器“入口.mjs”(出“启动豫言浏览器应用(选项)”)、程序.wasm、值桥.wasm、宿主 JS 与接口清单;子应用自有其 Wasm 实例、自有其统一事列、自有其句柄表,与父应用惟凭页面本身(文树、网页消息)相通。
诸术
启动页面应用:字符串,返有
参数乃子应用加载器之站内径,如“/AI市场应用/入口.mjs”。宿主:
- 验其径(见下);
- 动态载其模块,调其所出之“启动豫言浏览器应用()”(应用文件之位默认在此模块所在之目录);
- 挂起当前之调用,直至子应用就绪——其首入事件之候,或已行毕;就绪前父应用之事照常排列;
- 而返。子应用此后独行,直至页终或父应用终(宿主闭则子应用一并闭);父应用不能止之,亦不能问之。
径之律:以“/”首而非“//”首;以“/入口.mjs”终;至多五百一十二 UTF-16 码元;无“..”、“.”目录段、查询(“?”)、片段(“#”)、反斜杠、控制字符与百分号编码。违者为违约之调用。
限额与败:同一径于一页中惟可启一次(重启则发事故,免二应用争同一片文树);同时至多启八个子应用;模块不存或载败、模块无“启动豫言浏览器应用”之出、子应用装载或接口核对败、三十秒内未就绪,皆发事故而附中文之释(子应用启后所生之败不累父应用)。
用之约
- 先备文树,后启动:子应用启时读页中所需之元素而订阅诸事,故父应用当先以文树接口(如装入页面模板)置子应用之容器与静骨于页,然后调启动页面应用。
- 一页中诸应用之元素标识不得相冲(子应用依标识而读写页面)。
- 父子欲通,用网页消息包(“豫言”首之文档消息)。
一致性之例
- 页已有
<div id="子根"></div>;父应用启动页面应用(“/子应用/入口.mjs”)返后,子应用已书文于“子根”,且应其所订之点击。 - 再启动页面应用(“/子应用/入口.mjs”):发事故(已启)。
- 启动页面应用(“/子应用/程序.wasm”)、(“../入口.mjs”)、(“/子应用/入口.mjs?x=1”):发事故(径不合)。
- 径合而文件不存:发事故,释其载败。
- 子应用启时所至之父应用事(点击、消息)不失,启动页面应用返后可取。
界
此包不定:止或重启子应用、传参于子应用(用页面文树与网页消息)、跨来源之应用、子应用退出之告、共享内存或共享句柄。