flutter前言,简书 flutter

跨平台技术;H5和Flutter谁是未来?

前言

我们提供的服务有:网站建设、成都网站制作、微信公众号开发、网站优化、网站认证、酒泉ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的酒泉网站制作公司

为什么跨平台是发展趋势?

同一个应用,各个“端”独立开发,不仅开发周期长,而且人员成本高。同时,作为技术人员,也不应该满足于这种重复、低能的工作状态。在这样的形势下,跨平台的技术方案也受到越来越多人和企业的关注。

本篇文章我将从原理、优缺点等方面为大家分享跨平台技术

一. H5

说到跨平台,没人不知道H5。不管是在Mac、Windows、Linux、iOS、Android还是其他平台,只要给一个浏览器,连“月球”上它都能跑。

1.浏览器架构

下面,我们来看看让H5如此横行霸道的浏览器的架构:

浏览器由以上7个部分组成,而“渲染引擎”是性能优化的重中之重,一起了解其中的渲染原理。

2.渲染引擎原理

不同的浏览器内核不同,渲染过程会不太一样,但主要流程还是一致的。

分为下面6步骤:

从以上6步,我们可以总结渲染优化的要点:

以上就是浏览器端的内容。但H5作为跨平台技术的载体,是如何与不同平台的App进行交互的呢?这时候JSBridge就该出场了。

3.JSBridge原理

JSBridge,顾名思义,是JS和Native之间的桥梁,用来进行JS和Native之间的通信。

通信分为以下两个维度:

那么App内加载H5的过程是什么样的呢?

4.App打开H5过程

打开H5分为4个阶段:

这四步,对应的过程如上图所以,我们可以针对性的做性能优化。

5.优缺点分析

下面,我们进行H5的优缺点分析:

优点

缺点

虽然H5目前还存在不足,但随着PWA、WebAssembly等技术的进步,相信H5在未来能够得到越来也好的发展。

二.小程序

2018年是微信小程序飞速发展的一年,19年,各大厂商快速跟进,已经有了很大的影响力。下面,我们以微信小程序为例,分析小程序的技术架构。

小程序跟H5一样,也是基于Webview实现。但它包含View视图层、App Service逻辑层两部分,分别独立运行在各自的WebView线程中。

1.View

可以理解为h5的页面,提供UI渲染。由WAWebview.js来提供底层的功能,具体如下:

每个窗口都有一个独立的WebView进程,因此微信限制不能打开超过5个层级的页面来保障用户体验。

2. App Service

提供逻辑处理、数据请求、接口调用。由WAService.js来提供底层的功能,具体如下:

运行环境:

仅有一个WebView进程

3.View App Service通信

视图层和逻辑层通过系统层的JSBridage进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层将触发的事件通知到逻辑层进行业务处理。

4. 优缺点分析

优点

缺点

既然WebView性能不佳,那有没有更好的方案呢?下面我们看看React Native。

三.React Native

RN的理念是在不同平台上编写基于React的代码,实现Learn once, write anywhere。

Virtual DOM在内存中,可以通过不同的渲染引擎生成不同平台下的UI,JS和Native之间通过Bridge通信

1.React Native 工作原理

在 React 框架中,JSX 源码通过 React 框架最终渲染到了浏览器的真实 DOM 中,而在 React Native 框架中,JSX 源码通过 React Native 框架编译后,与Native原生的UI组件进行映射,用原生代替DOM元素来渲染,在UI渲染上非常接近Native App。

2.React Native 与Native平台通信

3.优缺点分析

优点

缺点

4.RN展望

虽然RN还存在不足,但RN新版本已经做了如下改进,并且RN团队也在积极准备大版本重构,能否成为开发者们所信赖的跨平台方案,让我们拭目以待。

既然React Native在渲染方面还摆脱不了原生,那有没有一种方案是直接操控GPU,自制引擎渲染呢,我们终于迎来了Flutter!

四.Flutter

Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件。渲染引擎依靠跨平台的Skia图形库来实现,依赖系统的只有图形绘制相关的接口,可以在最大程度上保证不同平台、不同设备的体验一致性,逻辑处理使用支持AOT的Dart语言,执行效率也比JavaScript高得多。

1.Flutter架构原理

2.Dart优势

很多人会好奇,为什么Flutter要用Dart,而不是用JavaScript开发,这里列下Dart的优势

3.优缺点分析

优点

缺点

Flutter状态管理--GetX的简单使用

一、前言

Flutter开发,就需要对各种状态的管理,就是在请求数据的时候需要实时变化,各种交互变化等,在没有使用GetX之前使用Provider,用Provider的时候觉得真香,挺方便的,需要刷新的时候直接 notifyListeners(); 用了GetX之后觉得Provider太繁琐了。这边介绍下GetX的使用以及常用的方法。

二、 GetX

