2.0.0 • Published 3 years ago

mhn-library v2.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

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