热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IMWebConf2018Native跨端融合总结

“一次编写,到处运行”(Writeonce,runanywhere,WORA),最早是Sun公司在跨平台方面的宣传口号,也代表着我们作为开发人员对于效率的极致追求。近几年随着移动互联网的快速发展,移动终端设备的软硬件、操作系统、开发工具链和技术社区等日趋成熟完善,在前端也涌现出各种跨平台的开发方案。第一场分享是由阿里巴巴技术专家张翰、申远带来的有关Weex的分享,在分享中,张翰介绍了Weex的基本情况、内部结构、分析比较,申远讲述了Weexin2018及相关特性。Weex目

“一次编写,到处运行”(Write once, run anywhere, WORA),最早是Sun公司在跨平台方面的宣传口号,也代表着我们作为开发人员对于效率的极致追求。近几年随着移动互联网的快速发展,移动终端设备的软硬件、操作系统、开发 工具 链和技术社区等日趋成熟完善,在前端也涌现出各种跨平台的开发方案。

IMWeb Conf2018 Native跨端融合总结

会场主题

Weex内核的原理和演进方向

第一场分享是由阿里巴巴技术专家张翰、申远带来的有关Weex的分享,在分享中,张翰介绍了Weex的基本情况、内部结构、分析比较,申远讲述了Weex in 2018及相关特性。

IMWeb Conf2018 Native跨端融合总结

Weex目前已在“阿里系”应用以及社区内得到广泛应用,常规业务、双十一/大促、高性能场景都有着生产环境的实践。同时搭配了一系列的配套设施,如EMACS、weex-ui、达芬奇等。

IMWeb Conf2018 Native跨端融合总结

Weex整体结构设计分为Vue、JS Framework、Weex Core和Render Engine四个部分,由JS FrameWork与Weex DOM API对接,并通过Bridge API与Weex Core通信,Weex Core对Native进行底层调用。

IMWeb Conf2018 Native跨端融合总结

如我们所知,在移动端出现的各种方案中,越接近原生开发的性能越好,越接近Web的开发成本越低,weex前期是比较贴近于Web的开发体验,因此和Web的开发曲线十分类似,到后来贴近原生开发的体验,中间会经历一个拐点,张翰认为这个拐点在于前端和客户端的有效结合,需要客户端为前端赋能,当前端需要客户端时,客户端可以提供相应的基础设施,过度到原生开发的性能体验。

IMWeb Conf2018 Native跨端融合总结

接着申远讲述了WeexCore的架构升级,以及渲染架构2.0的情况,主要针对Layout性能进行了相关优化,对Timer进行了升级,针对首屏渲染情况进行了特别优化,可以看到优化后在速度性能、内存占用方面的明显效果。

IMWeb Conf2018 Native跨端融合总结

最后申远也提到,Weex Render是基于skia的,抛开客户端原生view的限制,可以换来性能上的提升,最重要的是,可以实现复杂的CSS效果,基于此,weex也扩展了140多种CSS样式能力。

Hippy 框架设计与优化

第二场分享由腾讯高级工程师赵宏罡、盛波带来的有关Hippy的分享,从前端和终端的角度介绍了Hippy的诞生,相比RN的逐条改进优化策略,使用场景以及将来的规划等等。

IMWeb Conf2018 Native跨端融合总结

Hippy作为腾讯的一款跨端框架,融合了前端和终端实现的优点,具有体验好、开发效率高等优势。Hippy的初衷是为了解决RN所带来的一系列问题。

IMWeb Conf2018 Native跨端融合总结

Hippy总体架构设计分为组件层、Render解析、前端核心、C++和终端层5个部分,组件层封装了许多实用的上层组件,Render解析层支持React和Vue的核心解析渲染逻辑,前端核心层定义了通信模块、日志、ui管理等等核心模块,通过Bridge与终端通信,终端通过定制的V8和JS Core进行解析渲染。另外,Hippy提供了完善的发布管理系统,直接对接终端的sdk包,具有增量发布等功能,有效解决RN包太大的问题。

IMWeb Conf2018 Native跨端融合总结

Hippy在上层支持React、Vue的语法,在Render层解析jsx或Vue Template,统一对应到Hippy的DOM API,再通过Bridge与底层通信。这与浏览器本身的DOM API设计思路也非常的相似。

