
正文
flutter云服务,flutter 阿里云oss
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
uniapp是未来的趋势吗?
未来太遥远,不想这么多,技术栈几年一换才是常态。目前很多应用开发者在尝试使用uni-app,可以尝试一下,多学一点多一个技术选择不是坏事。
想学一个长久可用的技术,在IT界特别是中国,并不太现实。如果选择了前端,那情况只怕是更糟。
uniapp是未来趋势?NO!NO!
说uniapp成为趋势感觉有点好笑。
不懂行的可能不了解,我就换个说法。
我可以说手机行业小米手机会成为未来的趋势吗?
你认为可能性多大?当然不可否认小米很优秀了,当然实话实说,这也是相对的。想变成趋势可谓有点夜郎自大。
uniapp是什么?简单点说说吧
一个基于vue的跨平台开发的框架,有了它你可以写一套代码打包成安卓、苹果安装包,还可以导出各种小程序,还可以导出h5…,反正功能很强大。
它的出现,只要你懂点前端,只要你会点vue,OK那你就可以开发APP了。
厉害不厉害?可以说在某种程度上确实很牛逼,很方便,特别又是国产,文档、demo之类的很多。
平台又出有云服务,支付,广告等各种插件。小白上手也很快。所以一时圈了很粉,社区还算凑合吧。
uniapp之所以被越来越多的人需要,不得不说下跨平台。
APP开发跨平台确实是个刚需,也是一个真正的趋势。毕竟纯原生开发一个APP太复杂了,成本也高。有些APP根本不需要关心所谓的性能、流畅度之类的。所以跨平台,一套代码完全搞定,可谓是个不错的选择。
但是跨平台可选性的技术方案太多,与uniapp直接相对的,apicloud,在国产圈也是拉了不少粉。
此外rn,lonic,cordova,weex等之类的前辈仍然具有一定的地位,还有新起来flutter也是火的不得了。
所以uniapp只能说在小范围内可以说很好,但是和那些成熟,风靡海内外的技术框架还是有差距的。
uniapp真的好用吗?
首先,我感觉它越来越废了。有时真是感觉积累!
开发APP就专业开发APP吧,你还搞的适配一堆小程序,所以造成越来越臃肿。文档杂乱。
有时,选择你,我就是想仅仅开发APP。压根不要小程序!
所以,特别是新手,因此会有一定的烦恼。
另一个 值得 吐槽的就是不太稳定!
架构经常换,而且之前的很难兼容!
为此估计不少人想骂人。特别那些已经有了成熟运营的APP。
再次升级的话,不好意思,很多东西重写吧。
从当初非自定义组件、自定义组件,再到今天的v3架构。可谓一步一个坑,真的严重依赖它的话,真的花费大精力去踩坑了。
当然一般的开发拿来用用还是不错的
我司项目开始用的h5+那一套,也用uniapp做过几个项目。反正要求不是很高,效果感觉还可以。
真的真的去完全适配安卓,苹果的话,要做的还是有很多。
OK,就这了。技术本身无所谓好坏,只有适合不适合。
有时基于时间、项目成本、人员技术水平,只要合适就是最好的。
uniapp也一样,希望它快快成长,快快稳定,完善吧!
uniapp目前确实很火,暂且不说uniapp这种框架是不是未来的趋势,但大前端绝对是未来的趋势。
在计算机编程领域,前端近几年的技术更新速度达到了顶峰。
这并不是得益于前端的语言优势,而是开放繁荣的生态。
uniapp这类框架正是前端进军移动互联网的利刃。
移动互联网过时了吗?不,移动互联网正在以新的形态进军PC。
所以,未来几年uniapp这类框架还会繁荣,而前端慢慢融合,PC与移动的前端界限越来越模糊。
serverless是趋势,unicloud正好整合了阿里云与腾讯云!
最重要的是unicloud开始标准化,uni-id ,unicloud-admin就是苗头!
听从开发者建议且更新频繁的框架!两年左右完善度已经非常高!
现在他们需要做的功能太多,所以一些细节性并未完善,一旦稳定下来,他们能把一些细节做好,这个框架与开发者工具绝对不容小嘘!
免费的服务器,免费的框架,对于初创团队,或者个人创业者,有想法的开发者,可以省大多成本!
自己独立完成的项目(超级档案)已上架小米,华为,苹果应用商店,同时,各大平台小程序也全部上架!
不是。h5类的优势在于开发简单,周期短,一套代码跑多端。适合初创快速迭代。任何一个成熟的产品在达到一定规模后,都会回归原生,或者混合。这是性能,用户体验,安全等多方面因素决定的。这也是有了rn后,为什么还会有flutter出现的原因。
何为趋势?在互联网高速发达的时代,物竞天择的规律同样适用,这个开发平台的主要目的就是解决了多平台重复,跨平台生态不好,开发和使用用户体验不好的问题,真正做到了一套代码全平台适用,一劳永逸,同时还不影响平台特色,随着整个业内开发者的用户数越来越多,势必会取代不合时宜的开发平台。从目前的使用广度和应用产品的市场反馈来看,它是具备这个能力的。
uniapp还是很多人用的,尤其在现在这个时间,用来开发小程序还是不错的
如果没有意外的话,他还会保持现状很长时间
对于小型项目或者交互要求不高的项目来说,基本是够用的,这种项目又普遍对成本或者开发效率非常敏感,在这点做的比uniapp好的确实不多,所以他的用户群会非常稳定
至于感觉上没人讨论的原因也很简单
一是有影响力的开发人员几乎不可能是uniapp的用户,uniapp的用户多数也提不出值得讨论的内容
二是这东西真没什么可讨论的,上限实在不高
uniapp目前在国内的生态很好,因为大前端是趋势,是uniapp在未来一段时间内还是很火的,个人认为如果创业阶段如果没有原生客户端工程师,只有web团队,uniapp非常适合
目前来说uniapp是 一款很好的开发小程序的编码工具,
优点有
一:简单易学,学习成本低。
二:可以跨多个平台,制作一套代码可以在多个平台发布
三:运行比较流畅,运行体验更好,兼容weex,组件·api和微信小程序一致
综合以上几点来看uniapp前景不错。
目前确实有这个趋势。用uniapp开发了一款app,叫小 时尚 ,目前已经在各大应用商店上线。
相关问答
Q1: Flutter发布Package(Pub.dev或私有Pub仓库)
因为我们使用Flutter跨平台技术开发App时,会有很多公用组件,因为Flutter中一切皆为Widget,widget也比较细粒度,所以我们需要进行封装,用于一个项目或者公司不同项目中去~
那么今天写写如何发布package或者插件到Pub.dev上,扯扯谈O(∩_∩)O哈哈~
《Flutter的拨云见日》系列文章如下:
1、Flutter中指定字体(全局或者局部,自有字库或第三方)
2、Flutter发布Package(Pub.dev或私有Pub仓库)
首先,我们知道flutter有四种工程模式:Flutter Application、Flutter Module、Flutter Plugin和Flutter Package。
我们这里就主要讲Package 纯Dart插件的发布吧,都差不多。
创建工程后,就可以编写你的公共组件,或者公用字体库呀啥的, 都行。
在更改下你的pubspec.yaml文件,修改下你的versionCode,项目名称,项目描述,作者等
如果上传失败试试?的命令:
在执行该命令时,可能会中途调到网页,要求你登录google账号,登录授权,到时候登录账号并授权就可以了。
因为我们直接使用flutter packages pub publish是发布到Pub.dev上,并不是发布到私有仓库,该怎么办呢?
其实呢,也很简单!像versionCode,项目名,等都和发布Pub.dev是一样的。没啥区别。
有两种方式:
就是这么简单o( @ )o
相信大家引用Pub.dev上的第三方库都会了哈,到处都是这里不讲了
在使用flutter pub get就可以拉到私有仓库项目了
以上就差不多聊了聊package发布和获取的事儿了,都很明了,大家可以试试,挺简单的。
PS: 写文不易,觉得没有浪费你时间,请给个点赞~ ?
Q2: Archsummit 2019重磅分享|闲鱼Flutter&FaaS云端一体化架构
作者:闲鱼技术-国有
国有,闲鱼架构团队负责人。在7月13号落幕的2019年Archsummit峰会上就近一年来闲鱼在FlutterFaaS一体化项目上的 探索 和实践进行了分享。
随着无线,IoT的发展,5G的到来,移动研发越发向多端化发展。传统的基于Native+Web+服务端的开发方式,研发效率低下,显然已经无法适应发展需要。
我们希望 探索 闲鱼这样规模的独立APP的高效研发架构。主要思路是围绕Flutter解决多端问题,并使Flutter与FaaS等无服务容能力打通,形成云端一体化的研发能力,支持一云多端的发展需要。在某些场景已经取得效果,希望分享过程中的思考,与大家交流。
闲鱼选择Flutter主要是出于高性能的考虑。Flutter高性能主要来源于2个原因:
更多比较:
没有银弹的解决方案,Flutter与RN各有优点。如何选择因素很多,关键看如何取舍,举个例子:
云端技术栈的打通,是减少协同的不错的解法。以往前端+Node.js的一体化方案大家应该不会陌生,然而如果端侧使用了Flutter,那云侧Dart自然是第一选择。
FaaS的本质是运行在云端,那Dart适合用在云/Server上吗?
Dart语言早于Flutter,在最初的设计上,Dart就可以用于Web、Server。Dart具备一些服务端语言的特点:
闲鱼首先尝试将Dart作为普通的Server,替代传统的Java Server,然后再将Dart容器嵌入到FaaS容器中。建立Dart Server能力是第一步,也是主要的工作量所在。
闲鱼在Dart Server方面的建设思路:
开发期:
运行期:
上述内容实现了FlutterDart FaaS的技术栈的统一,但仅技术栈统一还远远不够,端、云的同学仍然无法真正互补和一体化打通,原因在于还有更多深入问题需要考虑:
面向这些问题,闲鱼的解法思路:
案例一,一体化在资源均衡方面的体现。在近期的一个项目中,云端一体化使原本2个月的项目时间,减少了20天。
案例二,一体化在业务闭环方面的体现。负责增长的一位开发同学,专注在增长业务上,在合适的情况下为合适的人投放合适的内容,以此带来用户的增长和活跃效果。一体化的方式下,可以统一云、端的切面,业务研发不再受云、端的限制。
一体化是建设高效研发框架的方向,并不是所有场景都需要一体化的开发,但一体化的Flutter、FaaS等技术组件,可以独立使用,也会带来效率提升,并且与原有的开发模式兼容。从一体化的思路去建设,可以使整体架构体系更加一致,也有机会做一体的架构沉淀。
未来闲鱼希望在一体化上做更多尝试和深入 探索 ,包括一体化工具、一体化业务平台、数据化智能化等方向。
Q3: Flutter中使用gRPC
gRPC是谷歌开发的一款远程过程调用系统,可以让客户端像调用本地对象一样使用服务端应用的方法,使用protocol buffers接口定义语言来定义服务方法,protocol buffer定义参数和返回类型。
protobuf类似json,是一种数据结构协议,在android studio中安装Protobuf Support,方便查看编写的proto文件
dart使用proto插件将proto文件生成对应的dart文件,使用如下步骤
1、安装flutter之后,再flutter的下面路径中有pub命令,需要将命令加入到path中。
可以vi ~/.zshrc,在文件中加入source ~/.bash_profile,然后在vi ~/.bash_profile文件中加入下面路径(:分割不同的路径)
export PATH=/Users/webull/app/flutter/bin:/Users/webull/app/flutter/bin/cache/dart-sdk/bin:/Users/webull/.pub-cache/bin:$PATH
其中fluter/bin是flutter的命令路径,dart-sdk/bin中包含了pub和其他dart命令,.pub-cache/bin是之后运行pub之后建立的路径,里面包含了proto-gen-dart命令,用来将proto文件转换为dart的命令
2、使用下面的命令安装proto插件
$ pub global activate protoc_plugin
安装完成后,上面的用户目录中的.pub-cache目录才会有proto-gen-dart文件。
1、其中/Users/webull是我的用户目录 app/flutter是flutter的安装目录
参考:
1、gRPC介绍
2、gRPC配置
Q4: Flutter 之 文件操作(二十九)
Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart IO 库来操作文件的,不过和 Dart VM 相比,Flutter 有一个重要差异是文件系统路径不同,这是因为Dart VM 是运行在 PC 或服务器操作系统下,而 Flutter 是运行在移动操作系统中,他们的文件系统会有一些差异。
Android 和 iOS 的应用存储目录不同, PathProvider 插件提供了一种平台透明的方式来访问设备文件系统上的常用位置。该类当前支持访问两个文件系统位置:
File代表一个整体的文件,他有三个构造函数,分别是:
文件读取本身有两种形式,一种是文本,一种是二进制。
2.2.1 读取文本内容
如果是文本文件,File提供了readAsString、readAsLines、readAsStringSync、readAsLinesSync方法,读取文本内容
readAsString 一次性读取所有文本
readAsLines 一行行的读取文本
结果返回的是一个List,list中表示文件每行的内容
readAsStringSync、readAsLinesSync同步读取文本
2.2.2 读取二进制内容
如果文件是二进制,那么可以使用readAsBytes或者同步的方法readAsBytesSync:
dart中表示二进制有一个专门的类型叫做Uint8List,他实际上表示的是一个int的List。
上面提到的读取方式,都是一次性读取整个文件,缺点就是如果文件太大的话,可能造成内存空间的压力。
所以File为我们提供了另外一种读取文件的方法,流的形式来读取文件.
示例
dart提供了open和openSync两个方法来进行随机文件读写:
写入和文件读取一样,可以一次性写入或者获得一个写入句柄,然后再写入。
一次性写入的方法有四种,分别对应字符串和二进制
句柄形式可以调用openWrite方法,返回一个IOSink对象,然后通过这个对象进行写入:
默认情况下写入是会覆盖整个文件的,但是可以通过下面的方式来更改写入模式:
虽然dart中所有的异常都是运行时异常,但是和java一样,要想手动处理文件读写中的异常,则可以使用try,catch:
我们还是以计数器为例,实现在应用退出重启后可以恢复点击次数。 这里,我们使用文件来保存数据:
1.引入PathProvider插件;在pubspec.yaml文件中添加如下声明:
执行 flutter pub get
2.实现如下
参考:
Q5: 云开发能代替后端吗?
云开发并不能代替后端。
但是它可以快速开发出API接口,让你的产品快速上线运营对于小型创业公司和个人试错是非常好的。
云开发简介:
云开发(CloudBase)是云端一体化的后端云服务,采用serverless架构,免去了移动应用构建中繁琐的服务器搭建和运维。同时云开发提供的静态托管、命令行工具(CLI)、Flutter SDK等能力降低了应用开发的门槛。使用云开发可以构建完整的小程序/小游戏、H5、Web、移动App等应用。
云开发与传统的前后端开发模式天然互补。基于云开发构建应用层/服务中台,能够弥补传统开发模式的“效率低、耗时多、依赖后台、不够灵活”等问题,更快响应业务需求。







