Module 的使用

1. 什么是 module

module 是 Native 提供给前端页面调用的,完成一组操作的方法集合,用于扩展 Native 的能力。在 Chameleon 页面中,开发者引入相关js库后即可调用 module 中的方法。

  1. import bridge from 'chameleon-bridge';
  2. // 主动调用客户端方法
  3. export function sayHello() {
  4. bridge.callNative(
  5. 'moduleDemo', // 模块名
  6. 'sayHello', // 方法名
  7. {}, // 参数
  8. res => {} // 回调方法
  9. );
  10. }

2. Module 的使用

Module 的使用分两种情况,一种是使用 Chameleon SDK 内置的Module,一种是用户自定义实现自己的 Module。

2.1 使用内置的 Module

内置的 Module 在js 前端代码里直接使用即可,目前内置的 Module 有:

  • clipboard
  • cml
  • modal
  • storage
  • stream
  • webSocket
    Chameleon DOC 《API一章》 里描述的能力,部分实现就是由上述 module 支撑的。

2.2 自定义实现自己的 Module

示例可参看《手把手叫你系列 CMLStorageModule示例》

注册自己的module关联文件:

  • CMLSDKEngine
  • CMLConstants
  • CMLUtility
  • CMLModuleProtocol 非必须(该协议可获取CMLInstance)
    详细说明

  • 功能:通过注册module提供原生能力的扩展

  • 原理:依赖bridge进行协议通信,根据不同module进行协议处理分发
  • module,扩展原生能力

    • module注册
  1. [CMLSDKEngine registerModule:@"module名" className:@"类名"];
  1. - module名:两端及前端同学定义的一个名字
  • module方法实现
  1. #import "CMLConstants.h"
  2. #import "CMLUtility.h"
  3. CML_EXPORT_METHOD(@selector(xxx:callBack:))
  4. - (void)xxx:(NSDictionary *)param callBack:(CMLMoudleCallBack)callback {
  5. }
  1. - xxx:方法名,协商定义,需要跟前端一致
  2. - param:所带参数,字典类型
  3. - callback:回调block (非必须)
  • 遵循CMLModuleProtocol的作用

    • CMLModuleProtocol协议可获取到CMLInstance
    • 通过CMLInstance可获取当前运行环境、viewController