问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

HybridAPP混合开发的一些经验和总结

发布网友 发布时间:2023-07-03 16:29

我来回答

1个回答

热心网友 时间:2023-10-09 17:21

1、混合开发概述

HybridApp主要以JS+Native两者相互调用为主,从开发层面实现“一次开发,多处运行”的机制,成为真正适合跨平台的开发。HybridApp兼具了NativeApp良好用户体验的优势,也兼具了WebApp使用HTML5跨平台开发低成本的优势。

目前已经有众多Hybridapp开发成功应用,比如美团、爱奇艺、微信等知名移动应用,都是采用HybridApp开发模式。

2、移动应用开发的三种方式比较

移动应用开发的方式,目前主要有三种:

NativeApp:本地应用程序(原生App)

WebApp:网页应用程序(移动web)

HybridApp:混合应用程序(混合App)

图1:三种移动应用开发方式

如图1所示,三种移动应用开发方式具体比较如表2所示:

表2:三种移动应用开发方式比较

3、混合开发应用场景

(1)折中考虑——如果企业使用Hybrid开发方法,就能集Native和web两者之所长。一方面,Native让开发者可以充分利用现代移动设备所提供的全部不同的特性和功能。另一方面,使用Web语言编写的所有代码都可以在不同的移动平台之间共享,使得开发和日常维护过程变得集中式、更简短、更经济高效。

(2)内部技能——许多企业都拥有Web开发技能。如果选择Hybrid开发方法,在合适解决方案的支持下,Web开发者只要仅仅运用HTML、CSS和JavaScript等Web技能,就能构建App,同时提供Native用户体验。

(3)考虑未来——HTML5的可用性和功能都在迅速改进。许多分析师预测,它可能会成为开发前端App的默认技术。如果用HTML来编写App的大部分代码,并且只有在需要时才使用Native代码,公司就能确保他们今天的投入在明天不会变得过时,因为HTML功能变得更丰富,可以满足现代企业一系列更广泛的移动要求。

4、混合开发框架和层次结构图

混合开发结构图

1)移动终端web壳(以下简称“壳”):壳是使用操作系统的API来创建嵌入式HTML的渲染引擎。壳主要功能是定义Android应用程序与网页之间的接口,允许网页中的JavaScript调用Android应用程序,提供基于web的应用程序的AndroidAPI,将Web嵌入到Android应用程序中。

2)前端交互js:包括基础功能js和业务功能js。

3)前端适配器:适配不同的终端:Pad、android、ios、wap。

混合开发层次结构图

1)页面加载

页面容器(XdjaWebView)类,是整个框架的核心和基础,主要用来实现页面的加载,以及对页面加载完成后的后续操作提供支持,例如:文件下载、js支持、文件上传,数据缓存、进度条等;

页面加载接口:对页面的加载过程进行跟踪;例如:页面加载进度百分比,页面开始加载、页面加载出错、页面加载完成等

2)JS调用Android功能

网页:页面调用js接口中的具体方法;

JS接口:调用android接口中一一对应的具体方法;

android接口:直接调用框架中集成的功能,或者通过框架接口在应用系统中自定义功能(例如,退出、返回键响应等);其中升级功能的返回结果或者过程信息,可以在客户端中通过升级接口获取。

XdjaClientHelper:如果需要将框架中的方法返回值通知给js方法,你们可以通过XdjaClientHelper类来实现;

3)应用系统调用JS功能

应用系统通过XdjaClientHelper来实现对js功能的调用;

4)应用系统调用HDF功能

应用系统可以调用框架集成的工具类、消息提示框、升级模块以及手机上常见的打电话发短信等功能。

5、性能优化

1)单个页面

登录、首页以及共用代码(样式文件、JS文件、页面加载loading代码)等放在index页面里。页面展示前显示fake页面(过场页面),首屏加载完后,fake页面消失。

页面虽然按照业务模块分为不同的页面,但是展示的时候会在同一个页面即index页面展示。具体的说,需要某个功能页面的时候将页面以AJAX的形式请求到index页面,使用完毕删除。

使用一个页面,公共的CSS和JS只会加载一次。

2)CSS、JavaScript

在本次混合开发框架开发中,CSS全部写在一个文件里。

