2.0.1 • Published 2 months ago

kbs-dsl-resolver v2.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 months ago

kbs-dsl-resolver

kbs-dsl 的解析器。引用如下:

import resolve, { registerToGlobleScope } from 'kbs-dsl-resolver';

registerToGlobleScope 用于注册全局方法

通过 registerToGlobleScope 可以在解析 dsl 之前注册全局方法。这是一个既是一个扩展的接口,也是一个提升性能的接口。解析器默认会把 @babel/runtime/helpers 通过 registerToGlobleScope 注册到全局。如下:

import * as helper from './utils/babel-runtime-helpers';
registerToGlobleScope({
  ...helper
});

注意,通过 kbs-dsl-resolver 解析的 dsl 会共享一个顶层作用域,而这个顶层作用域就是本文提及的全局

resolve 方法解析标准的 dsl

使用 kbs-dsl-maker 产生的 dsl 便是标准的 dsl。如果开发者改造了「kbs-dsl-maker」将把 libaryTarget 从 umd 改成其它值的话,可能没办法使用此方法。

resolve 方法支持的 libaryTarget 选项为:

  • umd
  • commonjs
  • commonjs2

使用如下:

import resolve from 'kbs-dsl-resolver';

const MyComponent = resolve(dslJson).default; // 使用 commonjs 打包的组件

libaryTarget 取值为 var

受限于微信环境,目前 kbs-dsl-resolver 只支持四种 libaryTarget,即: umd, commonjs, commonjs2 和 var,其它选项需要开发者自己定制开发解决。 使用 var 选项,在解析时不能使用标准的 api,需要按以下方式解析:

import { dslResolve, createModuleScope } from 'kbs-dsl-resolver';

const moduleScope = createModuleScope();
const dslList = Array.isArray(dslJson) ? dslJson : [dslJson];
dslList.forEach(dsl => {
  // @ts-ignore
  dslResolve(dsl, moduleScope);
});
// 通过 moduleScope.varScope 来访问,假设 libary 取名为 app
const MyComponent = moduleScope.varScope.app;
2.0.1

2 months ago

2.0.0

2 months ago

1.1.6

5 months ago

1.1.5

5 months ago

1.1.4

5 months ago

1.1.3

5 months ago

1.1.2

5 months ago

1.1.1

6 months ago

1.1.0

7 months ago

1.0.20

7 months ago

1.0.19

7 months ago

1.0.18

7 months ago

1.0.17

7 months ago

1.0.16

7 months ago

1.0.15

7 months ago

1.0.14

7 months ago

1.0.13

7 months ago

1.0.12

7 months ago

1.0.11

7 months ago

1.0.10

7 months ago

1.0.9

7 months ago

1.0.8

7 months ago

1.0.7

7 months ago

1.0.6

7 months ago

1.0.5

7 months ago

1.0.4

7 months ago

1.0.3

7 months ago

1.0.2

7 months ago

1.0.1

7 months ago

1.0.0

7 months ago