V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Rice
V2EX  ›  问与答

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

  •  
  •   Rice · 2017-08-25 08:26:00 +08:00 · 3444 次点击
    这是一个创建于 2640 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    12 条回复    2017-11-22 14:51:10 +08:00
    SourceMan
        1
    SourceMan  
       2017-08-25 08:46:40 +08:00 via iPhone   ❤️ 1
    RN 热更新应该就是这样实现的,不过是远程下发 bundle
    https://github.com/fengjundev/React-Native-Remote-Update
    D3EP
        2
    D3EP  
       2017-08-25 08:55:33 +08:00 via Android   ❤️ 1
    qunar?
    Rice
        3
    Rice  
    OP
       2017-08-25 09:17:51 +08:00
    @SourceMan #1
    不过这种看来好像是整个 bundle 都下载下来啊,不知道能否拆分 bundle 按需下载。

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

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

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