UI系统
- UI系统包含UI元素的布局、渲染和UI事件的捕获、传递、处理等。
- iOS、Android、Web、微信小程序、其他小程序都有各自的原生UI系统。
系统服务
- 原生系统的各种能力,来自硬件的、软件的。
开发语言不同、运行环境不同
开发模式不同
跨端方案
- 不同原生系统上的UI系统和系统服务是有差别和相似的,跨端方案是尽量屏蔽这些差异,对应用开发者来说,开发体验是一致的的、透明的,就像jQuery屏蔽不同Web浏览器间的差异性。
- 需要做到这点,跨端方案需要提供包括DSL、Runtime、组件库、工具链等,一整套屏蔽原生系统开发和运行的差异。
Runtime
- Runtime需要支撑DSL在原生系统的运行,需要桥接到到原生系统服务、原生UI系统,需要提供自有或轻或重的UI渲染系统,需要提供对自有组件库或三方组件库的访问等。
- UI引擎,轻的方案是直接桥接到原生UI系统,引擎只做UI数据的处理、转换、传递,重的方案是基于跨平台的渲染方案如OpenGL做一套自己的UI系统。
组件库
- 自有、三方、原生系统的组件库等等。
工具链
- 开发阶段,需要提供转换器或编译器,对DSL的支持,IDE,等等。
- 调试阶段,调试工具、方式。
- 测试阶段,测试工具。
- 部署阶段,本地部署、远程部署。