扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。(-中文网;-英文网)
我们是从2013年开始的成都网站建设公司,提供网站建设,电商网站设计开发,外贸营销网站建设,响应式网页设计,成都小程序开发、等服务。为客户创造有价值的品牌营销体验,让互联网提升企业的竞争力!
Flutter是一种趋势,势必会取代RN,成为最主流的跨平台开发框架,基于Dart语言。ios开发必须Mac电脑。android开发window、linux、Mac均可。
像美团外卖这样的APP用一种开发语言,能开发得出来吗?答案是不能。
美团发展到现在可以说已经是一个【巨无霸】了,里面集成了很多很多功能,除了核心的外卖,还有 旅游 、 娱乐 、购物、出行,金融等等业务线,那么这么多复杂的业务根本不可能用同一种开发语言实现。
那么美团都用到哪些开发语言和技术了呢?下面就根据我的理解详细说一下。
前端是把产品的核心服务交给用户的呈现者,它的表述方式、展示形式以及交互逻辑都跟用户息息相关,都影响着用户使用产品的体验,也就是说直接影响产品的用户留存。
前端开发主要分为三大类型:Andriod、IOS和PC(H5) ,Android开发语言是Kotlin和Java,IOS开发语言是Object-c和Swift,PC(H5)开发语言就比较杂了,有JS、CSS、HTML,还有很多第三方的前端框架,比如Angular.js、vue.js、Bootstrap、JQuery等等。
关于后端的功能,这一点可以说是众说纷纭,主要需要考虑的是如何实现功能、数据的交互流程和存取、平台的稳定性与性能等。
那么后端都用到哪些开发语言和技术呢?
根据后端技术选型的标准,后端可选的开发语言和技术是非常多的。
比如Java体系的话,可以选用SpringMVC、Spring cloud、Hibernate,Mybatis、Mysql、Redis、Memcache、zookeeper、Kafka......;
比如Python体系的话,可以选用Django、Flask、Tarnado、Web2py等,中间件都是通用的,Redis,MQ、MySQL、Kafka等都可以用在python体系中;
当然还有PHP、C、Perl等开发语言。
综上所述,美团这个巨无霸公司,随着业务线的扩展用到的技术肯定会越来越多,而且越来越复杂,技术快速变革的时代,适者生存的竞争性也会越来越激烈。
俗话说:罗马不是一日建成的,任何事都不可能一蹴而就,包含技术。在以后的发展中美团也会逐步更新自己的技术和开发语言的。
至少三种语言。后端一种语言(比如Java丶Go丶Python丶PHP等),后端语言及生态比较成熟。下面重点聊前端App开发。
前台两种语言(Android和iOS是不同的开发环境。比如Android用Java或者Kotlin,iOS采用Object C++或Swift),称之为Native开发。
当然创业公司可以用一种前端语言写App前端,这样就不需要Android和苹果分两种语言写,写一次代码可以编译成Android和iOS的App,现在通行的方案有Vue之类的DOM渲染模式,以及ReactNative方案(RN)。性能上RN优于DOM渲染但低于用Native开发的App。所以美团这种公司,一定是Native方式写App,但RN是初创项目不错的选择。
与RN竞争的还有一种新贵flutter,是google推出来的,但设计原理与RN不同,性能方面优于RN,只是目前生态不够健全,国内有闲鱼app是采用此技术。未来可能会占一席之地。
最后,其实App开发已经是强努之末,我觉得主流应该是朝PWA和小程序方向发展。
你好,开发譬如美团这种APP,用一种语言是实现不了的,一个APP有安卓和苹果两个操作系统,开发能在安卓iOS端应用的APP主流的开发语言和技术是很多的,如后台有JAVA、C++、PHP、Python等多种开发语言,前端有kotlin、HTML、css、jquery、ajax、bootstrap、angular.js、react、vue.js、node.js、swift、object-c等多种语言和框架。
一个APP的开发是需要前端技术和后台技术共同配合完成,这样的APP不论是功能还是性能都给用户很好的体验,单一开发语言毕竟技术支持有限,所以即使能开发出来,APP的用户体验也是不理想的。
一般APP有这几种开发组合模式:1、原生安卓iOS开发,前端:JAVA、kotlin、swift、object-c后台:JAVA、PHP、C++等后台技术,这种模式开发周期长,成本高,性能好;2、混合APP开发即hybrid app,前端以网页技术为主,穿插原生开发功能,兼具原生APP和web app的优点,如淘宝、微信等应用都是走的这个技术;3、web app,前端纯网页技术,后台为主流开发语言,这种模式开发速度快,成本低,界面体验可能弱一些。
可见开发一款APP大多数都是多种语言配合完成,谢谢阅读。
看完之前的评论,依然好奇为什么一个语言不能完全胜任。
前端跨平台的方案有react native,cordova,flutter等,如果需要兼容开发小程序,h5页面,可以采用taro来开发,一套代码,所有平台通吃。
后端的方案有服务端运行时nodejs,大数据背景下运用而生的数据库mobgodb,缓存解决方案redis,搜索工具elasticsearch,负载均衡ngix,基本上是需要什么就有什么
所以总结下来,一句话,一种语言可以实现类似美团这样的app和小程序。为什么美团使用的语言那么多,一大原因估计是美团app开发的早,当时前端技术不成熟,工具没现在这么多。
使用混合开发与C++ 进行跨平台开发,有好有坏。
C++ 进行跨平台开发
编写一次,随处运行。早在 2013 年,Dropbox 就采用上述策略进行移动开发,这背后的想法很简单:用 C++ 编写一次代码,而不是用 Java 和 Objective-C 编写两次。那时,整个移动工程团队相对还比较小,但需要支持快速增长的移动路线图。因此,公司希望找到一种方法,使这个小团队可以快速交付大量 Android 和 iOS 代码。
如今,Dropbox 完全放弃了这个策略,转而使用各个平台的原生语言(主要是 Swift 和 Kotlin ,这两种语言在刚开始制定移动策略时还不存在)。
Hybrid App混合开发
Hybrid App主要以JS+Native两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发。Hybrid App兼具了Native App良好用户体验的优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。
目前已经有众多Hybrid App开发成功应用,比如美团、爱奇艺、支付宝等知名移动应用,都是采用Hybrid App开发模式。
移动应用开发的方式,目前主要有三种:
几种模似都可以开发出应用,小应用无所谓,但是大流量应用,对图形要求高的如 游戏 等原生开发的效果还是最好
支付宝打开很慢,就是因为采用混合开发,使用人多了不如原生开发
不行的哦。任何你看到的应用和网页,都需要多个语言开发的,大的分比如前端和后端,用的语言都是不一样的
前言
为什么跨平台是发展趋势?
同一个应用,各个“端”独立开发,不仅开发周期长,而且人员成本高。同时,作为技术人员,也不应该满足于这种重复、低能的工作状态。在这样的形势下,跨平台的技术方案也受到越来越多人和企业的关注。
本篇文章我将从原理、优缺点等方面为大家分享跨平台技术
一. 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.优缺点分析
优点
缺点
单数的时候用单括号,复数用双括号。
一开始我要说明一下我是完全零基础,之前完全没有接触过html,css,javascript,相信能给新手带来帮助!
这个是我从零开始学习react-native的一个学习记录过程,简单易懂,但涵盖功能全面,基本可以算是一个比较完整的电商app了,希望能够给react-native的初学者一些帮助。因为公司刚接手一个新的RN项目,而本人对于RN等跨平台完全没有接触过,甚至没有任何react等前端基础,html,css,javascript也是从未接触,但一直对这方面比较感兴趣,因此正好趁此机会学习了一把,感觉很有成就感,找到了曾经那种从0到1的掌握技能的感觉,整个过程大概顶多一个月时间。虽然RN现在可能没有以前那么火热,但是其跨平台思想还是很值得学习的,比如google新出的flutter其中很多思想与RN大同小异,例如其组件的state控制页面渲染机制等。当然这个项目还有很多功能可以后续慢慢完善的地方。
未来太遥远,不想这么多,技术栈几年一换才是常态。目前很多应用开发者在尝试使用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,叫小 时尚 ,目前已经在各大应用商店上线。
作为客户端开发程序员,首当其冲就是完成业务迭代,服务好产品用户和业务团队。服务好产品用户是业务团队存在的价值,服务好业务团队是客户端开发存在的价值。业务发展要考虑变现,要考虑增长,要考虑留存等等,最终落地的环节往往需要客户端开发来实现。
除了业务迭代,根据业务特色和客户端开发团队特点,会围绕高效研发体系和稳定研发质量不断做优化,也有的会尝试跨端能力建设、新技术探索落地。在更大一点的公司还会关注团队的技术影响力输出,以及不可忽视的安全和合规能力。
为了更好的衡量客户端质量,往往会用卡顿、卡死、crash等基础指标来评估质量,同时也会不断做包大小优化、启动优化、磁盘和流量监控、流畅度优化、cpu和电量优化等等来提升基础体验。同时还要关注研发过程中的效率提升,比如说研发流程优化、编译优化、自动化测试等等。
客户端能做的事情非常多,有服务于用户的业务方向,也有保障质量的基础方向,还有提供各种通用能力的中台方向,还有从事各种跨端建设、音视频处理、网络建设等等 。从供需关系来看,智能手机的市场规模是客户端开发岗位需求的天花板,全球接近40亿的智能手机就是客户端开发这个行业的未来保障。至于脉脉“客三消”理论鼓吹的大前端取代客户端开发,是典型的杞人忧天。从事过客户端开发的程序员都知道客户端原生Native开发是不可能被跨端的技术完全取代。RN、flutter等是在某些特定环境下会有不错应用收益,但不管是交互体验、研发体验,各项性能指标都比不上原生开发语言。
客户端开发是移动互联网快速发展的产物,本身也有一些从事的风险点,从我的经历来看,主要有以下问题:
客户端的很多日常工作是需求开发,需求开发主要是由各种业务逻辑、各类界面的实现。最常见的现象是 一年经验用三年,三年经验用十年 。由于客户端所见即所得的特点,很多开发者在度过前期的上手期之后,就一直重复使用类似的思考模式去解决问题。如果没有环境压迫,也没有自己主动去思考突破,会在日复一日的劳作中迷失成长。时间较长之后,往往会陷入能力增长的瓶颈期。
客户端开发的求职者和招聘者之间,现在有一种相互矛盾的现象: 求职者感觉外面客户端开发的需求量在不断的变少,招聘者一直在苦恼招不到人。
客户端开发的岗位减少是由于移动互联网的基建越来越成熟,相比流量成本和维护成本都更高的App,很多小公司选择使用了更加便捷的小程序、公众号、抖音短视频等等大公司提供的基础平台,导致了客户端开发的岗位需求量在不断减少。
招聘者苦恼的是招聘不到优秀的开发者,由于互联网行业常年有长期唱衰客户端开发的现象(从以前的PC开发到现在是移动端开发),再加上最近几年兴起的算法岗位和数据分析岗位竞争,越来越少的优秀毕业生投身到客户端的这个行业上,导致优秀的开发者供不应求。
“中年危机”是悬在程序员头上的达摩克里斯之剑,这不仅仅是客户端开发会面临的问题,这是所有大龄程序员都必须面对的互联网从业现状。由于前面提到的互联网基建成熟带来了的客户端岗位需求减少问题,客户端开发在中年危机这个问题显得更有压力。
但是如果觉得从事前端开发或者后台开发就不用面对中年危机,就是太过于乐观了。设想一下,一个公司为了节省成本都不做App了,他还会去招一个40的前端开发或者后端开发吗?
互联网行业在快速发展,薪酬待遇也在不断提升,这也带来源源不断的新人。 当一个新人和老人能力相差不大时,性价比更高的新人往往更容易胜出。 想要避免中年危机,唯有不断锻炼自己的能力,思考自己的不足之处,提升自己在市场的竞争力。
根据自己的粗浅认知,我觉得有下面几个方向可以努力。
大部分公司的官方回答永远是弹性工作制,事情干完就可以走。但是事情永远不可能做完,事情可以做完的公司还有市场竞争力?
我的看法是顺应潮流,合理安排时间。优先完成工作的事情,然后利用多余时间来进行学习。尽量不要把工作安排的满满当当,这样疲于奔命会让生活非常疲惫;也不要夸大工作难度、浑水摸鱼,摸鱼是对自己最大的不负责。按公司提倡的工作时间,合理安排工期,如果还有一些时间可以放松下心态,花点时间学习和成长。
可以从下面几个方向去探索:
学习如何从重复工作中学习和成长是必须的,因为再新的工作也会变成旧的工作。
学习的方向可以是做事、技术、思考、规划、团队等等,找一个当下最需要成长的能力开始锻炼。合理使用环境的压力,形成自己的学习和成长动力;偏技术侧需要自己拆分目标,逐步实现目标,这是非常重要的自驱力。
成长的过程很简单,制定目标,实现目标。目标需要有一定的量化标准,模棱两可让目标变得不可触碰。制定目标也要考虑目标的指引作用,对个人而言,目标描述的过程会比结果更加重要。
努力学习换来好结果,好结果继而激励产生进步动力,建立一个良好的正向反馈循环。
一个职业的未来,要看行业的发展前景。 移动互联网的发展规模,注定客户端在短期内仍然是刚需。至于长期发展之后,移动互联网被新的时代取代,那么也会有新的岗位延伸出来,到时再紧跟时代潮流即可。
另外要把业务和技术分开,技术只是一个工具。在前期确实需要积累客户端的知识和相关技术,但是随着时间的推移,慢慢会接触更多的知识。不要给自己设限制,在适当的时机技术栈可以扩大到后端。假如某个人只做某一个模块,那么也需要去接触这个模块的前因后果,数据的产生消费。眼界如果局限在客户端,那么只能知其然不知其所以然。重点是在于人,人才是解决问题的核心,具体的技术只是工具。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流