2015-07-20 68 views
3

我想重複使用一些從兩個應用程序的API中檢索數據的代碼。一個是使用React Native的iOS應用程序。另一個是使用React.js的網站。在React.js和React Native應用程序之間重複使用代碼

我最初編寫了從我的API應用程序中檢索數據的類。因此,我使用了React Native中的fetch方法。

不幸的是,React.js中沒有這樣的方法。 如果我想重用我的代碼,我最好的選擇是通過創建類HTTPRequests來抽象React Native的fetch方法的調用,方法fetch將調用React Native的fetch方法或'$ .get'方法,具體取決於項目使用的庫:React.js或React Native。

我的問題如下:如何檢測我的項目中使用React.js或React Native。我的第一個想法是檢測我的JS代碼是否通過RCTRootView引擎或瀏覽器執行。但我不知道如何做到這一點。

有什麼建議嗎?

謝謝!

+2

有一些庫在瀏覽器中實現了獲取API,例如:https://github.com/github/fetch。 –

回答

3

我的建議是將共享邏輯移動到單獨的模塊(bower,npm,ES6)中,通過獲取polyfill來概括您請求數據的方式,並且永遠不會在您的項目中檢測到React/React.native。當新版本的React/React.native出現時,JS代碼檢測將使您的代碼變得複雜且難以支持。

+0

是的,你是對的。我終於設法不必根據我使用的庫創建兩個案例。 –

+0

我很好奇你如何創建共享文件?你使用browserify? –

+1

@AndyB我的經驗法則是一個單獨的npm包,你甚至可以在你的package.json中使用本地依賴https://docs.npmjs.com/files/package.json#local-paths與npm 2.0,我會還建議linklocal包的開發使用 –

相關問題