热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

认识Flutter

更新Flutter中文论坛上线啦,包含大家各种踩坑心得,是学习交友的必备网站,欢迎大家注册加入!Flutter框架Flutt
更新

Flutter中文论坛 上线啦,包含大家各种踩坑心得,是学习交友的必备网站,欢迎大家注册加入!

Flutter框架

Flutter框架,一言以蔽之就是能够使用一套相同的Dart语言代码同时实现android和ios跨平台应用的框架,同时兼备高性能和快速开发。

跨平台框架

跨平台应用的框架,眼下相似的轮子也有很多例如:Phonegap,Xamarin,大热的react native,还有weex等等,这里有一篇好文就比较详尽的介绍了目前各种技术优缺点,包括这里安利的Flutter框架(这货之前叫Sky)传送门。
目前比较流行的跨平台技术主要有HTML5和react native(欢迎补充),虽然HTML5足够灵活,但是移动端网页的性能始终不如人意,用户体验不高,在不同浏览器下也有不同程度细微的差异;而react native刚好在性能和灵活性上达到了一个平衡,但对于只撸前端的同学,要灵活运用这个框架,也有相当的难度。
假设你已经阅读过上面的文章,Flutter有一个特点就是UI是自绘的并不依赖系统提供的控件,那跟浏览器有啥区别尼,没错你确实可以把它当成一个简化版的浏览器,刚才文章也提到代码组织有Chromium风格,个人粗略学习后分析,在某些概念上都跟Chromium如出一辙。
请看图,来自官网的视频:
Layout Design

来自Chromium,传送门
图片描述

上图的Element可以和下图的div,p等对应起来,所以Element左边Rectangle green就是我们平常基于div+css构建的组件,右边Render Rectangle green 可以和下图 Render Object对应起来。Render Layer层上图虽然没有体现,但在框架代码里确实也有这样的存在。

继续深入

好继续接着说,自绘UI有好处也有弊端,好处就是能够最大限度在android和ios上统一UI,这样就不单止在业务代码上统一,用户体验也能统一(什么?产品说要显示出不同平台的差异性,框架的开发者早就想到了,所以demo里面也提供一键切换android和ios的示例);弊端,没有利用系统提供的组件,基本只能自力更生了,幸好框架也提供了一套基础组件,能够满足一些简单的页面需求,这些组件当然也是有坑的啦,毕竟没有相当严谨的测试。
再说说框架的其他方面,主要的开发语言就是Dart,Dart曾经有一个宏伟的目标就是取代JS,但是很可惜失败了,也渐渐消失在人们的记忆中,但是为啥要挖出这样非主流的语言作为这个框架开发的主力语言,其实我也不知道为啥,可能那群大神不死心吧,明明那么好的语言。不过尼,作为目标替代JS的语言,Dart设计更加严谨(JS好像是十天就造出来的),从一开始时就考虑很多使用场景(浏览器,服务端,移动端),基本就像java一样的泛用型语言(JS是后天不停加buff),所以能构建更为稳定可靠的应用。对于前端和android的同学,这门语言的学习成本其实并不高,大概一两周就能掌握。
框架的开发体验,框架是受到react的启发,构建组件的代码方式也有react的风格(前端的同学看看),但这并不是重点,重点是开发时支持hot reload(足矣),不过也有不足,并不支持jsx,UI比较复杂的话,代码就太难看了,以后应该会有改进。

性能与兼容性

目前框架的性能,已经无限接近原生,这是个人的使用感受,之后再补上视频和体验的demo。
兼容性方面,官网提到是android 4.1以上 和 ios8以上,这还需要进一步验证

框架以外

再说说项目本身,是相当有节操的,应该并不是玩票性质,个人观察这项目有一段时间,开发者几乎在不停持续的commit,每次跑demo都能看到比较明显的改进(这也是让我一直观察的动力),提出的问题一般当天就有回复(好像项目上还有1000多的问题还是打开着,哈哈)但是这个项目真的关注度相当低,对比RN低的可怜。
好吧,为啥今天才发文章安利,因为看到它终于支持Windows了(其实我也不知道他们啥时候搞出来),之前只能在mac,linux下体验,现在也提供idea的插件,非常方便调试和开发(之前是atom,真的卡的不行)。

再水一下

个人认为,如果你是前端,还没有接触react native或者已经接触过,都不妨体验一下这个框架,另外研究这个框架的代码也是很有价值,框架已经把layout,paint,composite,事件如何传递的过程都呈现给我们,这是我们前端很少接触到。So,最后当然还有一个安利,如果你对框架有兴趣,请务必加入我们的一个小群qq:482462550。
如有错漏,欢迎指正。



推荐阅读
  •  HybridApp在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java、Object-C、C#等语言,还是 ... [详细]
  • 本文详细介绍了如何在现有的Android Studio项目中集成JNI(Java Native Interface),包括下载必要的NDK和构建工具,配置CMakeLists.txt文件,以及编写和调用JNI函数的具体步骤。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 本文详细介绍了Java库中`com.ait.tooling.nativetools.client.collection.NFastArrayList`类的构造函数`()`的使用方法,并提供了多个实际应用中的代码示例,帮助开发者更好地理解和使用这一高效的数据结构。 ... [详细]
  • Web App vs Native App:未来的移动应用趋势
    随着移动互联网的发展,Web App和Native App之间的竞争日益激烈。对于开发者而言,选择哪一种技术路径更为明智?本文将深入探讨两种应用模式的特点及未来趋势。 ... [详细]
  • 本文详细解析了Java编程语言中的浅克隆和深克隆概念,通过实例代码演示了两者的区别与应用场景,帮助开发者更好地理解和使用对象克隆技术。 ... [详细]
  • 本文探讨了Java 9中StackWalking API的一个特性——StackWalker.Option.SHOW_HIDDEN_FRAMES。通过实例分析,揭示了该选项在不同场景下的具体表现及其重要性。 ... [详细]
  • 一、使用HTML5构建移动应用世界正在走向移动化,每天都有数百万部智能手机被激活。因此,为消 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • Java 架构:深入理解 JDK 动态代理机制
    代理模式是 Java 中常用的设计模式之一,其核心在于代理类与委托类共享相同的接口。代理类主要用于为委托类提供预处理、过滤、转发及后处理等功能,以增强或改变原有功能的行为。 ... [详细]
  • 本文详细记录了一次 HBase RegionServer 异常宕机的情况,包括具体的错误信息和可能的原因分析。通过此案例,探讨了如何有效诊断并解决 HBase 中常见的 RegionServer 挂起问题。 ... [详细]
  • jmessage-chenyuJmessageNative为极光IM即时通讯写的ionic2、3写的调用方式安装安装插件cordovapluginaddjmessage-phone ... [详细]
  • html移动端源码,Framework7 (HTML 移动端框架) v4.1.0
    Framework7(HTML移动端框架)简介Framework7或者叫F7是全功能的绑定iOS7应用的HTML框架。Framework7是免费开源的HTML移动端框架࿰ ... [详细]
  • 送给设计师们的礼物:10个网站提高你的创意理念
    MyModernMetropolis,这个是我很喜欢的一个网站,细心的朋友会发现DDDesign有一部分文章是来自这里,如果你寻找创意灵感,这个也许是个很好的开始。2.FFFFou ... [详细]
  • PhoneGap 介绍
    一、PhoneGap是什么1、PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发框架。2、它使开发者能够利用iPhone,A ... [详细]
author-avatar
蔡佩琬62777
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有