Skip to content
This repository has been archived by the owner on Jul 16, 2020. It is now read-only.

Latest commit

 

History

History
58 lines (38 loc) · 1.7 KB

extend-h5.md

File metadata and controls

58 lines (38 loc) · 1.7 KB

HybridJS扩展

利用HybridJS.wrapAPI()对Native提供的api做一层封装,从而达到扩展HybridJS的目的

  • wrapAPI方法可以将形如[classname]/[method]这样的Native api封装成HybridJS.[namespace].[method]()这样的调用方式,更加直观
HybridJS.wrapAPI('music.play', (id, type, name, position = 0) => {
    HybridJS.invokeApp('com.mycompany.music/play', {id, type, name, position})
})

// call:
HybridJS.music.play(id, type, name, position)
  • 可以对Native API进行浏览器兼容,防止在浏览器里边报错
HybridJS.wrapAPI('view.back', (value = 1) => {
    if(HybridJS.isInApp) HybridJS.invokeApp('com.mycompany.hybridSDK.handler.UrlHandler/back', {value})
    else window.history.back()
})
  • 自行打包扩展过的HybridJS

如果业务层是多人维护的并且有较多的HybridJS接口扩展,可以自行打包,方便代码在多人之间共享。

自行打包HybridJS module

  • clone hybridjs 源码
$ git clone https://github.com/chemdemo/hybrid-js.git
  • 添加业务代码

假设有一个音乐应用,在api/目录下添加music.js,然后加入代码示例(支持ES6语法):

import HybridJS from './base'

HybridJS.wrapAPI('music.play', (id, type, name, position = 0) => {
    HybridJS.invokeApp('com.mycompany.music/play', {id, type, name, position})
})

module.exports = HybridJS
  • 打包
$ npm install && npm run build

在dist目录下回生成两个业务代码文件,一个是压缩版(hybridjs-music.min.js)一个是未压缩版(hybridjs-music.js),根据需要用这两个文件替换(生成的业务代码已经包含了hybridjs.js所有的功能)hybridjs.js即可。