颤振:好的、坏的和丑陋的

创造了我的第一个应用程序使用颤振,我权衡技术的利弊对其他大型跨平台开发的竞争者——本地的反应

这是我开发的应用程序来与颤振实验,小故事。这是一个童话故事的音频播放器,内容包括和一些专门的功能。前三个屏幕从Android版本与黑暗的主题,而那些正在运行iOS光主题。
  1. 最后发布的主题像素级的iOS应用程序(虽然以前主要是关注Android的材料设计)。
  2. 注意应用的减少包的尺寸,最小的Android应用程序现在只有4.7 mb当建于释放模式。
  3. 颤振,开源以来,进入前50名的名单最活跃在GitHub回购。
  4. 一些大公司正在使用它,比如阿里巴巴(安卓,iOS)、腾讯(安卓,iOS)和谷歌广告(安卓,iOS)。也有一段视频在阿里巴巴如何使用颤振建立其项羽应用(安卓,iOS),目前在中国5000万多个客户使用。
  5. 这个图表显示了颤振是得到很多动力堆栈溢出:

颤振是什么,它做什么?

  1. 这是一个开源软件开发工具包(SDK),由谷歌开发,快速构建iOS和Android应用程序,分享大部分的代码。它的工作原理与Android和iOS sdk,这也意味着你还需要一个iOS macOS机器制造(就像你反应本地和Xamarin的)。安装Android非常光滑的对我来说,我只是跟着网站上的说明和使用颤振的医生的命令,但我最初与iOS设置有一些问题。这篇文章通过Laxman萨尼帮助设置正确。
  2. 它使用飞镖的编程语言也由谷歌开发的。是的,学习另一种语言,但别担心,这是超级简单如果你熟悉Java, JS,芬兰湾的科特林,迅速或c#。
  3. 应用程序提前编译为本地代码在运行时,而不是在本地的反应。这给了因为有更好的性能没有JS桥在中间来解析和执行代码。但是这也意味着没有无线更新选项通过下载一个新的束JS代码在运行时。
  4. 而不是一个包装器上的iOS和android原生UI组件(本地和Xamarin的反应做什么),真的”屏幕上的吸引UI从头帆布的通过快速c++ 2 d图形库Skia(这也是Google Chrome的图形引擎,Chrome OS, Android, Mozilla Firefox和Firefox操作系统,和许多其他产品)。Skia项目始于1996年2005年被谷歌收购,虽然在BSD许可下发布,任何人都可以使用它。这巨大的后果——我讲下面的利弊。
  5. 类似于本机反应,颤振是也基于单向数据流的架构,或反应性编程短暂,但很明显这里介绍的通过伊丽莎白Denhup。用更少的话说,应用程序对用户输入的响应通过改变变量/属性(或更一般,屏幕的“状态”或视图),和UI是按照国家新重新呈现。函数不改变UI(的颜色按钮,文本的标签,一个列表的内容,等等),直接。
  6. 再次,同样反应本地,有热重载(感谢上帝)。你只是改变一些事情在代码编辑器中,保存,iOS和Android上的UI刷新emu或sim卡。方便和快速,很难回到一旦你不妨试一下,它弥补了事实,以编程方式创建UI,因此没有可视化编辑器。
  7. 颤振是可扩展与第三方插件添加新custom-drawn UI组件或包装特定于平台的特性所覆盖的内置类(如:视频/音频、货币化、存储、相机、增强现实、机器学习等)。这是最好的收集插件我发现。有很多,但不可能需要。
  8. 与前面的点,颤振相对容易编写特定于平台的代码通过检查后执行不同的代码Platform.isIOSPlatform.isAndroid(如果有区别的UI小部件要实例化,或逻辑.dart文件),或者通过编写自己的本地插件(如果你真的需要包装特定于平台的功能不颤振已经提供的)。
  9. 也链接到7点,典型的应用程序的性能不应成为一个问题(至少在发布模式下,调试模式明显慢,因为它使用一个虚拟机运行飞镖代码),作为UI是由一个快速低级c++写的自由,和其他功能映射到本地同行。但是,你必须这样做,通过最小化重绘的数量和重绘实际上只有部分取决于改变状态。指这篇文章通过安德里亚Bizzotto这另一个通过西蒙•莱特福特了解更多。
  10. 可以使用任何文本编辑器颤振命令编写和构建应用程序,但是推荐的方法是使用一个编辑器,它支持颤振插件,即Android工作室(我的选择),VS代码或易达利J。这使您智能感知,自动完成,一些调试工具和备件,您需要使用命令行编译和运行应用程序。
