跨平台开发框架 Lynx 初探

跨平台开发是目前开发较热门的方向,React Native 在这方面取得了很大的成功,同时 Flutter 也获得了非常多的关注。React Native 采用 Web 框架开发并使用 Native UI 进行渲染,很大程度上降低了 Native 开发的门槛并且提高迭代的效率,但是也不可避免地存在一些不足之处。

本人作为 RN 的长期开发体验者,深知在有些技术在现有的 RN 这类框架上没法得到很好的解决。比如首屏的速度,复杂的跟手动画,和原生 Android 和 iOS 上的体验确实有一定的差距的。当然这些小小的毛病不能阻碍跨平台开发技术的发展。本人也在持续的关注 Flutter,这个框架解决了RN上性能的问题,但是也增加了学习成本。

Lynx

最近发现了跨平台的一个新框架 Lynx ,从官方简介来看这个框架还处于 alpha 状态,目前还没有完整的文档,只有体验 demo 。不过在体验了这个框架提供的 demo之后,感觉还是可以持续关注下去的。Lynx 官方宣称拥有和 Native 一致的首屏速度和交互体验,体验 demo之后发现首屏速度和交互的确很优秀。

体验

正好在之前编译 RN 和 Flutter 已经下载好了 Android SDK 和 NDK ,按照 How To Build 进行编译还是比较方便的。

最终效果和官方给出的动图是一致的,就是整体的 demo 还是比较少的,略简单。页面开发流程暂时还没尝试,只能先看看效果。

在 Lynx 的介绍里面看到了和其他现有的跨平台框架相比的一些不一样的特性,根据自己的体验和官方介绍简单说一下:

  1. 页面首屏展示,看到给出的 demo 就可以知道,这个和原生的 Android 和 iOS 页面一样,都可以做到直出的,基本没有任何白屏的状况。这一点相比于 RN 确实是一个不错的点。
  2. 交互动画,就是跟手动画,在 RN 上要去实现这类动画确实是比较难(本身因为中间还要过一层 JSBridge 的原因),要么自己拓展 Native 的模块。而在 demo 上的交互动画非常顺畅,并没有出现任何的卡顿,在效果上甚至比 Flutter 帧率更高。
  3. JSBinding 机制,根据官方的说法有更高效的 JSBridge,但是体验上暂时没感觉出来,稍后去研究一下代码
  4. 动态发布测试,这个是所有跨平台框架必须有的,不算什么新鲜事。这个看文档的介绍需要结合脚手架 lynx-cli 。

页面直接展示和满帧的交互动画的实现原理是什么呢?官方给出了一个简单的工作流程图和介绍。理解了这个就基本知道这个问题的答案了,页面展示快的原因是因为将首屏的展示变成了排版文件,从而略过了 JS 的执行生成首屏元素的步骤,而交互动画的实现也是通过了中间的交互动画引擎在接收到事件后直接响应,从而略过了 JS 的中间步骤。

体验完Lynx,觉得这个框架还是值得后续观望,看下能做到什么程度。

最后

Lynx 框架现在还是在 alpha 阶段,暂时还不能直接用来开发要上线的应用,功能也尚不完备,但是可以关注它的发展,毕竟这个技术在实现上和 RN 有所区别,也希望能有新的想法,在满足先在的需求的情况下突破现有的局限。

尝试 demo 之后,准备去看看代码,一探内部实现。Lynx 的仓库也给出了可以使用的 API 列表,后续会根据 API 进行简单实践。希望能有更多的跨平台开发框架出现,推动技术的发展。

附上 Lynx 仓库地址:https://github.com/hxxft/lynx-native


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ajax包含mysql吗_php 实例ajax与mysql怎么只查询出一条数据?

http://www.runoob.com/php/php...使用这个实例操作之后为什么只显示一条数据,如何让符合条件的数据全部显示出来如,我使用的查询字段是yesterday_str,查询2017-04-18这个数据怎么样才能把2017-04-18包含这个的全部数据提取出来?p…

aspx写入mysql_Asp.net用户登陆数据库验证与注册写入数据库

1.思路与效果图Index.aspx注册注册成功登陆登陆验证通过进入内容页1登陆没通过验证思路:首先建一个Sqlserver数据库Student,再建一个student表(name,pwd)存放用户名和密码。然后注册功能的实现:通过数据库插入信息到表的Sql语句来实现,成功提…

页面体验提升小技巧—渐进式图片

前端性能方面有许多可优化的点,而这些优化带来的就是用户体验的提升。今天我们要聊的东西并不能给性能带来提升,但却能在一定程度上提升用户的体验。 参考博客 场景:在访问页面的时候如果图片较大或者网速慢的情况我们会看到图片加载起来是有…

微信小程序搭配小白接口,自己没有服务器也能开发哦

这里将重点介绍,在自己没有服务器的情况下,如何在微信小程序里直接调用小白接口。 前提 假设你已经开通微信小程序,如果还没有,可前往微信公众平台开通:https://mp.weixin.qq.com 假设你已经开通小白接口&#xff0c…

怎么将自己做好的网站发布到互联网上呢?

