ReactNative 能否实现类似小程序那样的功能,动态从网络上按需下载 js bundle 并渲染成页面

2017-08-25 08:26:00 +08:00
 Rice

首先这是企业应用,不用上架,不用担心政策问题。

ReactNative 能否实现类似的功能,像小程序一样,用户点击某个模块入口,ReactNative 才从服务器下载模块对应的 js bundle 再渲染成页面。

如果是用 h5、webview 啊之类的方法倒是很简单能实现,但是如果用 react native 能否实现类似的功能。

3452 次点击
所在节点    问与答
12 条回复
SourceMan
2017-08-25 08:46:40 +08:00
RN 热更新应该就是这样实现的,不过是远程下发 bundle
https://github.com/fengjundev/React-Native-Remote-Update
D3EP
2017-08-25 08:55:33 +08:00
qunar?
Rice
2017-08-25 09:17:51 +08:00
@SourceMan #1
不过这种看来好像是整个 bundle 都下载下来啊,不知道能否拆分 bundle 按需下载。

@D3EP #2
qunar 是什么?
pljhonglu
2017-08-25 09:56:22 +08:00
可以多个 bundle
safedogcc
2017-08-25 10:20:57 +08:00
一年前做过类似的产品,每个小程序都是一个组件,从而进行打包后(除去已有的模块),体积也就几十上百 kb,然后请求读取内容后 eval 注册层组件再渲染, 体验没问题。

优点就是加载速度快,缺点很明显,安全是一大问题,比如本地存储资源,得自己改造源码,弄各种权限,小程序的配置。。 等等

总之,写过的才懂得有多麻烦,所以微信小程序从另一个方面来说,也还是很碉的
lipeiwei
2017-08-25 10:50:26 +08:00
1. 原生 android/iOS 是运行 react-native 的基础,相当于容器。所以只要容器功能能够满足 react-native app,那就可以通过替换 js bundle 进行动态更新。举一下几个无法动态更新的栗子:
+ 假设在新版本中,你用原生代码( java/oc )实现了一个酷炫上下拉功能的 ListView,导出作为 NativeModule 给 react-native 使用。这时候如果你仅仅只更新 js bundle,那不好意思,肯定是会有问题的,因为找不到对应支持的原生模块
+ 如果你升级了 react-native 版本,这时候可能原生代码是有更改的(比如之前 RN@0.40 修改了 iOS 的头文件导入方式),那你也必须同时更新原生跟 js bundle
2. 拆分多个 bundle 也是可行的,一般是拆分为框架 bundle 跟业务 bundle,具体你可以参考携程等等,发展到现在,方案挺多的了
em70
2017-08-25 11:14:10 +08:00
为啥不直接用小程序做呢,分发还方便
Rice
2017-08-25 11:15:32 +08:00
@em70 企业应用
em70
2017-08-25 11:18:09 +08:00
@Rice 企业应用也可以啊,设置禁止被搜索到就行了
Rice
2017-08-25 11:23:34 +08:00
@em70 #9
合同规定
v2Panda
2017-08-25 11:45:10 +08:00
手 Q RN 按需加载,供参考: https://mp.weixin.qq.com/s/mUzq4NaBHeF3T-NStLzuRw
liangzhiyuan2015
2017-11-22 14:51:10 +08:00
ReactNative 能否实现类似小程序那样的功能,我们想实现一套自己的 ui 组件库,每一个版本都有不一样的 rn 组件,所以用到的 jar 包就会不一样,所以,就想 Android 那边能否通过远端加载资源的方式,将相关的 zip 解压后再渲染成页面?谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/385609

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX