热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hybrid混合开发初尝

为什么80%的码农都做不了架构师?#hybrid混合开发初尝这是我第一次写markdown博客,也算是一种尝试吧。小菜鸡一枚,以下内

为什么80%的码农都做不了架构师?>>>   hot3.png

#hybrid混合开发初尝

这是我第一次写markdown博客,也算是一种尝试吧。 小菜鸡一枚,以下内容写的不好的,求轻喷。

hybrid一直都是很热门的话题,简单的说,纯native开发固然体验好但是开发成本高,迭代周期长,某商店还需要审核周期,并不能做到热更新,那么某些轻量级的需求,尤其是总是会变动的界面以及数据显示等,用native就会比较麻烦;纯web app成本确实相对低,但是体验确实不太好,太依赖网络了,而且纯web app能调用的api是跟不上native速度的,也就是说,例如iOS8更新了4000+个API,那么等web跟上这个脚步那不知道要多长时间。这个时候,一种折中的方案——混合开发(hybrid)就出现了。

我理解的混合开发是这样的:

  • native:原生主要的任务是提供底层API支持和APP对性能、交互等要求比较高的用原生来完成;
  • h5:这部分主要是用于变化较大、经常改动、对热更新要求较高的业务需求,类似APP的“通知中心”等;
  • bridge:桥的作用主要是将native和h5链接起来,提供一个管道供二者安全的相互调用。

在公司做小业务,其中一个需求丢到我这里:APP的通知中心开发,这部分leader让上hybrid,于是我还自己看了一些介绍hybrid的链接,最后选择了(当然是leader拍板的)cordova解决方案。cordova是phonegap的开源版本,现在是Apache下的顶级项目,相对成熟稳定,所以我必须没有意见,于是就去踩坑了,原谅我菜并没有做过类似的东西。

简单的说,cordova提供了Android(我是Android开发工程师)下的webview控件——cordovawebview支持,同时提供了cordovaActivity,然后cordova有一套plugin,是让native和h5交互的管道。这里提一下,由于Android4.2以下addJavascriptinterface的安全性问题,cordova对4.2以上和4.2以下分别作了处理:4.2以上继续使用addJavascriptinterface,4.2以下则使用prompt方式,详细细节请看上述链接。

这部分主要由我和一位web前端同事负责(原谅我太菜不会写js)。native这边主要是封装好原生业务逻辑和提供给h5的方法调用接口,然后通过cordovaplugin和h5进行交互,只要

public xxxClass extend CordovaPlugin

就可以继续写了,我这边还是比较简单的我觉得,因为我是用cordovawebview嵌入到一个fragment里,所以在插件类中,我都是用EventBus分发事件,然后在需要处理的时候订阅处理就行。h5那边我感觉写懵逼了,因为也没有类似经验吧,cordova.exec没封装就直接写出来了,然后在cordova.js没load完的时候,exec方法是not find的,然后同事采取的方案简单粗暴——直接setTimeout,啊哈哈最后写到他自己逻辑都乱了……我看了看官方文档,正确的做法应该是监听cordova的ondeviceready事件,然后在回调用做cordova相关的操作,这时候cordova.js就会load好了。

其实也不知道写了些什么,整个过程就是这样了……

后续这部分我们几个人同事讨论了下,还是采取自己写cordova插件,然后用过cli去安装,这样在js代码中就不会出现exec这种东西了……这部分主要都是给js调原生API用的。慢慢丰富起来我们自己的业务逻辑插件就好啦~

一枚Android开发小菜鸡 落笔


转:https://my.oschina.net/Cphone/blog/491003



推荐阅读
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
  • 安卓开发入门!BAT大厂面试基础题集合,顺利通过阿里Android岗面试
    其实不是Android不行了,而是你跟不上了我的很多读者都在反馈说,现在一个岗位可以收到的简历数,是前几年的几倍。我们必须承认ÿ ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • webui之常用js操作(webui界面是什么)
    本文目录一览:1、web前端开发需要掌握的几个必备技术 ... [详细]
  • 01mui框架使用概述
    1MUI概述1.1MUI诞生背景?性能和体验的差距,一直是手机APP开发者放弃HTML5的首要原因。浏览器默认控件样式又少又丑,制作一 ... [详细]
  • 唱唱反调:风口上的技术不要盲目追
      对于前端领域的开发者来说,“学不动了”虽然更多是一种调侃,但也真实地反映出了他们面对频繁出新的前端技术时又爱又恨的心情。在经历了移动互联网的大爆发后,前端领域的边界不 ... [详细]
  • 来自微信官方:微信支付跨平台软件架构首次曝光
    大纲背景线上效果指标什么是软件架构为什么需要软件架构从零到一构建支付跨平台软件架构1.抽象业务流程2.加入路由机制3.管理网络请求4.规范数据传递总结背景作为一个重要业务ÿ ... [详细]
  • remote 移除_remote模块的使用(四)
    微信公众号:[猫十二的日常],欢迎留言和指出问题a在electron中的一些模块,它是区分进程的,有些模块只能是主进程可以使 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
author-avatar
q40796672
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有