此篇文章为本人原创,先发布在了 我的简书 里,后来觉得还是不忍放弃自己多年的csdn,故在此也发布了。
前言
作为一名iOS开发工程师,App的动态化是一种趋势,毕竟需求的增多,频繁的提交版本、更新版本对用户体验上肯定会有影响。当然动态化的方案有很多种:RN,Weex,LuaView等。对于一个对H5、React 零基础的小白,我准备还是从LuaView入手。
什么是LuaView?
LuaView是一种运行在一个ViewController/Activity中,可以灵活加载Lua脚本,并能够按照Native的方式运行的一种面向业务的开发技术方案。
LuaViewSDK使用lua虚拟机进行脚本解析,通过构建lua与native之间的一系列基础bridge功能,从另一个角度实现了动态化的native能力。
而对于为何选用Lua,其最大的优势就是:lua语法精炼直观,lua虚拟机轻量高效,使用Native编程模式,Native开发人员容易上手。
以上很不要脸的取自其官方文档的描述: https://alibaba.github.io/LuaViewSDK/guide.html
LuaViewSDK 是阿里开源的一个实现动态化方案的框架。开源地址: https://github.com/alibaba/LuaViewSDK
目前其SDK由阿里的一个团队来维护。个人感觉推广力没有Weex高。官方文档也很久没有更新了。不过提供了一个官方技术交流群:539262083 。
LuaViewSDK的整体架构
上图是LuaViewSDK的架构:(由下往上)
Native & Framework :表示了Android、iOS及其对应的框架层。
Lua Engine:即Lua虚拟机,Android对应LuaJ,iOS对应LuaC。作为lua脚本和nati语言之间的桥梁,将lua脚本翻译成native能够识别的目标语言。
Lua-Native UI Lib:LuaView的核心组件。其实LuaView对Native的各种UI组件进行了再次封装,并且注册到了Lua环境中,Lua脚本可以直接创建和操作这些组件,来达到创建和控制Native组件。(其实查看SDK源码,会发现,不仅封装了UI组件,还有一些方法类,如Timer,Gesture等)。
Script Manager:Lua脚本管理器,用于脚本的解压、验证、加解密、解压缩等工作。
Security:Lua脚本的校验工作(完整性和安全性的校验)。