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的类型转换