您可以使用本地依赖项将库添加到Expo反应原生项目中吗?

问题描述:

你可以在世博项目中使用像https://github.com/tolu360/react-native-google-places这样的图书馆吗?我认为任何npm库都可以添加,但像谷歌这样的库放置选择器需要安装后步骤来链接本地项目。他们是否支持世博会?您可以使用本地依赖项将库添加到Expo反应原生项目中吗?

Regular Expo项目仅以JavaScript编写,不支持包含Objective-C或Java的npm包。但是,当您绝对需要使用自定义本机代码时,Expo提供了一个名为ExpoKit的高级SDK。来自世博会文档:

通常,博览会应用程序是用纯JS编写的,并且从未将“ ”下拉到本地iOS或Android图层。这是世博会 理念的核心,也是世博会快速而强大的部分原因,可用于 。

但是,在某些情况下,高级开发人员需要本地 功能,而不是世博会开箱即用的功能。 最常见的情况是,当项目需要特定的本机模块 时,React Native Core或Expo SDK不支持该模块。

您可以“分离”您的Expo项目以创建包含ExpoKit的Xcode和Android Studio项目。然后,您将像使用任何其他Xcode或Android Studio项目一样添加自定义Objective-C或Java。

然而,世博会的文件也警告说,编写自定义本机代码的一些缺点;许多功能通常可以在JS中很好地实现,使您可以保留标准世博项目的所有优点。

警告:我们不鼓励我们的大多数开发商采取这条路线, 因为我们相信几乎所有你需要做的一切是更好的与JS跨平台的方式来实现 。

使用JS编写代码,您可以充分利用无线代码 的部署优势,并从世博会持续更新和支持中受益。 如果您有来自世博会本地支持的原生 代码的特定需求,例如(对于 示例),必须在设备上本地发生 专用CPU密集型视频处理,您应该只这样做。

+0

+1。根据你的回答,我无法使用[react-native-fs](https://github.com/itinance/react-native-fs),因为它需要'react-native link',而且[react-native -fetch-BLOB](https://github.com/wkh237/react-native-fetch-blob)。有一个[react-native-fs]的expo版本(https://github.com/expo/exponent-react-native-fs),但无法使其工作。你能帮我解决吗? 谢谢 –

+1

@ lal-zada Expo 2.0已经支持文件系统:https://docs.expo.io/versions/latest/sdk/filesystem.html – ronin1184