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

Bob*_*630 10 javascript node.js react-native

我想写一个React-Native应用程序.我希望能够在设备上运行时下载新模块以扩展功能.会有一些核心逻辑知道如何基于某些表单输入(如dbs)请求新模块.我不想将所有内容捆绑到单个整体捆绑包中,这是我认为现在使用内置打包器发生的事情.

这与RequireJS在浏览器中的工作方式类似.我需要知道的是:

  1. 如何构建独立模块?react-native bundle似乎不允许我选择开始使用哪些根模块,并且仅适用于根项目
  2. 如何在运行时请求将新功能注入当前的JavaScript环境?

Bob*_*630 0

我只用 JS 就能得到与此非常接近的东西。首先,我必须在当前的react-native捆绑器中公开更多选项,主要是其打包器的url(用于更改“主”模块)和黑名单(以防止在第二个捆绑包中捆绑react-native)选项(http ://github.com/facebook/react-native/blob/master/packager/README.md)。

然后,我必须编写一个自定义获取器来下载第二个包并用于eval()在当前环境中对其进行评估。

一个问题是我必须__d('react-native',[],require('react-native'))在第一个包中添加它,我认为它的工作方式define()与 require.js 类似。这会将“react-native”导出为未损坏的名称,我插入的模块可以通过正常的 require() 语句访问该名称。一开始有点令人困惑,但据我所知,React-native 打包器的工作方式有点像 r.js(请参阅http://requirejs.org/docs/optimization.html)。