树外平台
React Native 不仅仅适用于 Android 和 iOS 设备——我们的合作伙伴和社区维护着将 React Native 引入其他平台的项目,例如
来自合作伙伴
- React Native macOS - 适用于 macOS 和 Cocoa 的 React Native。
- React Native Windows - 适用于微软通用 Windows 平台 (UWP) 的 React Native。
- React Native visionOS - 适用于苹果 visionOS 的 React Native。
来自社区
- React Native tvOS - 适用于 Apple TV 和 Android TV 设备的 React Native。
- React Native Web - 在 Web 上使用 React DOM 的 React Native。
- React Native Skia - 使用 Skia 作为渲染器的 React Native。目前支持 Linux 和 macOS。
创建你自己的 React Native 平台
目前,从零开始创建 React Native 平台的过程文档还不完善——即将进行的重构 (Fabric) 的目标之一就是让平台维护变得更容易。
打包
从 React Native 0.57 开始,你现在可以将你的 React Native 平台注册到 React Native 的 JavaScript 打包器 Metro。这意味着你可以向 npx react-native bundle
传递 --platform example
,它将查找带有 .example.js
后缀的 JavaScript 文件。
要将你的平台注册到 RNPM,你的模块名称必须符合以下模式之一
react-native-example
- 它将搜索所有以react-native-
开头的顶级模块@org/react-native-example
- 它将在任何作用域下搜索以react-native-
开头的模块@react-native-example/module
- 它将在所有以@react-native-
开头的作用域下的模块中搜索
你还必须在你的 package.json
中有这样一个条目
json
{
"rnpm": {
"haste": {
"providesModuleNodeModules": ["react-native-example"],
"platforms": ["example"]
}
}
}
"providesModuleNodeModules"
是一个模块数组,它们将被添加到 Haste 模块搜索路径中,而 "platforms"
是一个平台后缀数组,它们将被添加为有效平台。