2.0.0 • Published 3 years ago
mhn-library v2.0.0
ll-bridge
本地生活通用获取bridge信息组件,可通过配置一次性并行获取多个bridge信息。
介绍:
本组件只供大部分的「从bridge读值」功能,不提供复杂bridge操作(commonshare这种),所有调用的bridge都是并行,按请求顺序返回。最终返回Promise,resolve值为结果数组(与传入配置顺序一致),reject为单个bridge错误原因。
(可通过实例的timeInfo属性获取各个bridge执行时间,单位为ms,需在await getDataAsync之后);
API参考:
import LlBridge from 'll-bridge'
const llBridge = new LlBridge();
(1):LlBridge.isSupport(bridgeName: string)
异步判断是否支持某个bridge信息。
(2):LlBridge.registerBridge(bridgeName: string)
注册某个bridge信息。
(3):llBridge.timeInfo
获取传入的各个bridge执行时间,需要在await getDataAsync之后。
(4):llBridge.getDataAsync()
通用并行获取多个bridge信息,具体参照一下2种调用方式。
你可能关心的:
1.bundle大小为4.72KB 不会对业务js大小产生很大影响。
2.组件内部有register和isSupportAsync,请放心使用新增bridge,不存在的bridge会在开发中提示。
3.需要在app中调试,非app会提示。
4.请业务保证提供,本组件需要外部依赖@ks/ks-bridge,为了防止重复打包。
5.本组件需要bridge本身支持promise,大部分的bridge都支持promise,小部分不支持,大致分为2种。
- 「设置型(同步操作)bridge」不被支持 例如 ksBridge.setSlideBack
- 「多次执行回调的bridge」不被支持 例如 ksBridge.postVideo
6.暂时无ts类型声明文件,需优先在业务 类型描述文件中定义模块信息,后续会补全。
接入方式:
- npm(需要快手npm源)
npm install @ks/ks-bridge @ks/yoda-js-sdk --save
(项目如有 可不执行)
npm install ll-bridge —-save
import LlBridge from 'll-bridge'
// 根据需要配置即可(collapseKeyboard、mahenanBridge为了演示错误情况)
let options = [
{
bridgeName: 'getLocation'
},
{
bridgeName: 'syncLocation'
},
{
bridgeName: 'hasLocationPermission'
},
{
bridgeName: 'getExpTagTransList'
},
{
bridgeName: 'getDeviceInfo'
},
{
bridgeName: 'collapseKeyboard'
},
{
bridgeName: 'mahenanBridge'
},
{
bridgeName: 'hasInstalledApp',
bridgeOption: {
identifier: 'wechat'
}
}
];
const llBridge = new LlBridge(options);
try{
const result = await llBridge.getDataAsync();
console.log(llBridge.timeInfo);
console.log('success:', result);
}catch(e){
console.log('failed:', e);
}
- cdn
如有直接通过cdn使用的场景(接口预请求,预渲染等),由于版本会持续更新,请优先安装包,包中的 lib/ll-bridge.common.js 可以直接上传到cdn使用。
<script src='我是ks-bridge cdn地址'></script>
(项目如果本身有,可不添加)
<script src='我是ll-bridge cdn地址'></script>
// 根据需要配置即可(collapseKeyboard、mahenanBridge为了演示错误情况)
let options = [
{
bridgeName: 'getLocation'
},
{
bridgeName: 'syncLocation'
},
{
bridgeName: 'hasLocationPermission'
},
{
bridgeName: 'getExpTagTransList'
},
{
bridgeName: 'getDeviceInfo'
},
{
bridgeName: 'collapseKeyboard'
},
{
bridgeName: 'mahenanBridge'
},
{
bridgeName: 'hasInstalledApp',
bridgeOption: {
identifier: 'wechat'
}
}
];
const LlBridge = window.llBridge.default;
const llBridge = new LlBridge(options);
try{
const result = await llBridge.getDataAsync();
console.log(llBridge.timeInfo);
console.log('success:', result);
}catch(e){
console.log('failed:', e);
}
有任何问题都可以联系 mahenan@kuaishou.com
2.0.0
3 years ago