样例颤振画廊应用,它展示了许多Android和iOS UI组件。

良好的

你知道这部电影的好的,坏的和丑陋的的,对吧?
  1. 这一事实颤振是自己的界面图而不是一个包装特定于平台的本机组件既有优点和缺点。pro是如果一些以某种方式呈现您的测试iPhone与iOS 12,例如,它应该以完全相同的方式呈现,不仅其他iOS版本还在Android手机吗。本机或Xamarin的反应,UI组件有许多属性仅支持在一个平台或其他,或者他们但翻译以稍微不同的方式支持本地同行在幕后。这意味着你要么需要测试大量的设备和操作系统版本(和可能编写特定于平台的代码来解决某些情况下),或者只是知道它看起来破碎的(或者至少不同的对一些用户来说)。应用程序甚至可能崩溃如果你使用一个属性或功能,不支持在一个特定的操作系统版本。与颤振你会更安全(至少对于UI应用程序的一部分)。你仍然应该检查应用程序在多个设备,特别是如果你使用第三方插件,映射到底层平台的本机组件。将这种情况如果你使用音频/视频、推送通知,应用内计费等)。这种方法的消极的一面是覆盖在本文的下一部分。
  2. 热重载太有用,这是一个开发者的梦想成真:⌘+ S在编辑器中,和应用程序重新加载在sim秒!再见的构建/等待/运行/等待/测试/重新开始无休止的过程。在现实中你仍然需要重建资产和插件,当你改变改变在导航,状态初始化或逻辑,但大多数UI更改应用立即在应用程序运行时。对于应用大量的用户界面,这就是你把大部分的时间。
  3. 我喜欢的总体原则小的可重用组件,对“国家”的变化,这也是反应和反应的原生的核心思想。活性应用程序也可以在纯iOS和Android开发的发展当然,但它是更容易和更自然的摆动(RN)。这是因为它的的核心技术,而不是由第三方提供的东西libs和在许多不同的方式来实现。
  4. 飞镖是简单但强大的和完整的语言,类似于迅速、芬兰湾的科特林或Java。异步编程与异步/等待/未来是一个微风,也感到完整和一致的(我不能说相同的JavaScript)。
  5. 颤振和飞镖的内置支持单元测试逻辑,小部件测试对于UI /交互。例如,您可以发送丝锥和滚动姿态,发现孩子在小部件树小部件,阅读文本,并确认小部件属性的值是正确的。的官方文档做一份好工作,清楚地展示什么是可用的。这篇文章通过德文郡卡鲁显示了颤振插件使其融入你的所有代码编辑器。
  6. 我爱内置支持主题应用程序的UI的方方面面。最困难的部分在我的应用程序创建光明与黑暗的主题实际上是选择正确的颜色(我创建了两个,但可以用同样的方法创建了10)。的代码,它只是几行(基本设置主题财产的根MaterialApp对象-看到了一个完整的例子)。

不太好的

