热门标签 | 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… )


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


推荐阅读
  • 入门Java需熟练掌握哪些技术呢?
    Java工程师无疑是当下令人艳羡的工作之一,因此,每年都有大批大批的朋友想要报名Java工程师学习Java也就不奇怪了。那么入门Java掌握哪些技术能力 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Spring MVC 浅谈
    大学时写的的文章,当时文章水平略差,大家见谅。MVC这个词儿,最早的定义应该是作为一种软件架构设计模式出现在软工里面的,即使用model、view、controller来设计及定 ... [详细]
  • 传统|同类_Spring Boot进阶:原理实战与面试题分析读后感
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot进阶:原理实战与面试题分析读后感相关的知识,希望对你有一定的参考价值。 ... [详细]
  • uniapp 框架简介和生命周期
    介绍:uni-app使用vue的语法小程序的标签和API。也就是和这些语法同样作用的框架.生命周期,分为应用生命周期和页面生命周期,和小程序的基本一致.流程开发规范为了实现多 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)【下载本文PDF进行阅读】设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头 ... [详细]
  • 【Java编码规范】《阿里巴巴Java开发手册(正式版)》发布!
    2019独角兽企业重金招聘Python工程师标准2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Ja ... [详细]
  • “自主设计与实施的故障注入微服务Sidecar,欢迎大佬批评指正!”
    “故障注入Sidecar“——为您的微服务注入故障以验证集群性能!由于导师和实验室师兄们的科研需要,本人专门以Sidecar的模式设计了一个用于错误注入的微服务模块。该模块可以与任 ... [详细]
  • 架构设计:负载均衡层设计方案之负载场景和解决方式篇
    来自:JAVA入门中https:blog.csdn.netyinwenjiearticledetails46605451在上一篇《标准Web系统的架构分层》文章中&# ... [详细]
  • 目录搭建个人博客GithubPages博客园云笔记同步你该选择什么样的电子笔记如何安排笔记分类笔记格式搭建个人博客如果不介意成本,可以租一个云服务器, ... [详细]
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社区 版权所有