feat: support component's cdn urls only in editor

This commit is contained in:
金禅 2021-08-24 10:22:11 +08:00
parent 76435d4995
commit 841b04324f
2 changed files with 15 additions and 9 deletions

View File

@ -55,6 +55,7 @@ import {
ComponentSchema, ComponentSchema,
TransformStage, TransformStage,
ActivityData, ActivityData,
Package,
} from '@ali/lowcode-types'; } from '@ali/lowcode-types';
import { BuiltinSimulatorRenderer } from './renderer'; import { BuiltinSimulatorRenderer } from './renderer';
import clipboard from '../designer/clipboard'; import clipboard from '../designer/clipboard';
@ -63,10 +64,11 @@ import { Project } from '../project';
import { Scroller } from '../designer/scroller'; import { Scroller } from '../designer/scroller';
import { isElementNode, isDOMNodeVisible } from '../utils/misc'; import { isElementNode, isDOMNodeVisible } from '../utils/misc';
export interface LibraryItem { export interface LibraryItem extends Package{
package: string; package: string;
library: string; library: string;
urls?: Asset; urls?: Asset;
editUrls?: Asset;
} }
export interface DeviceStyleProps { export interface DeviceStyleProps {
@ -325,13 +327,13 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
* urlsArray cdn地址umd类型.js或者.css * urlsArray cdn地址umd类型.js或者.css
* libraryString umd包直接导出的name * libraryString umd包直接导出的name
*/ */
buildLibrary(library) { buildLibrary(library?: LibraryItem[]) {
library = library || (this.get('library') as LibraryItem[]); const _library = library || (this.get('library') as LibraryItem[]);
const libraryAsset: AssetList = []; const libraryAsset: AssetList = [];
const libraryExportList = []; const libraryExportList: string[] = [];
if (library) { if (_library && _library.length) {
library.forEach((item) => { _library.forEach((item) => {
this.libraryMap[item.package] = item.library; this.libraryMap[item.package] = item.library;
if (item.async) { if (item.async) {
this.asyncLibraryMap[item.package] = item; this.asyncLibraryMap[item.package] = item;
@ -341,7 +343,9 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
`Object.defineProperty(window,'${item.exportName}',{get:()=>window.${item.library}});`, `Object.defineProperty(window,'${item.exportName}',{get:()=>window.${item.library}});`,
); );
} }
if (item.urls) { if (item.editUrls) {
libraryAsset.push(item.editUrls);
} else if (item.urls) {
libraryAsset.push(item.urls); libraryAsset.push(item.urls);
} }
}); });
@ -365,7 +369,6 @@ export class BuiltinSimulatorHost implements ISimulatorHost<BuiltinSimulatorProp
this._contentWindow = iframe.contentWindow!; this._contentWindow = iframe.contentWindow!;
this._contentDocument = this._contentWindow.document; this._contentDocument = this._contentWindow.document;
const library = this.get('library') as LibraryItem[];
const libraryAsset: AssetList = this.buildLibrary(); const libraryAsset: AssetList = this.buildLibrary();
const vendors = [ const vendors = [

View File

@ -5,8 +5,11 @@ import { Snippet, ComponentMetadata } from './metadata';
export interface Package { // 应该被编辑器默认加载定义组件大包及external资源的信息 export interface Package { // 应该被编辑器默认加载定义组件大包及external资源的信息
package: string; // 包名 package: string; // 包名
version: string; // 包版本号 version: string; // 包版本号
urls?: string[] | null; // 组件打包后的CDN列表包含js和css urls?: string[] | any; // 组件渲染态视图打包后的 CDN url 列表,包含 js 和 css
editUrls?: string[] | any; // 组件编辑态视图打包后的 CDN url 列表,包含 js 和 css
library: string; // 作为全局变量引用时的名称和webpack output.library字段含义一样用来定义全局变量名 library: string; // 作为全局变量引用时的名称和webpack output.library字段含义一样用来定义全局变量名
async?: boolean,
exportName?: string;
} }
export interface ComponentCategory { // 组件分类 export interface ComponentCategory { // 组件分类