专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

关于武汉APP开发的三种模式和一些主流框架介绍!

来源:小易整编  作者:小易  发布时间:2022-05-17 12:36
摘要:随着智能手机的进一步发展,手机除了作为传统意义的通信工具,更多的成为一个类似于家用电脑的平台终端,这就促使了App开发的蓬勃发展。 1、App开发模式 目前,App开发最热门的平台就是苹果的iOS操作系统和Android操作系统。对于这两种不同的操作系统,现阶...

随着智能手机的进一步发展,手机除了作为传统意义的通信工具,更多的成为一个类似于家用电脑的平台终端,这就促使了App开发的蓬勃发展。

1、App开发模式

目前,App开发最热门的平台就是苹果的iOS操作系统和Android操作系统。对于这两种不同的操作系统,现阶段有三种不同的开发模式:

Native App

Web App

Hybrid App(混合模式移动应用)

1.1 Native App

Native App是基于本地(操作系统)运行的App,即原生App,对于iOS平台来说,开发语言为Objective-C或者Swift,而Android开发语言为Java。对于开发原生App,优点是:

打造完美的用户体验

性能稳定

操作速度快,上手流畅

访问本地资源(通讯录,相册)

设计出色的动效,转场

拥有系统级别的贴心通知或提醒

用户留存率高

缺点是:

无法跨平台,Android和iOS都需要开发各自平台的版本,开发成本高。

维护成本高(例如一款App已更新至V5版本,但仍有用户在使用V2,V3,V4版本,需要更多的开发人员维护之前的版本)。

升级麻烦:每次升级都要下载安装包,Android还好,反正不需要审核,下载就下载吧,但iOS就麻烦了,发布每个版本还得经过App Store的审核,这导致第三个问题。

Android和iOS很难同步发布。

1.2 Web App

Web App,是一种基于智能机的浏览器运行的App,生存在浏览器中的应用,基本上可以说是触屏版的网页应用。说白了就是一个针对iOS、Android优化后的Web站点,它使用的技术无非就是HTML5、CSS3、JavaScript,服务端技术JAVA、PHP、ASP。虽然开发成本大大降低,但页面访问速度慢、操作体验差。

1.3 Hybrid App

Hybrid App,是指介于Web-App、Native-App这两者之间的App,兼具“NativeApp良好用户交互体验的优势”和“Web App跨平台开发的优势”。Hybrid App其实也分不同的解决方案。

1、借助一些混合开发工具(PhoneGap、AppCan等中间件),以WebView作为用户界面层,以Javascript作为基本逻辑,去和中间件通讯,再由中间件访问底层API的方式,进行应用开发。这种架构一般会非常依赖WebView层的性能,属于Web架构为重的HybridApp解决方案。

2、使用Adobe Air、RubyMotion、Appcelerator或者是Xamarin这种非官方语言的工具,打包成原生应用的方式开发。它们并没有很单纯地使用原生提供的语言进行开发,而是通过对开发者提供友好的开发工具,并折中地把这种开发语言转换成原生语言,最终打包出整个应用,属于编译转换的Hybrid App解决方案。

3、在开发原生应用的基础上,嵌入WebView,但是整体的架构使用原生应用提供,一般这样的开发由Native开发人员和Web前端开发人员组成,Native开发人员会写好基本的架构以及API让Web开发人员开发界面以及大部分的渲染,这种方式属于Native架构为重的Hybrid App解决方案。

优点:

全Web开发方式,一定程度上有利于Web前端技术人员快速地构建页面样式,可以基于浏览器调试;对于编译转换的混合开发方式,利用自己熟悉的语言,进行应用开发,开发效率高;Native架构为重的开发方式,无疑是最稳定的Hybrid App开发方式了,交互层上由Native的东西解决了,而且架构上基本就是在App内写网页,连App Store都是采用了该种方案,开发时分工非常明确,底层的由iOS开发人员处理,上层的由Web前端开发人员处理。

开发效率高,同一套代码WebView部分Android和iOS基本都可用,具有跨平台性。

Web部分更新和部署比较方便,不需要每次升级都要上传到App Store进行审核了,只需要在服务器端升级就可以。

缺点:

对于Web架构为重的开发方式,他的优点都是针对Web界面层的,但是涉及到和手机底层交互问题,就需要依靠各种中间件,更多的时候需要采用原生开发去调用;对于编译转换的混合开发方式,严重依赖于其工具厂商提供的工具包,调试的时候就要有全套的工具,遇到系统升级,第三方SDK升级,开发工具出现Bug等,那么就要等待工具厂商解决了,相当于把风险压在对方身上了,自己却要承担责任;对于Native为重的混合架构方式,团队至少需要两个工程师,一个是Web的,一个是iOS/Android的,还需要考虑运行效率,要权衡好多少界面采用Web来渲染,毕竟WebView的效率会相对降低。

