热门标签 | 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



推荐阅读
  • 微信小程序中实现位置获取的全面指南
    本文详细介绍了如何在微信小程序中实现地理位置的获取,包括通过微信官方API和腾讯地图API两种方式。文中不仅涵盖了必要的准备工作,如申请开发者密钥、下载并配置SDK等,还提供了处理用户授权及位置信息获取的具体代码示例。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文深入探讨了JavaScript中实现继承的四种常见方法,包括原型链继承、构造函数继承、组合继承和寄生组合继承。对于正在学习或从事Web前端开发的技术人员来说,理解这些继承模式对于提高代码质量和维护性至关重要。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Asp.net MVC 中 Bundle 配置详解:合并与压缩 JS 和 CSS 文件
    本文深入探讨了 Asp.net MVC 中如何利用 Bundle 功能来合并和压缩 JavaScript 和 CSS 文件,提供了详细的配置步骤和示例代码,适合开发人员参考学习。 ... [详细]
  • 本文详细介绍了Java集合框架中的Collection体系,包括集合的基本概念及其与数组的区别。同时,深入探讨了Comparable和Comparator接口的区别,并分析了各种集合类的底层数据结构。最后,提供了如何根据需求选择合适的集合类的指导。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 本文详细介绍了ActivityManagerService (AMS) 的工作原理及其在Android系统中的重要角色。AMS作为system_server进程的一部分,在系统启动时加载,负责管理和协调应用程序中的Activity和服务(Service)。文章将通过具体的接口图和通信流程,帮助读者更好地理解AMS的工作机制。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 深入解析SSL Strip攻击机制
    本文详细介绍了SSL Strip(一种网络攻击形式)的工作原理及其对网络安全的影响。通过分析SSL与HTTPS的基本概念,探讨了SSL Strip如何利用某些网站的安全配置不足,实现中间人攻击,以及如何防范此类攻击。 ... [详细]
  • 掌握Spring MVC中自定义类型转换与格式化的技巧
    近期,在开发一款小程序的过程中遇到了几个Spring MVC接口需要传递时间参数的问题。本文将详细介绍如何利用Java 8 Time API在Spring MVC中实现时间参数的自定义类型转换和格式化。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文探讨了浏览器的同源策略限制及其对 AJAX 请求的影响,并详细介绍了如何在 Spring Boot 应用中优雅地处理跨域请求,特别是当请求包含自定义 Headers 时的解决方案。 ... [详细]
  • 详细指南:使用IntelliJ IDEA构建多模块Maven项目
    本文在前两篇文章的基础上,进一步指导读者如何在IntelliJ IDEA中创建和配置多模块Maven项目。通过详细的步骤说明,帮助读者掌握项目模块化管理的方法。 ... [详细]
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社区 版权所有