将React-Native应用程序分解为可插入模块

将React-Native应用程序分解为可插入模块

问题描述:

我正在寻找一个React-Native应用程序。我希望能够在设备上运行时下载新模块以扩展功能。将会有一些核心逻辑知道如何根据像dbs这样的一些表单输入来请求新模块。我不想把所有东西都捆绑到一个单一的捆绑包中,这是我认为现在使用内置包装器发生的事情。将React-Native应用程序分解为可插入模块

这将类似于RequireJS如何在浏览器的东西。我需要知道的是:

  1. 如何构建独立模块?反应-本地捆绑似乎并没有让我选择哪根模块与开始和仅适用于根项目
  2. 我怎样才能在运行时请求新的功能被注入到当前的JavaScript环境?

我能够得到相当接近这个只有JS的东西。首先,我不得不在目前的反应本地捆绑暴露出一些更多的选择,主要是,该URL(改变“主”模块)和黑名单选项,以他们的打包(从捆绑反应母语在第二束保持)(http://github.com/facebook/react-native/blob/master/packager/README.md )。

然后我不得不写一个自定义的提取程序,将下载的第二束和使用eval()在当前的环境下对其进行评估。

唯一的问题是我必须在第一个包中添加__d('react-native',[],require('react-native')),我认为它的工作方式与require.js中的define()类似。这会导出'react-native'作为一个不受欢迎的名称,我插入的模块可以通过正常的require()语句访问。起初有点令人困惑,但从我所知道的他们看来,React-native包装工程师有点像r.js(请参阅http://requirejs.org/docs/optimization.html)。

通过在JS束指向本地做出反应开始。这意味着您至少必须重新启动应用才能重新加载js包(假设您正在从服务器读取数据,而不是从ios设备本身读取数据)。

如果您确实有办法更新服务器上的js文件(通过基于用户所做更新的某种Web服务),那么重新启动应用程序理论上可以重新加载JS并为应用程序提供新功能。

+0

这就是当前React-Native的工作原理。我实际上甚至不需要更新jsbundle,因为他们已经通过他们的包装器提供了这种机制,这些包装器在您启动示例应用程序时运行。只需保存更新后的节点模块,打包程序就会重新打包并为应用程序提供服务。我正在寻找的是能够启动类似引导程序的东西,然后可以请求第二个程序包来扩充当前运行的react-native程序。 – Bob9630

+0

据我所知,这是无计划的,而且很难做....我不是一个iOS大师。 – Braden