UNPKG

@ray-core/runtime

Version:

Ray 是一个全新的基于 React 的小程序开发框架

45 lines (44 loc) 1.26 kB
var resolve; var promise = new Promise(function (res, rej) { return (resolve = res); }); var _app; export function getNativeAppInstance() { try { return getApp(); } catch (e) { } } export function bindBlendedAppInstance(inst) { resolve(inst); } /** * 1. 用做主包 * 2. 用做子包 * 2.1. 独立子包 * 2.1.1. 通过主包打开 * 2.1.2. 直接打开 * 2.2. 普通子包(只能通过主包打开) */ export default function () { if (_app) { return Promise.resolve(_app); } _app = getNativeAppInstance(); return promise.then(function (inst) { if (!inst) { // 用作主包 return _app; // 用作主包肯定有 app } // 用作独立子包 if (inst.asSubPackageRuntimeOptions.independent) { _app = inst; return inst; } // 用作普通子包 // 但未通过主包的 app.js 导入子包的 app.js // (因在主包的app.js 导入 子包的 app.js,会重载 App 构造函数,并在App 实例上挂 asSubPackageRuntimeOptions,以此可以判断) if (!_app.asSubPackageRuntimeOptions) { _app = inst; return inst; } return _app; }); }