2017-04-14 33 views
1

我決定將我的移動應用程序端項目的開發從native swift交換到跨平臺React native。當我嘗試開始這樣做時,發生在我身上的即時障礙是想知道如何通過Cocoapods以反應本機方式訪問我在Swift中使用的所有庫。例如,我使用了大量Amazon Web Services Swift庫和Chameleon Swift顏色庫。有沒有辦法將所有這些swift庫/使他們在React Native中可訪問,還是必須查找所有這些庫的native/javascript版本?是否有可能在React Native中使用我的Swift庫?

回答

1

有很多預製的React Native組件都是由Facebook團隊編寫的,也是反應原生社區。但是,從您的問題看來,您有一些非常特定的本機代碼,您需要找到一種方法在將來的React Native應用程序中運行。 我可以給你的問題「我應該使用哪些圖書館,如果他們中的任何一個」提供的信息是「它取決於」的最佳答案。

我已經爲Android和iOS構建了一些React Native移動應用程序,並且在這些應用程序中Swift中存在的功能有時可以用JavaScript編寫 - 例如,使用fetch api調用web服務內置到React Native中。如果您正在調用的AWS服務接受基本的HTTP請求,那麼這可能是您可以使用JavaScript編寫的東西。

如果您正在做更復雜的事情,比如從S3下載文件,您可能需要使用類似於社區內建的react-native-fetch-blob之類的東西,這在我需要下載文件時運行良好。您需要在請求頭中提供所需的任何SWS身份驗證令牌。

另一種選擇是編寫你自己的Native Module。這些應用程序邏輯塊是您在javascript中以原生方式調用的。它們非常強大,因爲它們允許您在原生直接應用程序中完成基本上可以完成的任何操作。它們是用本地平臺語言編寫的,因此Obj-C適用於iOS,Java適用於Android(但如果您覺得雄心勃勃,可以在Swift中編寫它們 - 我沒有嘗試過)。然後,這些本機模塊可以調用已存在的AWS Swift庫。我的直覺說這可能是最適合你需求的解決方案。本地模塊的一個明顯的缺點是它們是本地的,所以你需要爲你支持的每個平臺編寫一個(大概是iOS和Android)。

也可以選擇將React Native合併到您的existing application中。您的想法可以是慢慢地在React Native中構建應用程序的新組件,或者通過零碎的方式將當前邏輯重寫爲React Native,從而一次只需要較小的叮咬,因此整個任務看起來不那麼令人生畏。

最後,Chameleon Swift看起來是一個UI庫。如果您使用React Native,您似乎不希望繼續使用此庫,因爲React Native是移動應用程序的「前端」(等等)。但是,如果你覺得這麼渴望,你可以編寫一個本地模塊,理論上它可以調用變色龍庫爲你提供顏色的十六進制值。我不知道這是否會運行良好,可能不會很高性能,所以我不建議您嘗試繼續在直接反應本機應用程序中使用此庫(但肯定如果您使用混合應用程序,往上看!)。 React native有它自己的酷工具,但是,您可以使用它來使您的應用更加棒(herehere,here)。

Phew,我希望這是有用的。

相關問題