混合App开发的安装包比原生的App包大一些,运行时间越长就容易会出现卡顿的情况,当然这个与开发有没有很好的垃圾和缓存清理机制有关。

加载缓慢/网络要求高:混合App的Web部分,数据需要全部从服务器调取,每个页面都需要重新下载,所以打开慢,网络占用高,缓冲时间长,容易让用户反感。

安全性比较低:安全性较低,网络发展快,病毒多,如果不能实时更新,定期检查,容易产生漏洞,造成直接经济损失。

2、iOS原生开发

2.1开发环境和开发语言——Xcode 9+Swift 4+iOS11设备+开发者账号

Xcode是苹果公司为开发者提供的集成开发环境,可构建适用于苹果iPad、iPhone以及Mac设备的应用程序。在应用程序的创建、测试、优化以及提交至App Store的过程中,Xcode为开发者提供了用以管理整个开发工作流的工具。最新版本是9.0版,建议运行在macOS High Sierra系统中。

Swift是一门开源的编程语言,该语言用于开发OS X和iOS应用程序,开发环境需要在OS X系统中运行。Swift被设计用来无缝兼容Cocoa和Objective-C。在Swift中,你可以使用Objective-C的API(包括系统框架和你自定义的代码),你也可以在Objective-C中使用Swift的API。

cocoa框架是以Objective-C来编写API的,用Swift调用Objective-C的函数是非常自然的,两者之间没有明显的界限。在iOS的开发过程中,重点会用到Cocoa中的Funation框架和UIKit框架。前者包含了数据存储、文本处理、时间处理、文件系统和网络等功能,后者则提供了内容呈现和交互等。

2.2 iOS开发目录结构

以下为一个单页面的iOS简单应用,可以看到这个App的目录结构如下所示:

关于武汉APP开发的三种模式和一些主流框架介绍!

1.Info.plist:在编译时提供app配置的关键信息,用于让iOS系统定位各类资源。

2.AppDelegate:App的核心代码,定义了App初始化、状态转换、和时间等。

3.Storyboard:提供一种可视化的方式来定义用户界面,通过单个或很少的几个文件构建全部UI。

关于武汉APP开发的三种模式和一些主流框架介绍!

4.ViewController:管理App显示的页面内容。在Xcode里可以直接通过拖拽的方式,将view里面的控件直接定义在ViewController里面,通过编写代码管理view所有控件的属性和动作。

关于武汉APP开发的三种模式和一些主流框架介绍!

5.Asserts.xcassets,主要用来存放图像资源文件的。

3、Android原生开发

3.1开发环境和开发语言——Android Studio+JAVA

Android Studio是一个Android集成开发工具,基于IntelliJ IDEA。类似EclipseADT,Android Studio提供了集成的Android开发工具用于开发和调试。

3.2 android开发的目录结构

Android开发的系统框架与目录结构如下所示:

关于武汉APP开发的三种模式和一些主流框架介绍!

src目录:主要是完成java代码的编写

assets目录:资源目录

res目录:存放图片,布局文件和字符串、菜单等文件

--drawable存放工程图片的信息,默认png格式的图片

--layout存放工程的布局文件以.xml结束

--values文件夹下面存放一个很重要的string.xml,此文件夹存放的是自定义的字符串和数值。除了这个文件之外,还可以定义arrays.xml(用来定义数组)、color.xml(用来定义颜色和颜色字符串数值)、dimens.xml(用来定义尺寸数值)、styles.xml(用来定义样式)。

bin目录:输出文件夹,如生成的APK文件

.properties工程属性文件配置

gen目录:系统自动生成的源代码目录

R.java文件是系统自动生成的文件,非常重要,这个R.java默认有attr,drawable,layout,string 4个静态内部类,每个类对应一种资源。例如我们在工程中添加一幅图片,那么工程就会在此类的drawable内部类中添加一条数据,如果删除了此图片,工程则会自动删除此条数据。

4、APP混合开发架构

App原生开发由于存在版本不能同步、开发成本高等问题,Hybrid App开发模式逐渐成为移动界的核心话题,下面介绍几种目前业界流行的混合开发架构。

4.1基于WebView的混合开发框架

