【问题标题】:React Native , Auto update .js filesReact Native,自动更新 .js 文件
【发布时间】:2015-11-01 05:14:47
【问题描述】:

我的想法,是让我的 react 原生应用更新,它的 js 文件形成网络。在每次加载时(仅当有更新时)。 有两种方法。

第一个是在 v8 中进行。 使用不同的需求函数,

myRequire(jsUrl, './offlineLocalJs.js');

myRequire 基于此answer 植入。

这种方法有两个问题

  • 如果 myRequire 是 async ,那么每个模块都会写成 promises/callbacks
  • myRequrie 是同步的。所以应用加载时间会变慢

第二种方法

使用本地 IOS 模块执行 http 请求以获取文件,并更新捆绑文件, 并且 javascript 保持原样。

我是如何支持第二种方法的。但是我对ios开发了解不多。

我很高兴听到关于这个想法和建议的想法 谢谢

【问题讨论】:

  • 为 iOS 和 Android 编写原生模块。一个好的起点是查看当前发生的事情。从您的 AppDelegate.m 开始。早点担心线下案例。

标签: javascript ios node.js reactjs react-native


【解决方案1】:

我正在回答我自己的问题,我可能应该在 react-native Github 页面上问这个问题。

我通过更改 AppDelegate.m 中的 jsCodeLocation 解决了这个问题

//AppDelegate.m

//original line (development mode)
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"]; change it to 

点 react native 到你编译的 webpack 文件,并上传到你的服务器并将 url 插入到 jsCodeLocation 变量中。

index.ios.bundle内容其实是http://localhost:8081/index.ios.bundle?dev=false&minify=truedev server编译版

的内容
//Point RN to my complied js file  
jsCodeLocation = [NSURL URLWithString:@"http://s3-bucket.com/index.ios.bundle.js"];

我在这个解决方案中缺少的一件事是网络检查。 如果没有可用的互联网,我应该回退到静态/默认版本。

这个解决方案让我能够通过上传新的 js 包来自动更新我的应用程序。

我什至可以添加更多的 npm 模块,只要它们是纯 js(没有二进制文件)。

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多