writeonce,runeverywhere
Android应用采用Java或Kotlin编写,iOS应用采用Objective-C或Swift编写,Web端采用HTML/CSS/JavaScript编写。当须要开发支持多端的应用,每一端都须要独立研发、测试,直到上线。
为了解决多端独立开发的问题,跨端技术备受青睐。前端当下需要处理的场景实在是太多,android、ios、pc、智能手表、车载、智能电视等,当某几个场景非常相似的时候,我们希望能够用最少的开发成本来达到最好的效果,而不是每个端都需要一套单独的人力来进行维护。那么在跨端方案百花齐放的今天,比如现在最为人们所熟知的reactnative、flutter、electron、weex、小程序等,他们之间有没有什么共同的特点,而我们又是否能够找到其中的本质,就是今天这篇文章想讲述的问题。一、主流跨端实现方案1、以Web为基础的H5Hybrid方案其实,浏览器本就是一个跨端实现方案,因为你只需要输入网址,就能在任何端的浏览器上打开你的网页。那么,如果我们把浏览器嵌入app中,再将地址栏等内容隐藏掉,是不是就能将我们的网页嵌入原生app了。而这个嵌入app的浏览器,我们把它称之为webview,所以只要某个端支持webview,那么它就能使用这种方案跨端。同时这也是开发成本最小的一种方案,因为这实际上就是在写前端界面,和我们开发普通的网页并没有太大区别。2、框架层+原生渲染方案典型的代表是react-native,它的开发语言选择了js,使用的语法和react完全一致,其实也可以说它就是react,这就是我们的框架层。而不同于一般react应用,它需要借助原生的能力来进行渲染,组件最终都会被渲染为原生组件,这可以给用户带来比较好的体验。3、框架层+自渲染引擎方案这种方案和上面的区别就是,它并没有直接借用原生能力去渲染组件,而是利用了更底层的渲染能力,自己去渲染组件。这种方式显然链路会比上述方案的链路跟短,那么性能也就会更好,同时在保证多端渲染一致性上也会比上一种方案更加可靠。这类框架的典型例子就是flutter。4、小程序跨端方案众所周知,在最近几年有一个东西变得非常火爆:小程序,现在许多大厂都开始入局小程序,不过现在小程序技术也不再是BAT的专属,市面上早已经推出小程序容器技术解决方案,当集成了小程序容器SDK之后,不论是iPhone,Android,Flutter,ReactNative,电脑、电视、车载或物联网设备,都能够让不同的应用或终端设备快速具备运行小程序的能力,而且同一个小程序场景可以分发到不同终端中运行,不需要针对不同终端编写不同代码,这类小程序容器技术可以借鉴一下FinClip。二、有哪些常见跨端场景跨PC端。例如跨WindowsLinuxMacos跨多Native平台:例如跨Android和iOS跨投放APP:随着超级APP越来越多,很多业务需要在多个APP中投放同一个业务场景。跨Web、小程序、QuickApp等:其实本来类似跨APP,但是奈何小程序本身是各家控制的封闭生态,故而有了开发一次适配到多种封闭生态的诉求。三、跨端技术方案选型跨端技术方案,所