IMWeb Conf2018 Native跨端融合总结

Hippy相比RN在诸多方面都有优化,手势方面,Hippy改善了终端向前端持续发送手势事件的行为,解决了前终端通道被大量占用的问题;通信方面,Hippy去除了RN LastFlush的缓存;动画方面,Hippy使用AnimateConfig使得动画一步到位,性能得到显著提高。

IMWeb Conf2018 Native跨端融合总结

针对ListView,Hippy也做了UI复用,防止List数据过多时带来的内存损耗。同时,Hippy也针对启动速度、两端的API设计、稳定性做了不少的优化工作。

IMWeb Conf2018 Native跨端融合总结

Hippy介绍到,它不仅仅是提供一个库,还提供一整套解决服务,包括打包管理系统、动态运营、隔离灰度、ABTest、差量发布、强制更新、安全校验、流控等等,帮助更好的管理发布。

IMWeb Conf2018 Native跨端融合总结

Hippy已经被腾讯内部不少业务广泛使用,在QQ浏览器的首屏已经切换到Hippy,在这个UI繁多、DAU达到千万级别的业务中经受住考验。

IMWeb Conf2018 Native跨端融合总结

最后,Hippy也给出在实际业务中优化的一些建议,如裁剪包大小、扫描图片大小、第三方库检测、懒加载、AsyncStorage、关键路径优化等等。

多端开发统一框架 Taro 深度剖析

第三场分享由京东的高级工程师李伟涛带来关于Taro的分享,介绍了Taro的历史背景、设计思想、持续优化、开源探索以及未来规划等。

IMWeb Conf2018 Native跨端融合总结

Taro本身作为多端统一框架,初衷是为了解决小程序开发中的各种痛点,快速开发小程序,之后能够根据一套代码适配到h5、RN等各端。

IMWeb Conf2018 Native跨端融合总结

小程序在开发中会遇到代码组织复杂、规范不统一、字符串模板弱、依赖管理混乱、不能使用ES Next、开发方式落后等问题(部分问题已经在小程序更新版本中得以改善),于是Taro决定将React现代技术栈编写的代码,并通过编译的方式生成到不同平台,做到”一处编写,多端运行“。

IMWeb Conf2018 Native跨端融合总结

Taro的总体思想是借助Babel的编译能力,经过词法语法等分析流程之后,对代码进行优化并根据不同平台进行转换,最终得到目标代码。

IMWeb Conf2018 Native跨端融合总结

在编译过程中,会遇到许多难题,各平台的组件和API差异都比较大,因此Taro通过统一的组件和API层,通过bootstrap适配到各个平台。

IMWeb Conf2018 Native跨端融合总结

Taro对JSX持续做较为丰富完善的支持,对小程序组件化方案做重构,使用更加直观好用的组件化形式组织代码,对于小程序的setState性能也按照React的异步方式做了优化,对TypeScript、React Native的转换做了进一步支持,百度/支付宝小程序也在支持中。

IMWeb Conf2018 Native跨端融合总结

Taro是今年6月7日正式对外开源的,开源以来获取很多好评,对于issue的解决率也比较高,pr数量也不错,对React社区和小程序社区的一些知名框架都做了支持,同时也有一套较为好看的UI。

IMWeb Conf2018 Native跨端融合总结

在未来规划中,Taro即将支持百度/支付宝小程序、快应用,提供更加便捷的测试调试方法,支持从原生小程序生成Taro代码,支持可视化的界面生成,都是一些值得期待的特性。

小结

跨端开发在前端领域探索已久,从PhoneGap时代开始,我们就希望移动应用既能拥有原生开发的性能体验,又能拥有Web开发的灵活性和敏捷性。在小程序与更多端的出现后,“一次编写,到处运行”成为了开发人员内心最强烈的渴望,RN、Weex、Hippy在不断平衡开发和性能中发展,Flutter选择牺牲一些开发体验追求较高的性能,Taro/mpVue等方案在小程序多端方面做出自己的探索,每个框架都有自己的出发点,但本质上的追求是多端能够更加统一,增强代码的可维护性,增强开发体验,增强性能体验。

