我希望编写一个React-Native应用程序。我希望能够在设备上运行时下载新模块以扩展功能。会有一些核心逻辑知道如何基于某些表单输入(如dbs)请求新模块。我不想将所有内容捆绑到单个整体捆绑包中,这是我认为现在使用内置打包器发生的事情。
这与RequireJS在浏览器中的工作方式类似。我需要知道的是:
答案 0 :(得分:2)
通过指向JS包来反应本机启动。这意味着您至少必须重新启动应用程序才能重新加载js包(假设您正在从服务器而不是从ios设备本身读取它)。
如果你确实有办法更新服务器上的js文件(通过某种基于用户所做事情更新的web服务),那么重新启动应用程序理论上可以重新加载JS并为应用程序提供新功能。
答案 1 :(得分:0)
我只能在JS中获得与此非常接近的东西。首先,我必须在当前的react-native bundler中公开更多选项,主要是url(更改“main”模块)和黑名单(以防止在第二个bundle中捆绑react-native)选项到他们的packager({ {3}})。
然后我必须编写一个自定义提取器,它将下载第二个包并使用eval()
在当前环境中对其进行评估。
一个问题是,我必须在第一个包中添加__d('react-native',[],require('react-native'))
,我认为它来自require.js,就像define()
一样。这会将“react-native”导出为一个未插入的名称,我插入的模块可以通过普通的require()语句访问。起初有点令人困惑,但从我可以告诉他们React-native packager的工作方式有点像r.js(参见http://github.com/facebook/react-native/blob/master/packager/README.md)。