拖稿了好久的「Hybrid APP开发系列」又更新了~
今天继续写JSSDK
为什么会有JSSDK
我之前文章介绍了通过 JSBridge 实现页面和NA的相互调用,并且介绍了模板本地包的开发和后台维护系统。今天介绍的是JSSDK,通过 JSSDK 可以实现:
- 抹平JSBridge的平台实现差异
- 对齐端能力,内部消化版本差异
- sdk封装后的代码更加符合前端习惯
- 权限控制、鉴权、对外开放,实现生态建设
关于sdk的代码级别的设计,可以参考文章:《JSSDK设计指南》
如果做过微信页面开发的,应该都知道wx.js
,这就是微信的JSSDK,在微信内需要调用微信的端能力就需要引入这个js。
JSSDK的设计
JSSDK的设计包括两部分:
- 随着每个NA客户端版本内置的js,称为:
inject.js
,他的主要作用是封装JSBridge逻辑,通过随版更新实现减少端能力的版本分裂,降低整个sdk的代码复杂性。inject.js
是一段js代码,当客户端加载一个页面的时候,由客户端在适当的时机注入到webview内执行,执行后的代码就会有给webview增加js方法,例如微信的_WeixinJSBridge
,类比chrome开发插件当中的content_scripts
,可以在document_start
、document_end
等时机进行执行。 - 云端JS,即实际暴漏给开发者使用的js,称为:
jssdk.js
,这个是真正开发者使用的sdk文件,通过script
外链引入,例如wx.js
,这个js文件通过和inject.js
进行交换,完成端能力的调用、鉴权和客户端事件监听等操作