1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rainbond-rainbond-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
importPlugins.js 2.1 КБ
Копировать Редактировать Исходные данные Просмотреть построчно История
Xuzl Отправлено 6 месяцев назад c3c7b0f
import System from 'systemjs/dist/system.js';
import _ from 'lodash';
import moment from 'moment';
import react from 'react';
import * as ReactDom from 'react-dom';
import * as RbdData from 'xu-demo-data';
import { RainbondRootPagePlugin, RainbondEnterprisePagePlugin } from 'xu-demo-data'
export const SystemJS = System;
const cache = {};
const initializedAt = Date.now();
SystemJS.registry.set('plugin-loader', SystemJS.newModule({ locate: locateWithCache }));
SystemJS.config({
baseURL: '/public',
defaultExtension: 'js',
packages: {
plugins: {
defaultExtension: 'js',
},
},
meta: {
'/*': {
esModule: true,
authorization: false,
loader: 'plugin-loader',
}
},
});
export function exposeToPlugin(name, component) {
SystemJS.registerDynamic(name, [], true, function (require, exports, module) {
module.exports = component;
});
}
exposeToPlugin('lodash', _);
exposeToPlugin('moment', moment);
exposeToPlugin('react', react);
exposeToPlugin('react-dom', ReactDom);
exposeToPlugin('xu-demo-data', RbdData);
export async function importPluginModule(meta, regionName) {
const path = `/console/regions/${regionName}/static/plugins/${meta.name}`
const module = await SystemJS.import(path);
return module
}
export async function importAppPagePlugin(meta, regionName, type) {
const xu = await importPluginModule(meta, regionName).then(function (pluginExports) {
const plugin = pluginExports.plugin ? (pluginExports.plugin) :type == 'enterprise' ? new RainbondEnterprisePagePlugin() : new RainbondRootPagePlugin();
plugin.init(meta);
plugin.meta = meta;
return plugin;
});
return xu
}
export function locateWithCache(load, defaultBust = initializedAt) {
const { address } = load;
const path = extractPath(address);
if (!path) {
return `${address}?_cache=${defaultBust}`;
}
const version = cache[path];
const bust = version || defaultBust;
return `${address}?_cache=${bust}`;
}
function extractPath(address) {
const match = /\/public\/(plugins\/.+\/module)\.js/i.exec(address);
if (!match) {
return;
}
const [_, path] = match;
if (!path) {
return;
}
return path;
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/rainbond-rainbond-ui.git
git@gitlife.ru:oschina-mirror/rainbond-rainbond-ui.git
oschina-mirror
rainbond-rainbond-ui
rainbond-rainbond-ui
v6.0.1-release