跨平台移动应用开发概念

  • 移动应用开发分类
    • Native app
    • Web app
    • Hybrid app
    • 三者的区别
    • 关于native.js的理解
  • 典型跨平台移动APP开发框架
    • H5与H5+
    • H5 app
    • H5+ app
    • uni-app

移动应用开发分类

Native app

即原生APP开发模式,利用iOS、Android开发平台官方提供的开发工具进行APP的开发。具有以下特点:

  1. 功能多:可以访问手机的所有功能,如定位、GPS、摄像头等。
  2. 速度快、性能高、整体用户体验好。
  3. 离线使用:若App内部涉及到大量的视频、图片等信息,在流量有限的情况下,需要用户将这些文件保存到本地,以供离线使用。并且再次打开时,不需要重新加载,访问速度快。
  4. App质量及安全性好。
  5. Native App开发非常费时费力,不同的版本需要单独开发。

Web app

Web App开发主要依靠HTML5框架开发,类似于网页,而不是单独的程序。具有以下特点:

  1. 在浏览器上运行,项目独立。
  2. 单一版本开发,开发周期短、难度小。
  3. Web APP的功能有限,不能调用手机功能。
  4. 性能需要进行检验,不如原生App。
  5. 每次打开都需要重新加载,访问速度慢,无法离线浏览。
  6. 技术不成熟,质量及安全性无法得到保障。

Hybrid app

Hybrid app从外观上来看是一个native app,实则只有一个UIWebView,里面访问的是一个web app,如新闻类和视频类的应用普遍采取该策略:native的框架加上web的内容。

不同于native app需要针对不同的平台使用不同的开发语言(如使用Objective-C开发iOS应用,使用Java等开发Android应用),hybrid app允许开发者仅使用一套网页语言代码(HTML5+CSS+JavaScript),即可开发能够在不同平台上部署的类原生应用 。由于hybrid app结合了native app良好用户交互体验和web app跨平台开发的优势,能够显著节省移动应用开发的时间和成本,hybrid app得到越来越多公司的青睐。

Hybrid app也并非是完美的解决方案。由于其使用HTML5,某些依赖于复杂的原生功能或者繁重的过渡动画的应用会出现卡顿;同时,为了模拟native app的UI和感官,需要投入额外的时间和精力;尽管可以跨平台,但是并不能完全支持所有的设备和操作系统;最后,如果应用的体验不够原生化,如一个简单的网站,则还有被Apple App Store拒绝上线的风险。

三者的区别


nativeapp是一个原生程序,一般运行在机器操作系统上,有很强的交互,一般静态资源都是在本地的。浏览使用方便,体验度高。在实现上要么使用Objecttive-c和cocoaTouch Framework撰写iOS程序,要么选择java+Android Framework撰写android应用程序。

hybridapp是一个半原生程序,伪造了一个浏览器的apk/ipa原生程序,把地址写死了,然后里面运行了一个webapp。里面是WebView UI 。但是还是运行在机器的操作系统上,交互较弱,资源一般在本地或者网络都可以,浏览体验度次之。

webapp是生存在浏览器里的应用,所以只能运行在浏览器里,宿主是浏览器,不再是操作系统。资源一般都在网络上。

什么叫做原生App?
原生App是专门针对某一类移动设备而生的,它们都是被直接安装到设备里,而用户一般也是通过网络商店或者卖场来获取例如 The App Store 与 Android Apps on Google Play 。

什么叫做移动Web App?
一般说来,移动Web App都是都是需要用到网络的,它们利用设备上的浏览器(比如iPhone的Safari)来运行,而且它们不需要在设备上下载后安装。

什么是混合app?
Hybrid App是指介于web-app、native-app这两者之间的app,它虽然看上去是一个Native App,但只有一个UI WebView,里面访问的是一个Web App,比如一些社交类APP最开始的应用就是包了个客户端的壳,其实里面是HTML5的网页。再比如掌上百度和淘宝客户端Android版,走的也是Hybrid App的路线,不过掌上百度里面封装的不是WebView,而是自己的浏览内核,所以体验上更像客户端,更高效。

综上所述:“Hybrid App同时使用网页语言与程序语言开发,通过应用商店区分移动操作系统分发,用户需要安装使用的移动应用”。总体特性更接近Native App但是和Web App区别较大。只是因为同时使用了网页语言编码,所以开发成本和难度比Native App要小很多。因此说,Hybrid App兼具了Native App的所有优势,也兼具了Web App使用HTML5跨平台开发低成本的优势。

三者区别:
Web App是指基于Web的系统和应用,运行在高端手机的网络和浏览器上,用网页技术开发实现特定功能的应用,对手机性能要求比较高。

Native App(原生开发):目前较为成熟,各大公司均采用此方式。但是其人工成本较高,同一个项目,至少需要Android端、iOS端、Web端三个开发团队。

Hybrid App(混合开发),基于第三方跨平台移动应用引擎框架进行开发。使用HTML5和JS作为开发,调用引擎封装的底层功能如照相机、传感器、通讯录等。
各大开发框架下的细节对比如下:

关于native.js的理解

Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术。如果说Node.js把js扩展到服务器世界,那么Native.js则把js扩展到手机App的原生世界。

HTML/JS/Css全部语法只有7万多,而原生语法有几十万,Native.js大幅提升了HTML5的能力。NJS突破了浏览器的功能限制,也不再需要像Hybrid那样由原生语言开发插件才能补足浏览器欠缺的功能。NJS编写的代码,最终需要在HBuilder里打包发行为App安装包,或者在支持Native.js技术的浏览器里运行。具有如下特点:

  • NJS大幅扩展了HTML5的能力范围,原本只有原生或Hybrid App的原生插件才能实现的功能如今可以使用JS实现。
  • NJS大幅提升了App开发效率,将iOS、Android、Web的3个工程师组队才能完成的App,变为1个web工程师就搞定。
  • NJS不再需要配置原生开发和编译环境,调试、打包均在HBuilder里进行。没有mac和xcode一样可以开发iOS应用。
  • Native.js不是一个js库,不需要下载引入到页面的script中,也不像nodejs那样有单独的运行环境,Native.js的运行环境是集成在5+runtime里的,使用HBuilder打包的app或流应用都可以直接使用Native.js。

典型跨平台移动APP开发框架

H5与H5+

H5
HTML5 是 W3C 与 WHATWG 合作的结果。WHATWG 致力于 web 表单和应用程序,而 W3C 专注于 XHTML 2.0,在 2006 年,双方决定进行合作,来创建一个新版本的 HTML。HTML5 有以下的新特性:

  1. 用于绘画的 canvas 元素
  2. 用于媒介回放的 video 和 audio 元素
  3. 对本地离线存储的更好的支持
  4. 新的特殊内容元素,比如 article、footer、header、nav、section
  5. 新的表单控件,比如 calendar、date、time、email、url、search

总的来说HTML5 具有如下改进:

  • 新元素
  • 新属性
  • 完全支持 CSS3
  • Video 和 Audio
  • 2D/3D 制图
  • 本地存储
  • 本地 SQL 数据
  • Web 应用

H5+
HTML5plus Runtime,简称5+ Runtime,是运行于手机端的强化web引擎,除了支持标准HTML5外,还支持更多扩展的js api,使得js的能力不输于原生。5+ Runtime内置于HBuilder,在真机运行、打包时自动挂载。

HTML5+规范是一个开放规范,隶属于工信部,允许三方浏览器厂商或其他手机runtime制造商实现。HTML5+扩展了JavaScript对象plus,使得js可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、地图、支付、语音输入、消息推送等。

除了功能外,HTML5+很重要的特点是提供了原生的渲染能力,通过plus.webview、plus.nativeObj、plus.nativeUI,让开发者可以使用js来调用原生渲染能力,实现体验的大幅提升。但是原生的api多达40万,HTML5+的封装并非把40万api都封装了一遍,而是分成了2个层面:

  1. HTML5Plus规范:常用的扩展能力,比如二维码、语音输入,都封装到了规范中,同时实现了Android和iOS的解析引擎,使得开发者的代码编写一次,可跨平台运行。
  2. Native.js是另一项创新技术。手机OS的原生API有四十多万,大量的API无法被HTML5使用。Native.js把几十万原生API映射成了js对象,通过js可以直接调ios和android的原生API。这部分就不再跨平台,写法分别是plus.ios和plus.android,比如调ios game center,或在android手机桌面创建快捷方式,这些都是平台专有的api。

H5 app

HTML5应用开发,是利用Web技术进行的App开发,我们知道web技术本身需要浏览器的支持才能进行展示和用户交互。主要用到的技术是HTML5、JavaScript、CSS等。现在还有一些开发框架可以利用,比如phoneGap、bootstrap、jquery等。

H5开发的好处是可以跨平台,编写的代码可以同时在Android、IOS、Windows上进行运行。由于Web技术本身的限制,H5移动应用不能直接访问设备硬件和离线存储,所以在体验和性能上有很大的局限性。

H5+ app

H5+,是html5plus的缩写,即基于html5的增强扩展。它是一个跨iOS、Android的混合开发App解决方案,与cordova类似。它基于webview渲染,封装了大量原生能力给js API。

5+App是DCloud早期产品,新产品uni-app推出后,从功能、性能、生态全部超越5+App。但5+App不要求使用vue,使用普通HTML即可开发。其开发结构如下图所示:

uni-app

uni-app是为js开发者提供的一个前端开发框架,可以开发一次编译为web、App、小程序(微信/阿里/百度/字节跳动/QQ)、快应用。它支持使用各种ide开发,比如vscode、webstorm,但与HBuilderX结合使用更完美。

uni-app是vuejs的语法+小程序的API,它有独立的js引擎,原生能力的扩展基于独立js引擎,而不是基于webview的扩展方案。

在App端,uni-app支持视图层使用原生渲染(此时类似react native),也支持使用webview渲染(此时类似小程序引擎),开发者可以自行选择。其开发结构如下:

学习跨平台移动应用开发必须理解的一些概念相关推荐

  1. python网络编程视频教程_Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密)...

    Java网络开发视频教程 – 一站式学习Java网络编程视频教程 全面理解BIO(无密) 全面理解BIO/NIO/AIO 网络层编程,是每一个开发者都要面对的技术.课程为解决大家学习网络层知识的难题, ...

  2. android应用程序开发_Kotlin与Flutter:Android跨平台应用程序开发,到底选择哪个?...

    移动互联时代--应用为王 移动互联网时代,很难想象没有应用程序的生活.从我们睁眼醒来的那一刻到我们真正睡觉的那一刻,无数的应用程序围绕着我们.根据统计,国人平均在移动设备上花费4个小时以上! 而这其中 ...

  3. Unity3D ——强大的跨平台3D游戏开发工具教程

    http://unity3d.9ria.com/?p=22 众所周知,Unity3D是一个能够实现轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎.在现有的版本中,其强大的游戏制作功能已经 ...

  4. 如何用 Python 进行基于深度学习的计算机视觉项目开发?

    令人惊喜的"智能"年代 深度学习有着广阔的前景 我们正处在一个"智能"的年代,比如智能手机中的语音助手.机器翻译和人脸识别:战胜过日本将棋冠军.国际象棋冠军, ...

  5. Python学习笔记:web开发2

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. android应用程序开发_深圳app开发公司:跨平台应用程序开发工具有哪些?

    深圳app开发公司:跨平台应用程序开发工具有哪些?跨平台应用程序开发工具的出现是移动开发的发展和竞争的结果.对更快.更经济的应用程序开发的追求导致了跨平台技术的出现.在移动应用程序开发工具推荐中,哪些 ...

  7. CA周记 - 用 Visual Studio Code 做基于 .NET MAUI 跨平台移动应用开发

    自2010年以来,移动应用开发是非常热门的一个方向,从技术上我们经历了原生应用开发.基于 H5 的 Web App.混合模式的移动应用开发,再到跨平台移动应用开发..NET 不仅是一个跨平台的应用,也 ...

  8. APPCAN学习笔记003---原生开发与HTML5技术

    APPCAN学习笔记003---原生开发与HTML5技术 技术qq交流群:JavaDream:251572072 1.HTML5的优势:   HTML5强悍牢固的骨架   CSS3精致到每一个毛孔的皮 ...

  9. APPCAN学习笔记001---app快速开发AppCan.cn平台概述

    1.APPCAN学习笔记---app快速开发AppCan.cn平台概述 1. 平台概述 技术qq交流群:JavaDream:251572072 AppCan.cn开发平台是基于HTML5技术的跨平台移 ...

最新文章

  1. jenkins使用Git为源码管理(windows master linux slave)
  2. JQery遍历方法each
  3. 混迹网络运营多年经验之谈
  4. etal斜体吗 参考文献_参考文献类有关论文范例,与日语文提纲2016年,日语文提纲科目相关本科毕业论文范文...
  5. Spring Bean的获取与实例化
  6. Qt Creator操作方法
  7. Python持续更新的新特性
  8. wxpython使用方法_python图形界面开发之wxPython树控件使用方法详解
  9. [react] contextType是什么?它有什么用?
  10. (王道408考研操作系统)第二章进程管理-第三节2:实现进程互斥的软件方法
  11. win7系统下Loadrunner不能正常监视windows资源
  12. jy61 树莓派_用Linux树莓派来读取JY61的串口数据
  13. 10-11-根据文章标题搜索文章
  14. koa如何实现Oauth2(一)
  15. LINUX下载编译OpenH264
  16. 匹配网页里的zip_ZIP 也能边下载边解压?流式解压技术揭秘
  17. 地图投影(一)高斯克吕格投影
  18. [转]仿百度文库或豆丁网在线浏览doc.pdf.xls.txt源码
  19. axure操作回复_Axure8.0基础教程(21-30)新手必须掌握的基础操作
  20. 零基础学Arcgis(二)|ArcCatalog应用

热门文章

  1. 电动助力转向EPS(一)——结构、类型及功能
  2. java后台简单从腾讯云下载文件通知前端以附件的形式保存
  3. mysql用户连接次数失败限制_mysql数据库限制多次登录失败,限定用户重试时间...
  4. 计算机网络端口作用是什么,网络适配器是什么 网络适配器有什么作用【详细介绍】...
  5. PFC 5.00.35中,如何去掉二维球形颗粒的黑色边框?很简单
  6. 【转载】eMule电驴使用从入门到精通(6)-------电驴设置
  7. java计算机毕业设计汽车客运站票务管理系统源码+程序+lw文档+mysql数据库
  8. 班级纪念册php源码,班级纪念册制作寄语,高中毕业纪念册文字分享
  9. Adobe终于在Flash Player 11和Air 3上支持3D了
  10. 口碑驱动显疲态 手机品牌营销向广告倾斜