如何将自己的网站上传到网站空间。 1.需要有一个上传网站的软件,在这里推荐大家使用 FTP全称是flashfxp这个软件,这个功能功能齐全而且操作简单。大家可以先去下载一下这个软 件 2. 打开FTP,界面如下 3.我们要点击链接按钮,然后FT…

[贝聊科技]网页端「应用跳转」技术实现演变

本文作者:Mr.Luo ,贝聊前端经理。本文同时发布于作者 个人博客 。 由于网页传播的便捷性,从网页向APP导流几乎是所有APP厂商都会采用的推广手段,具体来说就是在网页上提供一些触发点(例如按钮、链接)&#…

Linux服务器配置---安装vsftpd

安装vsftpd 大多数Linux系统都使用vsftpd,因此这里我们也安装vsftpd 1、安装vsftpd [rootlocalhost phpMyAdmin]# yum install -y vsftpd Loaded plugins: fastestmirror, refresh-packagekit, security Installed: vsftpd.i686 0:2.2.2-11.el6_4.1 …

mysql怎么制作柱状图_从数据库中取出最近三十天的数据并生成柱状图

在终端用cd 命令进入文件目录说明:此处例子我是拿项目中的一个例子讲解的。1、新建一个项目 :用终端输入:zf create project Airline 格式:zf create action project project-name 备注:这些格式可以在终端输入zf 查看…

关于ES6的Promise

JavaScript的异步处理 提到JavaScript的异步处理,也许很多人和我一样想到利用回调函数。 例如: firstAsync(function(data){//处理得到的 data 数据//....secondAsync(function(data2){//处理得到的 data2 数据//....thirdAsync(function(data3){//处…

[转]我是如何走进黑客世界的?

*本文原创作者:MyselfExplorer;翻译编辑:楼兰,本文属FreeBuf原创奖励计划,未经许可禁止转载 我想给你一把打开这扇门的钥匙,而你要做的便是静静的聆听接下来的故事。挖掘 0day 一般需要掌握fuzzing&#xf…

Socket.io 深入理解

最近在做项目优化工作时,用到了Socket.io , Socket.io 文档比较少, 结合官网介绍以及自己在项目开发中的摸索,总结如下内容; Socket.io将Websocket和轮询 (Polling)机制以及其它的实时通信方式封装成了通用…

python填表_小Python填表得到d

我正在尝试使用Scrapy从网站自动下载数据。在我要做的是:使用我的凭据登录网站通过在“RIC”行中写入代码并选择感兴趣的时段来选择我想要的数据单击“获取数据”后,将生成.csv文件,我可以从“下载/”url下载该文件,其中我的所有文…

我理解中的“大前端”/“大无线”

本文内容较长,大概需要15分钟时间阅读。 内容包含五部分:前言,NodeJS职能变化,ReactNative的大规模应用,专门的架构组职能,总结。主要是介绍我所在团队最近的一些变化和思考。 更多信息可以加入我的小密圈关…

Dirichlet分布

1.预备知识 Beta分布函数是一种定义在实数区间[0,1]的特殊函数,它是二项式分布的共轭分布;与Beta分布相同,Dirichlet分布也是定义在实数区间[0,1]的概率度量函数,Dirichlet分布是多项式分布的共轭分布,Dirichlet分布的…

布局定位

布局与定位 摆放元素 1,使用流 流实际上就是浏览器在页面上摆放HTML元素所用的方法。浏览器从HTML文件最上面开始,从上到下沿着元素流逐个显示所遇到的各个元素。 每个块元素会按它在HTML标记中出现的顺序放置在页面上。每个新的块元素会带来一个换行。并…

python语言精通_Python语言基础从入门到精通

1、python关键字False await else import passNone break except in raiseTrue class finally is returnand continue for lambda tryas def from nonlocal whileassert del global not withasync elif if or yield2、命令行参数williamdeMBP-2:~ william$ python -c "imp…

FreeNAS:创建 CIFS 共享(权限)

第一部分:新建账户与指定数据集权限 简单起见,本教程主要介绍带基本身份验证的 CIFS 共享,即只有输入正确的用户名和密码才可以访问共享目录。关于创建匿名共享、多用户权限管理以及域控制器相关内容,我们会另外发布教程专门介绍。…

oracle日记账单据编号未生成_商管财务数据平台Oracle与共享未付池差异如何核对、解决?...

‍‍近期,总部新上线财务数据平台啦!各个系统间的差异异常数据清晰可见,随时可查,今天就和小伙伴们一起分享一下Oracle与共享未付池差异如何核对、解决。首先,将Oracle与共享未付池差异数据导出。由于导出的数据包括本…

android paint 圆角 绘制_[BOT] 一种android中实现“圆角矩形”的方法

内容简介文章介绍ImageView(方法也可以应用到其它View)圆角矩形(包括圆形)的一种实现方式,四个角可以分别指定为圆角。思路是利用“Xfermode Path”来进行Bitmap的裁剪。背景圆角矩形实现的方法应该很多,网上一大堆。很怀疑为啥安卓的控件不内置这样的属…

Cisco TrustSec(理解)

1、Cisco TrustSec的限制当指定了无效的设备ID时,受保护的访问凭据(Protected access credential,PAC)设置将失败并保持挂起状态。 即使在清除PAC并配置正确的设备ID和密码后,PAC仍然会失败。作为解决方法,…