2015-08-14 18 views
10

我正在尋找一個React-Native應用程序。我希望能夠在設備上運行時下載新模塊以擴展功能。將會有一些核心邏輯知道如何根據像dbs這樣的一些表單輸入來請求新模塊。我不想把所有東西都捆綁到一個單一的捆綁包中,這是我認爲現在使用內置包裝器發生的事情。將React-Native應用程序分解爲可插入模塊

這將類似於RequireJS如何在瀏覽器的東西。我需要知道的是:

  1. 如何構建獨立模塊?反應-本地捆綁似乎並沒有讓我選擇哪根模塊與開始和僅適用於根項目
  2. 我怎樣才能在運行時請求新的功能被注入到當前的JavaScript環境?

回答

0

我能夠得到相當接近這個只有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)。

2

通過在JS束指向本地做出反應開始。這意味着您至少必須重新啓動應用才能重新加載js包(假設您正在從服務器讀取數據,而不是從ios設備本身讀取數據)。

如果您確實有辦法更新服務器上的js文件(通過基於用戶所做更新的某種Web服務),那麼重新啓動應用程序理論上可以重新加載JS併爲應用程序提供新功能。

+0

這就是當前React-Native的工作原理。我實際上甚至不需要更新jsbundle,因爲他們已經通過他們的包裝器提供了這種機制,這些包裝器在您啓動示例應用程序時運行。只需保存更新後的節點模塊,打包程序就會重新打包併爲應用程序提供服務。我正在尋找的是能夠啓動類似引導程序的東西,然後可以請求第二個程序包來擴充當前運行的react-native程序。 – Bob9630

+0

據我所知,這是無計劃的,而且很難做....我不是一個iOS大師。 – Braden

相關問題