GetX 是 Flutter 上的一个轻量且强大的解决方案:高性能的状态管理、智能的依赖注入和便捷的路由管理。

1、相关优势:

三、使用

1、第一步 引入get

2、第二步

修改入口、配置路由

3、路由

Routes类

Pages类

4、状态管理

我一般一个page对应一个controller, controller来处理逻辑,控制page.

简单使用

5、依赖注入

依赖注入也是我喜欢的,可以减少很多工作。

第一步

第二步

6、跨页面交互

7、黑暗模式

可以参考前期写的博客。 黑暗模式的适配

看我如何使用Flutter开发一款盯盘小工具

前言

最近街边讨论买基金大佬们又多起来了,一些技术交流群也时不时看到某某某大佬在讨论股票,看来最近行情很好啊,虽然我不懂交易,但我总觉得可以做些什么来弥补我的不足,于是有了接下来要跟大家分享的“盯盘小工具”。

准备开干

那么接下来我的目标是开发一款PC端的桌面盯盘小工具,特点首先就是小、方便整天盯着电脑屏幕的白领们打开瞧瞧,省去费事各种操作;然后就是无需关注太多费脑筋的指标,所以能够显示名称和涨跌幅即可。有的上面的需求后,那就可以开始搬砖了,但是对于我这种只懂点Android皮毛又没做过桌面应用的人来说,简直是比登天还难,那该咋办?在夜深人静时,我恍然想起了Flutter,没错先来一张图:

还记得当时看Flutter的时候还是1.2版本,如今回过头来看,已经不是曾经那个Flutter了。

搬砖

为了实现这个小小的业余需求并且又能学习Flutter,于是我白天下班回来又开始不同场景不同程序语言的搬砖,重新安装了Flutter的最新开发环境,重新学习Flutter开发-万物皆widget。

功夫不负有心人

效果图展示

当前为最初版本,很多功能还不够完善,后续目标就是完善及优化,

GitHub项目地址:

致谢

为了实现这个小小的业余需求并且又能学习Flutter,我也参考了很多Flutter大佬的开源项目,在此感谢所有优秀的开源项目 _ 。

React Native Mac版环境配置

Mac环境下RN的安装之路:

前言:之前安装了Flutter环境,准备Flutter之路。。现在又准备安装一下React native环境配置... Mac终端源为~zsh

RN中文网 -- ( )里面看一下Mac的环境安装步骤

一、安装node

然后尝试着运行下 node -v 看看是否安装成功,并没有安装成功。

运行了一下 brew -v 查看了一下版本,是一两个月前的版本号,抱着试试的态度,brew update 升级一下版本号。

现在版本号为

然后再次运行 brew install node, 等待一会安装完毕,没有再报错 Error信息。

node -v 查看一下node的版本信息

