React Native,自动更新.js文件

时间:2015-08-09 01:22:51

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

我的想法是让我的反应原生应用程序更新,其js文件形成网络。在每次加载时(仅当有更新时)。 这有两个方法。

首先是在v8中进行。 使用diffrenet require函数,

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

myRequire植入基于此answer

这种方法有两个问题

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

第二种方法

使用执行http请求的本机IOS模块来获取文件,并更新包文件, 并且javascript保持不变。

有些人如何支持第二种方法。但我对ios devlopment的了解不多。

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

1 个答案:

答案 0 :(得分:2)

我回答我自己的问题,我应该在反应原生的Github页面上问这个问题。

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

//AppDelegate.m

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

点对您编译的webpack文件进行原生反应,然后上传到您的服务器并将网址插入 jsCodeLocation 变量。

index.ios.bundle 内容实际上是http://localhost:8081/index.ios.bundle?dev=false&minify=true 开发服务器编译版

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

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

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

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