企业数字化转型:钉钉小程序开发权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.2 Page页面原理解析

Page页面用来承载小程序的各个页面,表2-2展示了 Page页面的组成部分。

表2-2 Page页面的组成部分

由小程序底层封装的AXML,可以使得开发者通过使用简单的类似HTML的语言进行编写,调用AXML定义好的自带复杂交互的组件。WKWebView负责对AXML和ACSS进行解析和执行,开发速度提升的同时,比使用H5开发相同复杂度的组件的计算渲染速度更快。小程序的JavaScript解析则是直接由JavaScriptCore负责的,页面内部的交互行为将继续通过JavaScript实现,而与App的交互将会解析为Objective-C来与钉钉iOS客户端交互。

.json文件其实就是一种配置文件,是小程序与钉钉客户端的约定,直接由Native读取来控制整个小程序App或者页面的一些生命周期、导航边框等通用行为样式。

所以钉钉小程序本质上就是自定义了多功能标签、页面配置项,优化了传统H5和Native交互,采用了更高效的渲染引擎和更高效的JavaScript解析引擎的类H5的网页开发,当然由于各种适配与钉钉客户端的自定义功能,高效的同时,它也只能在钉钉中运行。

1.WKWebView简介

WKWebView是苹果公司在iOS 8之后推出的WebKit框架中的浏览器控件,其加载速度比UIWebView更快,但内存占用率下降很多,解决了加载网页时的内存泄漏问题。

对比UIWebView,WKWebView最大的优势在于:

● 更多地支持HTML5的特性。

● 具有官方宣称的高达60fps的滚动刷新率及内置手势。

● 拥有与Safari相同的JavaScript引擎。

● 更多内容可参考官方文档“链接0”。

2.JavaScriptCore简介

JavaScriptCore建立起Objective-C和JavaScript两门语言之间沟通的桥梁。无论是这些流行的动态化方案、WebView Hybrid方案,还是之前广泛流行的JSPatch,JavaScriptCore都在其中发挥了举足轻重的作用。

iOS官方文档对JavaScriptCore的介绍很简单,其实主要就是给App提供了调用JavaScript脚本的能力。而在小程序中钉钉Native也是通过JavaScriptCore调用JavaScript脚本的。

其中最重要的几个模块如下:

● JSContext.

● JSManagedValue.

● JSValue.

● JSVirtualMachine.

图2-2展示了Objective-C和JavaScript的类型转换。

图2-2 Objective-C和JavaScript的类型转换