多平台支持
React Native不仅适用于 Android 和 iOS - 还有社区支持的项目将其应用于其他平台,例如:
- React Native Windows - React Native 支持 Microsoft Universal Windows Platform (UWP) 和 Windows Presentation Foundation (WPF)
- React Native DOM - 一个实验性的、全面的 React Native 到 web 的端口。(不要与React Native Web混淆,两者目标不同)
- React Native Desktop - 一个旨在通过 Qt 的 QML 将 React Native 带到桌面的项目。React Native Ubuntu的一个分支,已不再维护。
- React Native macOS - 针对 macOS 和 Cocoa 的实验性 React Native 分支
- React Native tvOS - 为 Apple tvOS 适配 React Native
- alita - 一个实验性的、综合性的 React Native 到微信小程序的端口
- Proton Native - React Native 的封装器,使用 Qt 面向 Linux、MacOS 和 Windows
创建你自己的 React Native 平台
目前,从头开始创建 React Native 平台的过程并没有很好的记录——即将到来的全新架构(Fabric)的目标之一是使平台的维护更容易。
打包
从 React Native 0.57 开始,你现在可以使用 React Native 的 JavaScript 打包器Metro注册你的 React Native 平台。这意味着你可以将--platform example
传递给npx react-native bundle
,它会查找带有.example.js
后缀的 JavaScript 文件。
要将你的平台注册到 RNPM,模块名称必须与以下模式之一匹配:
react-native-example
- 它会搜索所有以react-native-
开头的顶级模块@org/react-native-example
- 它会在所有范围内搜索以react-native-
开头的模块@react-native-example/module
- 它会在名称以@react-native-
开头的范围内搜索所有模块
你还必须在package.json
中设置一些内容,如下所示:
{
"rnpm": {
"haste": {
"providesModuleNodeModules": ["react-native-example"],
"platforms": ["example"]
}
}
}
"providesModuleNodeModules"
是一组将被添加到 Haste 模块搜索路径的模块,"platforms"
则是一组将作为有效平台添加的平台后缀。