V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Rice
V2EX  ›  问与答

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

  •  
  •   Rice · Aug 25, 2017 · 4178 views
    This topic created in 3179 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    总之,写过的才懂得有多麻烦,所以微信小程序从另一个方面来说,也还是很碉的
    vasoner
        6
    vasoner  
       Aug 25, 2017   ❤️ 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  
       Aug 25, 2017
    为啥不直接用小程序做呢,分发还方便
    Rice
        8
    Rice  
    OP
       Aug 25, 2017 via iPhone
    @em70 企业应用
    em70
        9
    em70  
       Aug 25, 2017
    @Rice 企业应用也可以啊,设置禁止被搜索到就行了
    Rice
        10
    Rice  
    OP
       Aug 25, 2017
    @em70 #9
    合同规定
    v2Panda
        11
    v2Panda  
       Aug 25, 2017   ❤️ 1
    手 Q RN 按需加载,供参考: https://mp.weixin.qq.com/s/mUzq4NaBHeF3T-NStLzuRw
    liangzhiyuan2015
        12
    liangzhiyuan2015  
       Nov 22, 2017
    ReactNative 能否实现类似小程序那样的功能,我们想实现一套自己的 ui 组件库,每一个版本都有不一样的 rn 组件,所以用到的 jar 包就会不一样,所以,就想 Android 那边能否通过远端加载资源的方式,将相关的 zip 解压后再渲染成页面?谢谢
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4169 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 05:12 · PVG 13:12 · LAX 22:12 · JFK 01:12
    ♥ Do have faith in what you're doing.