本文结尾的好处是:云发展是什么样的经验?
跨端
一次,运行。
我们都听说过这个经典的宣传术语,后来我们都知道没有什么可以真正运行,充其量只能完成。
当我们谈论编写多端运行时,显然不可能真正意味着要跨越所有目的。在大多数情况下,您无需在计算机和手镯上同时开发功能。
与我们多样化的跨端需求相对应的是带有花朵花的跨端解决方案。
一百花的跨端解决方案
基于Web的H5解决方案
这种解决方案是最直接的,只需将其作为跨端的网页。由于我们的大多数终端(甚至封闭的迷你程序生态系统)都支持它,只需开发网页,然后将其发布到多个终端,然后在桌面终端上提供的相应解决方案。
为什么不直接使用网络?
就发展成本低,统一标准和生态繁荣而言,H5解决方案基本上是最佳选择。但是,这种解决方案很难避免性能和经验差距。网络的生态繁荣来自其良好的历史兼容性,也意味着重大的历史负担。
- /WEEX类解决方案
移动平台上的性能体验,尤其是早期,非常糟糕。我们前面提到,这一差距主要来自网络生态系统本身的重大历史负担。
- /WEEX之类的解决方案可以尽可能弥补优点和劣势,并结合Web生态系统和组件,以渲染执行代码后JS使用的组件。由于网络的历史负担被放弃了,因此可以通过急剧改变来制定这种解决方案。
例如,在下图中,RN将JS执行,布局(Yoga)和渲染(组件)分别分为三个过程,以避免JS执行复杂任务时接口口吃。通过放弃CSS中的大量标准,仅支持部分flex布局功能来降低布局和渲染复杂性。
该解决方案也有一些缺点:
最麻烦的是,该解决方案意味着很高的维护支持成本。
今天,当绩效差距逐渐缩小时,是否值得维持此复杂解决方案的ROI是否需要根据我们方案的特定要求来考虑。
要解决的问题与上述解决方案不同。我们根本不打算继续利用网络生态学的力量,自设计开始以来,我们就没有考虑网络生态学。与依赖视图渲染的RN相比,它是一个直接通过SKIA绘制到屏幕上的自画组件。
由于您可以充分利用GPU的功能,因此无需绕过它。从理论上讲,更好的性能和两端一致性意味着将来可能基于的JS动态方案可以比WEEX更好地支持风格。
从前端的角度来看,它仍然更像是开发解决方案,而不是跨端解决方案(尽管实际上是交叉/iOS)。目前的主要问题是,在技术原理方面,Web可能仍然远离生产可用性。此外,动态功能确实会使一些场景不适用。
小程序的研发框架
迷你程序是创建的问题。对于商业考虑,每个迷你程序都基于Web生态系统积极构建了一个相对封闭的生态系统。这导致与网络生态不相容。但是,很难接受多末端迷你程序或迷你程序和网络侧场景。
由于Mini程序的结束是关闭且无法控制的,因此要解决Mini计划的跨端问题,您通常只能从研发框架级别开始。
汇编时间方案
更知名的汇编时间解决方案是芋头。一般原理可以解释为将JSX编译为小程序的WXML/WXSS/JS。这种类型的框架的实现原则实际上不是类框架,而是看它。看起来JSX模板通过静态汇编将JSX模板转换为Mini程序自己的模板。
这样做的局限性非常明显,也就是说,JSX是一种扩展语言(博客是a to),而使用的WXML是一种模板语言,具有非常有限的表达功能。我们无法从编程语言的一般汇编到模板语言完成它。
为了实现这一目标,静态汇编框架采用了一种限制开发人员写作方法的方法,这就是为什么塔罗对JSX的写作方法进行了许多限制。这直接导致了无尽的维护成本和严重损害的开发经验,然后芋头/接下来也变成了运行时解决方案 +静态汇编优化的组合。
运行时解决方案
老实说,迷你程序的运行时解决方案应该是我写下第一个程序时提出的第一个程序。
通过(类似于RAX),我们可以允许在容器中运行的人直接操作DOM,而是通过传递给的视图层将操作数据映射到最终接口。
尽管解决方案(例如RAX运行时,Taro Next等)是不同的,但想法是相似的,即在一定程度上使用Mini 模板的动态功能 +类的框架呈现。当然,与本地渲染方法相比,这种方法具有某些性能损失。
支撑性能测试
在某些情况下,这种损失值得。这些运行时框架还通过允许未使用的属性,部分静态编译,虚拟列表等逐渐提高性能。在编译生成的模板中。
当然,最终嵌入仍然是解决方案。
作为一个商业技术团队,我们应该做什么
以上是针对某些特定情况的一些解决方案,但是对于商业技术团队来说,跨端的本质是提高效率。一方面,提出新的解决方案以提高效率并使我们的效率不会从一种新解决方案转向另一种解决方案更为重要。
让我们再次查看上图。可以证实的是,跨端需求和相应的解决方案仍将经常发生变化,并且将没有解决所有跨端问题的解决方案。相对不变的部分值得我们对长期稳定的投资。
&H5
它可能是许多容器中最特别的。尽管很难满足某些情况的最终性能和经验要求,但它将是最稳定,长期和支持的解决方案。
从未来的发展效率和长期维护发展的角度来看,在满足性能经验要求时,Web解决方案仍然是最优先考虑的问题。
同时,我们可以在应用程序的容器上进行更多工作,例如通过容器,通过结合功能,页面保存等实现的并行数据加载来提供一些末端功能。
基础设施
无论使用哪种跨端解决方案,在哪种容器,性能,稳定性和效率上都是三个不可避免的马。
表现
不同的解决方案通常具有不同的性能解决方案。我们还在上面提到的是,在小程序的运行时解决方案中,将有优化,例如减少汇编模板的输出。但是,实际上,除了优化该特定解决方案外,大多数优化方法都是相似的:离线缓存,数据预取,快照,SSR,NSR和其他解决方案。
对于不同的目的和容器,绩效问题的测量和发现也应保持一致。我们需要对不同目的的页面性能进行清晰的看法和水平比较。
性能的终端构建(最终功能,专门针对特定端的性能计算方案,绩效管理等)可能需要根据不同的目的和不同的跨端解决方案而不同。但是,性能基础架构(第一个屏幕标准,数据分析,基本优化功能)应在整个跨端相对稳定。
就端侧功能而言,冰岛使用容器通过协议的平行加载能力在早期引入了在WEEX性能优化中加载偏见的能力。然后在新的容器(和浏览器)中,尽管基本功能存在差异,但仍然可以识别相同的协议。
在数据收集和分析方面,我们统一了跨端基本库,因此可以根据相同的标准分析,测量和比较不同目的的不同技术解决方案。
稳定结构
在无线方面,我们经常将性能和稳定性称为“高可用性”。稳定性的范围主要涵盖灰度功能,业务监控,警报,错误监视,白屏检测等。
这些功能较少依赖于特定的端和跨端解决方案。除了端侧的数据采集逻辑略有差异外,其他构造部件相对稳定。该小组还针对这些情况有一些跨端解决方案,例如全面可用的解决方案。
工程基础设施
对于不同场景的跨端,尽管解决方案存在某些差异,但我们的工程基础设施可以统一地保持。
这样,当出现新的容器或解决方案时,我们只需要根据相应的功能对齐,以便我们的高级业务代码和开发经验可以保持相对稳定的状态。
商业逻辑跨端
相对而言,我们会发现,在多个跨端解决方案的发展中,UI级别的变化(例如如何渲染以及如何布局)远大于业务逻辑级别。即使是小计划及其粗暴的发展范式也没有太大变化。例如,开发范式非常相似,它也是声明性的UI,并且也存在。
鉴于SEO和以及基于SKIA的渲染模式本身的问题,对于Web来说,可能是在生产环境中可用的解决方案。
统一业务逻辑代码的组织后,我们可以通过所有解决方案与Web共享业务逻辑代码的副本。
有时您不需要真正运行它。您可以提高性能并保持一致性以实现目标。
查看层
目前,视图层的横端仍然充满了变量。在我们的业务逻辑层被足够雾化的跨端雾化之后,我们的某些交互式逻辑也许并不是特别沉重,无法查看可以通过DX + DX +参数方法绑定原子化逻辑 +数据的层。这将同时满足性能和绩效的要求。
但是,对于整个一般场景的景色,仍然没有银色子弹。
总结
总体而言,横端长期存在多个解决方案的共存状态和不断变化的状态。除了选择新的更改和新方案或创建合适的解决方案外,我们还必须在这种动态变化的长期稳定性方面做得很好:
招聘
阿里巴巴国际车站(冰岛)是世界上最大的跨境贸易和服务平台。我们始终面临新的技术挑战,足够有趣的挑战来满足您的所有好奇心和好奇心,并拥有一个众所周知的外国合作团队(&)。
团队招募前端// iOS/Java开发,并将其直接发送到电子邮件地址,以快速响应您的面试安排。
参考
[1]
云发展经验
6个高级课程
阿里巴巴云开发人员的成长计划可帮助开发人员通过真实的云环境,6种主要的业务场景和专业指导以及轻松掌握云技能来体验和学习云开发技术。开发人员独有的特殊云服务器,涵盖了多个流行产品,例如ECS等,以满足学习需求,从低至1元开始!