Module 的使用

1. 什么是 module

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

import bridge from 'chameleon-bridge';

// 主动调用客户端方法
export function sayHello() {
    bridge.callNative(
        'moduleDemo', // 模块名
        'sayHello', // 方法名
        {}, // 参数
        res => {} // 回调方法
    );
}

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注册

      [CMLSDKEngine registerModule:@"module名" className:@"类名"];
      
      • module名:两端及前端同学定义的一个名字
    • module方法实现

        #import "CMLConstants.h"
        #import "CMLUtility.h"
      
        CML_EXPORT_METHOD(@selector(xxx:callBack:))
      
        - (void)xxx:(NSDictionary *)param callBack:(CMLMoudleCallBack)callback {
      
        }
      
      • xxx:方法名,协商定义,需要跟前端一致
      • param:所带参数,字典类型
      • callback:回调block (非必须)
    • 遵循CMLModuleProtocol的作用

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

results matching ""

    No results matching ""