跨平台开发框架 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,一经查实,立即删除!

相关文章

linux ubuntu 关于vim得一些基本命令

1.vim显示行号 :set number 2. 快捷键 J 向下 K 往上 H 向左 L 向右 ctrlshiftT  打开新窗口 ctrlPage Down 所有vim窗口向下切换 ctrlPage Up 所有vim窗口向上切换 3. 复制vim打开的内容 yy 复制光标所在行 2yy 复制光标所在行往下的两行 ....…

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

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

使用Servlet 3.0,Redis / Jedis和CDI的简单CRUD –第2部分

在本文中,我们将重点介绍CDI和Servlet 3.0。 您可以在此处看到第1部分。 让我们从CDI开始。 当我开始撰写源自该系列的文章时,我并没有考虑撰写CDI。 真诚地说,我以前从未使用过。 这篇文章的想法是使用jedis和servlet创建一个对象。 但是&a…

Safari支持Service Worker,PWA还有多久爆发?

作者 | 彭星 编辑 | 尾尾 在之前的文章《PWA 将带来新一轮大前端技术洗牌?》中,我们回顾了 Web 在移动时代遭遇的两大枷锁,并就PWA是否能真正弥补 Web 劣势进行了分析,同时,提出“根据当前的发展趋势,PWA…

安装python3 及virtual与virtualenvwrapper

安装python3 下载python源码包 网址:https://www.python.org/downloads/release/python-362/ 下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz 安装python前的库环境,非常重要 yum install gcc patch libffi-devel py…

响应式设计与前端工程性

一:响应式的几个基本知识 字体选择 有衬线和无衬线,那种字体看自己的美学意识和考虑 透视比例与体验一致性保证(人眼的位置) 行高,字体大小,间距,要根据整个展示范围的透视比例合理的去规划pc 离…

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

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

在WildFly中将Apache Camel和Spring添加为jboss模块

这些天,我在玩Wildfly , Apache Camel和Spring 。 在EAR / WAR之间进行通信的一种简单方法是使用Camel的direct-vm组件。 有或没有骆驼,有很多方法可以实现这一目标。 骆驼在WildFly中就像一个饰物,不需要任何额外的配置。 骆驼很…

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

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

php mysql无限分类排序_PHP 无限级分类、排序

lyk625358header(content-type:text/html;charsetutf-8);echo "";//-无限级排序,自己优化改良的,清除上次调用此函数后留下的静态变量的值$arr array(array(id>2,cname>分类2,parent_id>1),array(id>9,cname>分类9,parent_id>8),array(id>1,cn…

Java方法中的参数太多,第5部分:方法命名

在上一篇文章 (有关处理Java方法中过多参数的系列文章的 第4部分 )中,我将方法重载视为一种向客户提供需要较少参数的方法版本或构造函数的方法。 我描述了该方法的一些缺点,并建议从方法重载中摆脱出来以使用不同名称的方法至少可…

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

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

LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置

1、题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。 示例 1: 输入: nums [5,7,7,8,8,10], targ…

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

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

vue动态生成下拉框_vue+elementui 动态创建下拉框

v-for"(domain, index) in dynamicValidateForm.domains":label"‘站点‘ index":key"domain.id">v-for"item in testData":key"item.id":label"item.testName":value"item.id":disabled"item…

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

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

常见Java错误的十大列表(前100名!)

前10名名单非常受欢迎,有趣且内容丰富。 但是有很多! 如何选择合适的? 这是一个元前10名列表,可帮助您找到前10名的前10名列表。 在更令人讨厌的笔记上: SELECT TOP 10 mistake FROM source1 UNION ALL SELECT TOP 10…

Ubuntu 16.04 下octave的使用入门

SciLab和octave是开源的且免费的矩阵计算工具,二者都有希望成为矩阵计算的新宠。相比之下, octave与MatLab的兼容性更高。octave遵循GPL协议(GNU General Public License),用户可以单独发行octave或者包含在其产品中发…

hydra mysql 爆破_Hydra(爆破神器)使用方法

文本框 textarea 动态显示行数(简单文本编辑器)工作需求做一个文本编辑器简单的. 右边输入文字,左边会显示相应的代码行.清空也会变为1. 废话不多说上代码,自己理解. python中set使用In [2]: a set() # 常用操作1 In [3]: a Out[3]: set() In [4]: type(a) Out[4]: set In [5]…

消除switch语句以获得更好的代码结构

消除switch语句以获得更好的代码结构 代码演化1:纯switch function counter(state 0, action) {switch (action.type) {case INCREMENT:return state 1case DECREMENT:return state - 1default:return state} }用三元运算符代替 const counter (state 0, ac…