基于WebView的混合开发架构,指的是程序员写纯粹的HTML5代码,最后通过原生端的WebView组件来加载渲染。每个页面都是一个独立的WebView容器,页面之间的跳转,一些特殊效果,特殊组件的实现,都是通过HTML5发消息来调取原生功能实现的。

4.1.1 PhoneGap/Cordova

Cordova是Apache软件基金会的一个产品,其前身是PhoneGap,比较出名的一个跨平台解决方案。Native接口比较丰富,通过封装的API可以直接访问硬件,提供硬件访问控制。可调用加速计、摄像头、罗盘、通讯录、文档、地理定位、媒体、网络、通知(警告、声音和振动)、存储。扩展api需要用原生语言开发,更致命的是这类方案的性能不足。

PhoneGap并不支持UI设计,它仅仅是浏览器调用本机代码(比如获取地理位置)的一层接口。UI设计还需要别的JS类库支持。手机端UI框架如下:

Vux:基于WeUI和Vue(2.x)开发的移动端UI组件库,主要服务于微信页面,例如微信公众号。

Ionic:AngularJS移动端的解决方案,一般大家指的Ionic框架=Cordova+AngularJS+Ionic UI。

jquery mobile

bootstrap

Framework

4.1.2 Dcloud

Dcloud同样是基于WebView的Hybrid框架,通过CSS动画、预加载、多个WebView的显示隐藏等技术,其中Native.js把原生API映射成JS对象,提供一套JS库来取代原生API的调用,类似于一个中国版本的Ionic框架。DCloud大部分产品开源,旗下四款产品:HBuilder、5+Runtime、MUI、流应用都是弥补并扩展HTML5特性的产品。MUI是一款不错的前端框架,使用原生JS编写,性能比jQuery Mobile、Bootstrap好很多。

关于武汉APP开发的三种模式和一些主流框架介绍!

Phonegap/Cordova方案相对Dcloud比较灵活,但是它自带JS API比较少,扩展API需要用原生语言开发,而Dcloud自带封装好的API功能,包括二维码、摇一摇、语音输入、地图、支付、分享、文件系统、通讯录等,对流畅性要求不太高的,可以考虑使用MUI,开发速度快,成本低。

4.1.3 AppCan或者APICloud

AppCan不开源,无法修改、优化底层代码,分大众版和企业版,大众版免费,但功能有缺失,暂不支持自行开发控件,无法调取Android原生功能;框架自带功能过多,导致应用安装包偏大,文档偏少;部分系统无法使用IDE进行调试,只能在服务器端发布,无法在本地发布,iOS发布,需要将证书上传至服务器。

APICloud的技术引擎和大部分的模块没有开源,但是有详细指导(收费),还有课程服务讲解课程实例,课程中包括了第三方登录分享、即时通讯、地图功能、客服功能、照片的上传与浏览、音视频的播放。

4.2基于JavaScript引擎的开发框架

该类框架不使用WebView,减少了WebView带来的性能问题(流畅度不高,交互性差等),典型代表有React Native、Weex、NativeScript,其中ReactNative最为流行。它们的主要实现思路是,程序用JS实现,然后框架负责把JS代码翻译成原生代码,最后呈现出原生页面(Dcloud的Native.js是驱动html dom渲染,而React Native是直接驱动Android/iOS原生组件渲染)。

4.2.1 React Native

React Native是Facebook在2015年3月在F8开发者大会上开源的跨平台UI框架。

React Native性能要好于Cordova等混合开发架构,但ReactNative抛弃了HTML5,基于JavascriptCore,使用JavaScript去开发原生应用,属于一种新的和原生语言通讯的机制,有较强的扩展性,可以直接使用Native原生的动画,可以通过更新远端JS,直接更新App。

React Native从开发环境的搭建到开发方式上其实都是偏向于原生的,前端的JavaScript用的语法是Jsx,和JavaScript有一点的区别,界面布局和CSS完全不一样,而且需要分别搭建Android和iOS开发环境。纯粹的Web开发者要想很快熟练使用React Native甚至说是搭建开发环境似乎还是要多花一些心思的,并且在React Native的宣讲中,仍然是建议原生开发者能够尝试接纳React Native这种新的开发模式,以提高自己的开发效率。可以推断出,React Native在设计之初所考虑面向的开发者为原生开发者。

4.2.2 Weex

Weex是阿里巴巴公司于2016年6月开源的一种用于构建移动跨平台的UI框架,实现思路来源于React Native与Vue,开源较晚,网上相关资料还比较少,社区规模较小,网站资源还在建设中。

4.3.3 NativeScript