很高兴能够在会议中看到Weex团队与W3C的交流,希望能够在多端方面制定些标准,在实际开发中少一些选择,多一些统一。同时也希望小程序团队能够更加开放的接纳社区意见,能够提供更好的开发体验,原生支持主流框架,而非依赖于其他手段曲线救国,解决好跨端开发体验的问题,前端才能更专注于思考自身。

(知乎相关问题: www.zhihu.com/question/29… )


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • 在 Vbox 和 Hbox 布局中,当用户点击容器添加一个矩形时,系统会自动为该矩形分配坐标并打印其位置信息。此外,在按键事件触发时,系统仅打印当前矩形的坐标值。这两种布局在特定的交互场景下,能够动态地管理和更新子组件的位置。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • Android 图像色彩处理技术详解
    本文详细探讨了 Android 平台上的图像色彩处理技术,重点介绍了如何通过模仿美图秀秀的交互方式,利用 SeekBar 实现对图片颜色的精细调整。文章展示了具体的布局设计和代码实现,帮助开发者更好地理解和应用图像处理技术。 ... [详细]
  • 本文深入探讨了NDK与JNI技术在实际项目中的应用及其学习路径。通过分析工程目录结构和关键代码示例,详细介绍了如何在Android开发中高效利用NDK和JNI,实现高性能计算和跨平台功能。同时,文章还提供了从基础概念到高级实践的系统学习指南,帮助开发者快速掌握这些关键技术。 ... [详细]
  • APKAnalyzer(1):命令行操作体验与功能解析
    在对apkChecker进行深入研究后,自然而然地关注到了Android Studio中的APK分析功能。将APK文件导入IDE中,系统会自动解析并展示其中各类文件的详细信息。官方文档提供了详细的命令行工具使用指南,帮助开发者快速上手。本文以一个RecyclerView的Adapter代理开源库为例,探讨了如何利用这些工具进行高效的APK分析。 ... [详细]
  • 在Java应用程序中调用`response.getStatus()`方法时遇到了`NoSuchMethodError`异常,经过分析,初步判断为依赖冲突问题。通过检查项目依赖树发现,当前项目版本与某些库的版本不兼容,导致该方法无法被正确识别。建议通过更新相关依赖版本或使用依赖管理工具(如Maven或Gradle)来解决此问题,确保所有依赖项版本一致且兼容。 ... [详细]
  • 【高德地图Android开发套件】详尽视频教程
    前两天参加了高德在北航举办的公开课,感觉非常不错。完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!!现在来跟大家分享一下,如何快速学习【高德地图AndroidSDK】的开发。一天包会!连 ... [详细]
  • 开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用
    开发心得:深入探讨Servlet、Dubbo与MyBatis中的责任链模式应用 ... [详细]
  • 从无到有,构建个人专属的操作系统解决方案
    操作系统(OS)被誉为程序员的三大浪漫之一,常被比喻为计算机的灵魂、大脑、内核和基石,其重要性不言而喻。本文将详细介绍如何从零开始构建个人专属的操作系统解决方案,涵盖从需求分析到系统设计、开发与测试的全过程,帮助读者深入理解操作系统的本质与实现方法。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 在稀疏直接法视觉里程计中,通过优化特征点并采用基于光度误差最小化的灰度图像线性插值技术,提高了定位精度。该方法通过对空间点的非齐次和齐次表示进行处理,利用RGB-D传感器获取的3D坐标信息,在两帧图像之间实现精确匹配,有效减少了光度误差,提升了系统的鲁棒性和稳定性。 ... [详细]
  • 进程(Process)是指计算机中程序对特定数据集的一次运行活动,是系统资源分配与调度的核心单元,构成了操作系统架构的基础。在早期以进程为中心的计算机体系结构中,进程被视为程序的执行实例,其状态和控制信息通过任务描述符(task_struct)进行管理和维护。本文将深入探讨进程的概念及其关键数据结构task_struct,解析其在操作系统中的作用和实现机制。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 在Java应用中实现只读模式的切换方法与技巧 ... [详细]
  • 本文深入解析了如何通过自定义 ViewGroup 实现类似支付宝风格的酷炫雷达脉冲动画效果。文章详细介绍了自定义 ViewGroup 的原理和实现步骤,并结合实际案例展示了如何在 Android UI 设计中应用这一技术,为开发者提供了宝贵的参考和实践指导。 ... [详细]
author-avatar
铱雯_213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有