CSS和JqueryMobile的相关文件写在index页面头部,其余公用JS等写在index页面底部。防止JS阻塞页面加载。各业务逻辑JS写在各业务页面的底部。

开发完成后,CSS和JS需要进行压缩,减少用户使用时初次请求时间。

3)@font-face

本次混合开发中使用@font-face来实现图标字体化,统一控制图标的颜色和大小。

使用@font-face优点:减少页面因使用图片而带来的流量,大大缩短页面响应时间;图标可以随意改变大小和颜色,而不会导致失真。

使用时注意:所有的图标需要是矢量的SVG格式。

使用*:只适用于纯色扁平化的图标。背景图等比较复杂的图片依旧使用图片。

4)本地存储LocalStorage

HTML5本地存储LocalStorage,在混合开发中主要用来存储最近查询记录等。

拿首页最近查询来说,用户每次在综合查询中点击一个模块,通过LocalStorage将图标和对应的功能名字存储起来,如果用户不清除,LocalStorage中的数据是一直存在本地的。下次打开应用的时候从LocalStorage中读取最近查询记录等。

使用LocalStorage的好处是,不进行后台交互,速度快。

5)异步AJAX

本次开发中多处实现都是通过使用AJAX。首先,显示页面时,先显示框架,然后异步加载内容;其次,分页功能中,先显示部分简项列表,上拉获取更多内容。再次,每打开一个新功能,页面以AJAX的形式获取新页面的内容并展示出来。

异步AJAX,交互体验更好。从性能的角度考虑,速度也更快。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
手机壁纸花卉红色手机壁纸花卉 辽宁智能五芯防水连接器 军工产品浅谈——航空插头 xp电脑系统修复XP系统怎么恢复出厂设置 ...表编辑器后打不开任何文件,无需重装系统,电脑盲都能用 粼基本信息 粼五笔怎样打? 【微科普】想变成光?先搞清楚光是什么吧! 手机被拉黑后打电话是什么提示? 物流管理专业对数学的要求高么 电动剃须刀怎么刮胡子才干净 三星液晶电视屏幕出现漏光现象,是否正常? 智能电视如何解决漏光问题 大学入学需要准备哪些东西 ps海报怎么加边框?photoshop怎样给图片描边并填充边框 朱九真的影视形象 一部怀旧电视剧的名字 软骨素会引起便秘吗 软骨素会影响月经吗 杭州和山电梯空调好不好 有什么关于虚无界动漫 请问一商店名“精品服饰”的韩文和英文翻译是什么?急!!在线等!!_百度... 哪位懂韩语的亲帮我翻译一下图里的韩语,最好带读音,感谢 (韩国时尚)这四个字翻译成韩语怎么写 韩语翻译:开服装店的人都去那进货 韩语的"韩丞嘉潮流服装店"怎么写如题 谢谢了 "精品女装店",韩文怎么拼。网上用翻译器但是每个都不一样,请懂韩语的... 服装店用韩语怎么说 平时能喝一斤 为什么喝了四两就断片了?干的一些事儿一点也不知道?这是... 美国wwe职业摔角米兹老婆 WWE谁的老婆最漂亮 PS CS6图像处理软件如何调出图中红框部分的功能,还有裁剪工具没了... 梦见给自己身上喷香水 阴历3月10号是阳历多少号 农历三月十号适合去寺庙敬香吗 3月初10是几月几号 男生心里住着一个小女生是种什么体验? 我的心里住着一个小女孩 心里住着小女生八卦心理很重的星座男 怎么用VRay调节乳胶漆材质参数?用VRay调节乳胶漆材质参数的方法_百度知 ... 大气的海报版图设计-电脑上怎么设计海报 亲,请给我收1篇阅读。包答案哦。五年级,语文。 选择好的厨师学校怎么选? 请问:一般给电脑重装系统的步骤是什么?请详细一些 日常日语实用口语:グルメの旅 美食之旅 天目的文言文 我是男的28想问问提高性生活的保健药品可以天天吃吗对身体有害吗 为什么所有的视频播放器都搜不着洪金宝主演的电影猛龙 乘风破浪后面一句 乘风破浪的下一句 谁有许冠杰-沧海一声笑mp3歌曲百度云下载