Jimliu


一只刚上路的前端程序猿


React Native 移动APP架构升级

之前一篇文章总结了关于APP的技术选型及开发过程中遇到的各种坑点。由于时间紧迫,所以开发第一期以做完需求和熟悉React Native为目标。

APP上线后我进行总结思考,开发APP过程中需要有哪些点需要优化。

这是画的架构图

img

  • 移动端组件

  • 埋点

  • Bundle拆分

  • 热更新服务

一、移动端组件

在和产品经理及UI沟通后,设计一套移动端组件,以便可以更快速的开发并完成需求。

img

二、埋点

之前的目标是做一个无痕埋点,收集APP所有点击事件,但是发现必须要在Native端做文章,但是要掌握Android和ios两端 时间成本太高,无奈只好改用别的方式。

  • 改写组件,给组件添加click方法,利用ref方式记录所点击的组件,配合之前做的web端无痕埋点分析工具来进行统计分析。

  • 增加layout组件记录页面加载。

bundle

三、Bundle文件拆分

按照业务线来拆分文件夹

bundle

React Native 官方提供了一个打包工具Metro

bundle

我们使用Metro打包工具,按照业务线拆分bundle为 base.bundle、review.bundle、otb.bundle 等。在Android和ios端控制先加载基础bundle在按需加载业务bundle逻辑。实现bundle按需加载。

四、codepush热更新服务

第一期需求上线前,我发现APP中忘记加更新策略了,所以当时就使用接口 + 弹窗下载链接的方式进行更新。如果有更新必须经过苹果商店审核,不能及时有效进行bug修复。所以需要进行热更新的接入。

第一步我们先使用codepush服务来进行热更新。

搭建私有的codepush服务 仓库

Native APP中接入codepush。

接下来我会搭建bundle管理平台来进行基于用户的灰度发布。

codepush

完!

最近的文章

cookie SameSite

背景1.我们业务系统有被第三方系统嵌套使用,通过Node端下发cookie来实现一键登录。 2.Chrome 80.0中将SameSite的默认值设为Lax。 解释SameSite详解SameSite Cookie,防止 CSRF 攻击因为 HTTP 协议是无状态的,所以很久以前的网站是没有登录这个 …

于  chrome, js 继续阅读
更早的文章

再谈跨域

之前有写过什么样情况下是跨域和一般跨域的解决方案。 之前状态我在工作中 一般遇到跨域会通过jsonp或者同域代理来解决。一般情况下不需要使用其他的技术方案。 需求场景前端: 各个独立域名的系统需要统一公共头及导航。对接统一的用户中心及导航权限。 后端: 使用node像前端下发,需要当前用户权限。 开 …

于  js 继续阅读