二、 安装Watchman ( Watchman -- ( )则是由 Facebook 提供的监视文件系统变更的工具。安装此工具可以提高开发时的性能(packager 可以快速捕捉文件的变化从而实现实时刷新)。

(因为笔者是iOS开发,所以Xcode 和 Simulator都已经安装过了)

三、安装React Native的命令行工具(react-native-cli)

终端运行 rect-natice init MyApp 创建一个项目名为MyApp的项目,这一步第一次运行初始化需要一段时间,稍微等一下, 这里初始化后的目录直接是用户下目录了。我们可以cd到桌面你自己创建的某个目录,然后执行这段 init 命令

这里项目就初始化好了。

然后cd 到你的MyApp目录下,npm run ios(官网教程用yarn替代的 npm命令,我这边安装速度还好,就没有替换)

这里出现了一堆报错信息, 看到有个error是,项目中有Podfile,但是没有运行pod install,这里我们cd 到项目中ios目录下,运行pod install试试。

然后等待pod 安装完毕,这里等会可以直接用xcode启动APP尝试一下。

443 error了若干次、、经过一个多小时蛮长等待......

出现这个界面。下面就通过Xcode MyApp.xcworkspace 点击运行尝试一下

编译过程又几分钟、有种巨型组件项目既视感,千呼万唤始出来!!

然后我们在尝试一下刚刚无法完成的命令启动,cd 到项目目录

react-native run-ios

虽然警告很多、虽然模拟器启动的是iPhone11. 但总归成功启动官方默认项目了

以下就是react native环境安装及官方示例项目启动过程了。下一篇会记录一下,在现有原生项目添加 react native组件。

附:

vs code打开的话, App.js 还是有几个报错。这个目前还不知道原因

百度了一下,看有人说在setting.json 加入这句话 "javascript.validate.enable": false 即可,貌似加入后也不报错了。

优美词句大全

衣带渐宽终不悔,为伊消得人憔悴。-柳永《凤栖梧》

2死生契阔,与子成说。执子之手,与子偕老。-佚名《诗经邶风击鼓》

3两情若是久长时,又岂在朝朝暮暮。-秦观《鹊桥仙》

4相思相见知何日?此时此夜难为情。-李白《三五七言》

5有美人兮,见之不忘,一日不见兮,思之如狂。-佚名《凤求凰琴歌》

6这次我离开你,是风,是雨,是夜晚;你笑了笑,我摆一摆手,一条寂寞的路便展向两头了。-郑愁予《赋别》

7入我相思门,知我相思苦,长相思兮长相忆,短相思兮无穷极。-李白《三五七言》

8曾经沧海难为水,除却巫山不是云。-元稹《离思五首其四》

9君若扬路尘,妾若浊水泥,浮沈各异势,会合何时谐?-曹植《明月上高楼》

10凄凉别后两应同,最是不胜清怨月明中。-纳兰性德《虞美人》

11还君明珠双泪垂,恨不相逢未嫁时。-张籍《节妇吟》

12如何让你遇见我,在我最美丽的时刻。为这,我已在佛前求了五百年,求他让我们结一段尘缘。-席慕蓉《一棵开花的树》

13嗟余只影系人间,如何同生不同死?-陈衡恪《题春绮遗像》

14相思树底说相思,思君恨君君不知。-梁启超《台湾竹枝词》

15自君之出矣,明镜暗不治。思君如流水,何有穷已时。-徐干《室思》

16相见争如不见,有情何似无情。-司马光《西江月》

17落红不是无情物,化作春泥更护花。-龚自珍《己亥杂诗》

18天不老,情难绝。心似双丝网,中有千千结。-张先《千秋岁》

19似此星辰非昨夜,为谁风露立中宵。-黄景仁《绮怀诗二首其一》

20直道相思了无益,未妨惆怅是清狂。-李商隐《无题六首其三》

21深知身在情长在,怅望江头江水声。-李商隐《暮秋独游曲江》

22人到情多情转薄,而今真个不多情。-纳兰性德《摊破浣溪沙》

23此情可待成追忆,只是当时已惘然。-李商隐《锦瑟》

24相思***多少,地角天涯未是长。-张仲素《燕子楼》

25问世间,情是何物,直教生死相许。-元好问《摸鱼儿二首其一》

26身无彩凤双飞翼,心有灵犀一点通。-李商隐《无题》

27兽炉沈水烟,翠沼残花片,一行行写入相思传。-张可久《塞鸿秋》

28平生不会相思,才会相思,便害相思。-徐再思《折桂令》

29一寸相思千万绪,人间没个安排处。-李冠《蝶恋花》

30十年生死两茫茫,不思量,自难忘,千里孤坟,无处话凄凉。-苏轼《江城子》

31今夕何夕,见此良人。-佚名《诗经唐风绸缪》

32天长地久有时尽,此恨绵绵无绝期。-白居易《长恨歌》

33在天愿作比翼鸟,在地愿为连理枝。-白居易《长恨歌》

34重叠泪痕缄锦字,人生只有情难死。-文廷式《蝶恋花》

35一个是阆苑仙葩,一个是美玉无瑕。若说没奇缘,今生偏又遇著他;若说有奇缘,如何心事终虚话?-曹雪芹《枉凝眉》

36春蚕到死丝方尽,蜡炬成灰泪始乾。-李商隐《无题》

37他生莫作有情痴,人间无地著相思。-况周颐《减字浣溪沙》

38尊前拟把归期说,未语春容先惨咽。-欧阳修《玉楼春》

39关关雎鸠,在河之洲。窈宨淑女,君子好逑。-佚名《诗经周南关雎》

40人生自是有情痴,此恨不关风与月。-欧阳修《玉楼春》

41此去经年,应是良辰好景虚设。便纵有,千种风情,更与何人说。-柳永《雨霖铃》

42只愿君心似我心,定不负相思意。-李之仪《卜算子》

43落花人独立,微雨燕双飞。-晏几道《临江仙二首其二》

44可怜无定河边骨,犹是春闺梦裏人。-陈陶《陇西行》

45千金纵买相如赋,脉脉此情谁诉。-辛弃疾《摸鱼儿》

46梧桐树,三更雨,不道离情正苦。一叶叶,一声声,空阶滴到明。-温庭筠《更漏子三首其三》

47结发为夫妻,恩爱两不疑。-苏武《结发为夫妻》

48寻好梦,梦难成。况谁知我此时情。枕前泪共帘前雨,隔个窗儿滴到明。-聂胜琼《鹧鸪天》

49一场寂寞凭谁诉。算前言,总轻负。-柳永《昼夜乐》

50天长路远魂飞苦,梦魂不到关山难,长相思,摧心肝。-《李白长相思二首其一》

51不要因为也许会改变,就不肯说那句美丽的誓言,不要因为也许会分离,就不敢求一次倾心的相遇。-席慕蓉《印记》

52愿我如星君如月,夜夜流光相皎洁。-范成大《车遥遥篇》

53鱼沈雁杳天涯路,始信人间别离苦。-戴叔伦《相思曲》

54执手相看泪眼,竟无语凝噎。-柳永《雨霖铃》

55诚知此恨人人有,贫*夫妻百事哀。-元稹《遣悲怀三首其二》

56换我心,为你心,始知相忆深。-顾敻《诉衷情》

57忆君心似西江水,日夜东流无歇时。-鱼玄机《江陵愁望有寄》

58春心莫共花争发,一寸相思一寸灰。-李商隐《无题六首其六》

59相思似海深,旧事如天远。-乐婉《卜算子》

60相恨不如潮有信,相思始觉海非深。-白居易《浪淘沙》

61玲珑骰影埠於梗�牍窍嗨贾�恢�浚�峦ン蕖堆盍�Α?

62忍把千金酬一笑?毕竟相思,不似相逢好。-邵瑞彭《蝶恋花》

63天涯地角有穷时,只有相思无尽处。-晏殊《玉楼春》

64都道是金玉良缘,俺只念木石前盟。空对著,山中高士晶莹雪;终不忘,世外仙姝寂寞林。-曹雪芹《终身误》

65人如风后入江云,情似雨馀黏地絮。-周邦彦《玉楼春》

66滴不尽相思血泪抛红豆,开不完春柳春花满画楼。-曹雪芹《红豆词》

67泪眼问花花不语,乱红飞过秋千去。-欧阳修《蝶恋花二首其一》

68瘦影自怜秋水照,卿须怜我我怜卿。-冯小青《怨》

69锺情怕到相思路。盼长堤,草尽红心。动愁吟,碧落黄泉,两处难寻。-朱彝尊《高阳台》

70若问闲情都几许?一川烟草,满城风絮,梅子黄时雨。-贺铸《横塘路》

71多情只有春庭月,犹为离人照落花。-张泌《寄人》

72花红易衰似郎意,水流无限似侬愁。-刘禹锡《竹枝词四首其二》

73若有知音见采,不辞遍唱阳春。-晏殊《山亭柳赠歌者》

74明月楼高休独倚,酒入愁肠,化作相思泪。-范仲淹《苏幕遮》

75思君如明烛,煎心且衔泪。-陈叔达《自君之出矣》

76生当复来归,死当长相思。-苏武《结发为夫妻》

77休言半纸无多重,万斛离愁尽耐担。-陈蓬姐《寄外二首其二》

78妾似胥山长在眼,郎如石佛本无心。-朱彝尊《鸳鸯湖棹歌》

79不知魂已断,空有梦相随。除却天边月,没人知。-韦庄《女冠子二首其一》

80同心而离居,忧伤以终老。-佚名《涉江采芙蓉》

81夜月一帘幽梦,春风十里柔情。-秦观《八六子》

82从别后,忆相逢,几回魂梦与君同。-晏几道《鹧鸪天三首其一》

83多情自古伤离别。更那堪,冷落清秋节。-柳永《雨霖铃》

84无情不似多情苦,一寸还成千万缕。-晏殊《玉楼春》

85唯将终夜长开眼,报答平生未展眉。-元稹《遣悲怀三首其三》

86别来半岁音书绝,一寸离肠千万结。-韦庄《应天长》

87相思一夜梅花发,忽到窗前疑是君。-卢仝《有所思》

88直缘感君恩爱一回顾,使我双泪长珊珊。-卢仝《楼上女儿曲》

89相思本是无凭语,莫向花牋费泪行。-晏几道《鹧鸪天三首其二》

90离愁渐远渐无穷,迢迢不断如春水。-欧阳修《踏莎行》

91若教眼底无离恨,不信人间有白头。-辛弃疾《鹧鸪天》

92开辟鸿蒙,谁为情种?都只为风月情浓。-曹雪芹《红楼梦引子》

93明月不谙离恨苦,斜光到晓穿朱户。-晏殊《鹊踏枝》

94临别殷勤重寄词,词中有誓两心知。-白居易《长恨歌》

95泪纵能乾终有迹,语多难寄反无词。-陈端生《寄外》

96还卿一钵无情泪,恨不相逢未剃时。-苏曼殊《本事诗》

97终日两相思,为君憔悴尽,百花时。-温庭筠《南歌子四首其二》

98欲寄彩笺兼尺素,山长水阔知何处。-晏殊《鹊踏枝》

99离恨却如春草,更行更远还生。-李煜《清平乐》

100鸿雁在云鱼在水,惆怅此情难寄.-晏殊《清平乐二首其二》


网站名称:flutter前言,简书 flutter
链接地址:http://hbruida.cn/article/dssgdgc.html