1.App的3种开发方式

表面上看,手机App都是同样的东西,就是手机上的应用程序,点击图标就能运行,但是它们的底层技术不一样。按照开发技术,App可以分成三大类。原生应用(简称nativeApp),Web应用(简称WebApp),混合应用(简称hybridApp)这三类App的技术模型都不一样,各有优缺点。

2.原生架构

原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发。所以原生架构的App在应用性能上和交互体验上应该是最好的,但是原生应用的可移植性比较差,特别是一款原生的App,Android和IOS都要各自开发,同样的逻辑、界面要写两套。如微信app,既有Android版的,也有ios版的。

原生架构特点:

1. 每一种移动操作系统都需要独立的开发项目。
2. 每种平台都需要独立的开发语言和工具,比如Android系统上的应用是利用java、eclipse、Android studio来进行开发,IOS系统是上的应用则是利用Objective-C和Xcode来进行开发的。
3. 更加贴近底层,因此他的操作更加的流畅,对于调取底层功能也是很容易的,如相机。
4. 开发成本高(针对不同的手机操作系统都要进行独立的开发),开发周期长,更新迭代缓慢,上架时需要等待官方审核通过
3.H5架构

H5开发就是值是利用Web技术(HTML5、JavaScript、CSS)进行的App开发,现在还有一些开发框架可以利用,比如phoneGap、bootstrap、jquery等。H5开发的好处是可以跨平台,编写的代码可以同时在Android、IOS、Windows上进行运行。由于Web技术本身的限制,H5移动应用不能直接访问设备硬件和离线存储,所以在体验和性能上有很大的局限性。

H5架构特点:

1. 方便测试,只需要输入网址就可以进行测试,是基于浏览器的,可以跨平台使用。
2. 想要新增功能直接在后台添加即可,不需要通知用户升级。
3. 量级低,开发成本很低,而且相应的他也不需要安装包。
4. 对网络非常依赖,一断网就歇菜功能单一,主要用于展示,无法调用底层功能,比如相机。
4.H5架构与原生的区别
  1. 原生的页面运行速度快,比较流畅。H5页面相对原生的运行性能低,特别是一些动画效果有明显卡顿。

  2. H5页面的很多交互都没有原生的好,比如弹层、输入时候的页面滑动 等。H5的效果相对比较low,没有原生的好看,也没有原生默认的动画等效果。

  3. 原生APP修改页面要重新发布,等待审核(现在iOS的审核速度已经提高到1天到2天)。H5页面的修改 可以随时上线,不用等待审核。

  4. H5跨平台,iOS和android可以共用一套代码;原生则需要各自开发相对原生,H5开发成本低。

  5. 原生APP能很好的使用设备底层功能,如摄像头、方向传感器、重力传感器等。H5则有所限制,比如android里的H5对摄像头和方向传感器就需要再多做一些处理。

  6. H5过度依赖于网络,网络不好的时候卡到不行,并且刚打开看到的都是一个空白页面。默认的H5页面每次打开都会重新请求页面(可以做缓存,不过基本很少有做的)。

  7. H5比原生更费流量,H5除了加载html还要加载js、css这些资源文件,相比原生网络加载速度慢。

H5架构和原生架构的区别的更多相关文章

  1. 新书《OpenShift云原生架构:原理与实践》第一章第三节:企业级PaaS平台OpenShift

    近十年来,信息技术领域在经历一场技术大变革,这场变革正将我们由传统IT架构及其所支撑的臃肿应用系统时代,迁移至云原生架构及其所支撑的敏捷应用系统时代.在这场变革中,新技术的出现.更新和淘汰之迅速,以及 ...

  2. 三层架构与MVC之间的区别

    文章转发自:http://www.admin10000.com/document/535.html 我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真 ...

  3. Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

    本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...

  4. h5做的app和原生app的区别

    之所以说h5做的app和原生app的区别,是因为一位博友的问题: 随着 h5 的普及,是不是不再需要开发 app ? 我的回答是要分业务需求,分场合而定. 比如现在的微信小程序这么流行,甚至也取代了不 ...

  5. (转)浅析三层架构与MVC模式的区别

    MVC模式介绍: MVC全名是Model ViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据 ...

  6. [转]三层架构与MVC之间的区别

    我们平时总是将三层架构与MVC混为一谈,殊不知它俩并不是一个概念.下面我来为大家揭晓我所知道的一些真相. 首先,它俩根本不是一个概念. 三层架构是一个分层式的软件体系架构设计,它可适用于任何一个项目. ...

  7. 日常2018/4/9---b/s和c/s架构分别是什么?区别?

    b/s和c/s架构分别是什么?区别? b/s是指前后端分别是 Browser/Server的模式.(3层c/s模式) c/s是指前后端分别是 Client/Server的模式.(2层c/s模式) c/ ...

  8. .NET 云原生架构师训练营(模块一 架构师与云原生)--学习笔记

    目录 什么是软件架构 软件架构的基本思路 单体向分布式演进.云原生.技术中台 1.1 什么是软件架构 1.1.1 什么是架构? Software architecture = {Elements, F ...

  9. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT SDK 配置详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

随机推荐

  1. Oracle的dbf文件迁移

    1.背景说明 在Oracle数据库中插入了1.5亿条数据, 并且创建了主键索引, 又插入了1.5亿条数据到另外一张表, 导致数据库表空间暴涨到28G, 由于根目录下只有50G的空间, 数据库文件所在磁 ...

  2. frontend-maven-plugin插件问题解决

    1.插件介绍 frontend-maven-plugin为项目本地下载/安装Node和NPM,运行npm install命令 . 它适用于Windows,OS X和Linux. 这个插件也可以下载No ...

  3. 三角网格上的寻路算法Part.1—Dijkstra算法

    背景 最近在研究中产生了这样的需求:在三角网格(Mesh)表示的地形图上给出两个点,求得这两个点之间的地面距离,这条距离又叫做"测地线距离(Geodesic)".计算三角网格模型表 ...

  4. Docker 安装并运行 Redis

    说明 在Windows下运行Redis主要有以下几种方式: 使用微软官方构建的Windows版Redis,最新版本是3.0.504,发布于2016-07-01.https://github.com/m ...

  5. windows 找不到文件gpedit.msc

    前言: 最新在装一个软件的时候,需要更改本地组的一些内容,win+R输入gpedit.msc,提示找不到文件. 解决: 第一种方法:笔者电脑是window10 家庭版,试了网上新建一个txt文件,写入 ...

  6. Centos 修改环境变量

    环境变量文件路径 添加一个X变量,在etc/profile 尾部添加 X=12345即可 输入命令 vim /etc/profile 变量生效 source /etc/profile 测试结果

  7. yum安装软件时,出现"No package XXX available"的解决办法

    第一种: 依次执行以下命令解决 1,cd /home 2,wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noa ...

  8. 我以订披萨为例,给女朋友详细讲了Java设计模式的3种工厂模式

    摘要:工厂模式是将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦.从而提高项目的扩展和维护性. 本文分享自华为云社区<[Java设计模式]用 披萨订购案例 详 ...

  9. 【刷题-LeetCode】122 Best Time to Buy and Sell Stock II

    Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...

  10. gin中绑定表单数据至自定义结构体

    package main import "github.com/gin-gonic/gin" type StructA struct { FieldA string `form:& ...