也从电影…真的,如果你还没有看。(或者我只是老了,你还太小,不喜欢这些东西,谁知道呢)。
  1. 正如前面提到的几次了,颤振描绘自己的UI定制方式,它不会创建本地组件。它确实很好地复制Android的材料设计和iOS-specific组件的库比蒂诺库但还不是本机。这有一些影响,如:
    (A)如果iOS 13改变了分段控制或UISwitch呈现,你的颤振应用程序使用CupertinoSegmentedControl或CupertinoSwitch留着旧会直到你更新和重建颤振。可以认为,许多用户不关心(我的大多数non-techy朋友不关心,甚至不会注意到,例如,他们只关心应用程序看起来很足够,而不是是否符合操作系统100%的纯外观和感觉),但它可能是一个血色交易如果你是个纯粹主义者。
    (B)如果您计划使用颤振的一个现有的应用程序(这是覆盖在颤动的wiki,在这里在一篇文章中,Tomek Polański,在这里在一篇文章中,Jan Reehuis),你可能会看到一个本机部分和颤振部分之间的区别。这可能麻烦你(和你的用户)。更少的新应用100%的问题当然颤振。
    (C)为你让事情尽可能简单开发,并假设用户不关心本地的应用程序,你可以使用MaterialApp(使用材料设计组件)和Android和iOS编译它。它就能顺利,尽管非外观,它实际上是为我的应用程序。如果我所做的,相反,你关心这个,决定使用MaterialAppAndroid和CupertinoAppiOS,你会复制大多数(如果不是全部的话)UI的代码(这可以是一个相当大的应用程序的一部分),你会使结构更加复杂。仔细考虑这个,决定是否这将是值得的。
  2. 这是一个不错的漂亮的列表UI组件和其他插件GitHub上,但这是没有丰富的插件可以找到本地甚至Xamarin的反应。可能只是因为颤振远新,较小的社区,但事情就是这样。选择是有限的,许多插件都老了,没有维护,也许甚至不工作了与当前飞镖/颤振的版本。一些组件(尤其是非ui,地图特定于平台的特性)只有对iOS和Android,但不能两者兼得(通常他们支持Android,因为Android开发者更倾向于比iOS开发者,颤振颤振以来来自Google)。没错但是填写空白和编写特定于平台的代码只是为了丢失的平台仍比从零开始,事情肯定会提高如果颤动持续变得越来越流行。
  3. 调试并不是最好的。您可以使用打印/debugPrint语句,查看日志,并使用工具来配置CPU /内存或视图层次结构的可视化,但是我们在不同的行星相比,你做什么在Xcode中或Android工作室使用原生sdk。(更多关于你的选择的这里的官方文档。)
    修正:许多人报道,这个观点是不正确的,您可以使用断点,单步调试的代码并检查变量值就像Java /芬兰湾的科特林Android。这适用于Android工作室和VSCode。好消息,)
  4. 屏幕或错误日志,当有一个布局错误(或下级别的东西)可以非常混乱和模糊,因为它指向的某些行代码框架,可能是你们很多的抽象级别低于直接相互作用。本机iOS和Android,错误通常是更清晰的理解,,如果不是,你通常可以复制和粘贴完整的错误在谷歌和合理相信你会得到一个有用的链接列表,告诉你更多。与颤振,因为社区仍然相对较小,并非如此。
  5. 以编程方式创建UI(在同一个屏幕.dart文件代码)是容易的和直接的。这也意味着没有太多分离。我更愿意创建UI标记代码(类似于原生Android应用程序)你做什么在单独的文件中。
  6. 在Android上,绝大多数的开发人员使用干净的架构和MVP (model-view-presenter)。在iOS, MVC, MVVM (model-view-viewmodel)或毒蛇。在这两种情况下(但更多的Android)有明确的和众所周知的架构模式已被证明适合大型应用程序。对颤振(本地)反应,感觉一切都还在定义,没有“标准”或“已成为举世公认的真理”建筑的方法。所有的文章显示简单的样品,这是正常的,因为他们仍然需要人们机载前讨论更高级的方面。然而,如果你计划使用颤振对于一个相当大的项目,这将是比有一个清晰的想法如何构建它,所以它是可伸缩的,容易维护随着应用程序的增长的规模和复杂性。我强烈推荐看这个视频从布莱恩·伊根开始深入这个(包括分层代码,回来的和测试),并检查了他样品在GitHub上。我也推荐这个篇关于溪流和RxDart通过迪迪埃Boelens和其他文章对回来的整体建筑评论。再一次,我绝对不是说颤振不允许您构建应用程序用干净的和可维护的架构,但是会有一些试验/错误/实验/研究,因为它不是一样成熟和广泛使用的我们习惯了在本地iOS和Android应用程序。

结论

  1. 你必须尽快到达最广泛的用户群可能——说白手起家创业,想释放的平台。看看在一个或两个牵引,然后投入更多,波兰等。你可以认为这是一个非常先进的原型,它可以进一步抛光后仍然保持在颤振或取而代之的是本地版本和一个专门的团队。
  2. UI并不是最大的问题——例如企业/ B2B应用程序,你想要一个业务线应用程序,员工/客户可以使用任何类型的设备,但不太关注它在操作系统符合一切生态系统。这是Groupon的商人(但不是最终用户)的应用程序,例如。

- - -

- - -

得到了媒介的应用betway娱乐官网

一个按钮“App Store下载”说,如果点击它会使你的iOS应用程序商店
说一个按钮上,谷歌玩,如果点击它会使你的谷歌商店
Baidu