NativeScript应用程序是用JavaScript、XML和CSS组合编写来实现跨终端App,相比于React Native,iOS和Android界面的组件几乎一致,开发效率高。然而,React Native可以很方便与原生项目混着用,NativeScript却无法与原生项目融合,即只能纯写个NativeScript的应用,不可能把它抽离出来作为某原生应用的一部分来出现。

5、总结

本文主要介绍了现阶段App开发的三种模式和一些主流框架。目前业界大多数App采用的是Hybrid的开发模式,即在Native框架的基础上,嵌套一部分WebView的方式。WebView占的比重依据具体业务而定,像淘宝、京东电商之类的需要频繁更新页面,比重会比较大。而像React Native等框架,优点很多(比如远端更新,流畅度堪比原生等),但是成熟度还不够。总的来说,选择什么样的开发模式和框架,一定要结合产品的市场定位和业务场景。同时,在进行框架选型之前,应该具备iOS和Android的原生开发经验,只有积累了一定的原生开发经验,才能直观的感受出不同框架的优势和缺点。



本文地址:APP开发频道 https://www.hkm168.com/web-appkf/1965.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们处理,谢谢!


APP开发
小编:小易整编
相关文章相关阅读
  • c语言的输入函数有哪些

    c语言的输入函数有哪些

    c语言的输入函数有:1、scanf()函数、从标准输入stdin读取格式化输入;2、getchar()函数,从标准输入stdin获取一个字符;3、gets()函数,从标准输入stdin读取一行;4、getch()函数,从stdin流中读取字...

  • 奇异值分解(SVD)简介及其在图片压缩中的示例

    奇异值分解(SVD)简介及其在图片压缩中的示例

    奇异值分解(SVD)是一种用于矩阵分解的方法。它将一个矩阵分解为三个矩阵的乘积,分别是左奇异向量矩阵、右奇异向量矩阵和奇异值矩阵。SVD在数据降维、信号处理、推荐系统等领域广泛应用。通过SVD,我们可以将高维数据降低到低维空间,从而提取出数...

  • 用U盘轻松实现一键重装系统的小白装机教程

    用U盘轻松实现一键重装系统的小白装机教程

    在现代社会,电脑已经成为人们生活中不可或缺的工具。然而,由于各种原因,我们有时候需要重装电脑系统来解决一些问题或提升性能。但是,对于一些小白用户来说,重装系统可能是一项困难的任务。因此,本文将介绍一款小白一键重装系统的u盘装机教程,帮助小白...

  • 因特网能提供的最基本服务有哪些

    因特网能提供的最基本服务有哪些

    因特网能提供的最基本服务有:1、www服务;2、电子邮件e-mail服务;3、远程登录telnet服务;4、文件传输ftp服务;5、usenet网络新闻组服务;6、电子公告牌服务。本教程操作环境:windows7系统、DellG3电脑。因...

  • 某台微机安装的是64位操作系统中,64位指的是什么

    某台微机安装的是64位操作系统中,64位指的是什么

    某台微机安装的是64位操作系统中,64位指的是cpu的字长,即cpu每次能处理64位二进制数据。字长是cpu的主要技术指标之一,指的是cpu一次能并行处理的二进制位数,字长总是8的整数倍,通常pc机的字长为32位,64位。本教程操作环境:w...

  • 总结CreateJS的详细介绍

    总结CreateJS的详细介绍

    CreateJS库是一款HTML5游戏开发的引擎,是一套可以构建丰富交互体验的HTML5游戏的开源工具包,旨在降低HTML5项目的开发难度和成本,让开发者以熟悉的方式打造更具现代感的网络交互体验。掌握了CreateJS可以更方便的完成HTM...

  • 修复:在 Xbox 应用上的 Halo Infinite(Campaign)安装错误代

    修复:在 Xbox 应用上的 Halo Infinite(Campaign)安装错误代码 0X80070032、0X80070424 或 0X80070005

    haloinfinite(campaign)是一款第一人称射击视频游戏,于2021年11月推出,可供单人和多用户使用。该游戏是halo系列的延续,适用于windows、xboxone和xbox系列的用户x|s。最近...

  • 有没有录制电脑屏幕的方法

    有没有录制电脑屏幕的方法

    电脑屏幕有录制的方法吗有两个方法一是用win10电脑自带的录屏软件来录,打游戏的时候按一下【win+g】就行了二是用其他的录制软件来录制,比如“迅捷屏幕录像工具”,操作方法如下:1、首先在电脑上将这个工具下载下来。下载完成后打开工具,主页...

  • 周排行
  • 月排行
  • 年排行