平台模块
适用于Vega的React Native提供了一个平台模块,用于检测您的应用在其上运行的平台。在Vega OS上,您可以使用这个模块来执行特定于Vega的代码。Platform.OS
Platform.OS属性返回一个代表当前平台的字符串。注意: 在Vega OS上,Platform.OS返回'kepler'。
Platform.select()
Platform.select() 方法返回您当前运行所在平台的值。使用kepler作为特定与Vega的值的密钥。
特定于平台的扩展
当您的特定于平台的代码较为复杂时,应将代码拆分为单独的文件。React Native将检测文件何时具有特定于平台的扩展名,并在需要时从其他组件加载相关的平台文件。 对于Vega OS,使用.kepler扩展名。
示例
假设您的项目中有以下文件:- 在Vega OS上:
Button.kepler.tsx已加载 - 在iOS上:
Button.ios.tsxis loaded - 在Android 14上:
Button.android.tsx已加载
支持的扩展
您可以将.kepler扩展名用于以下文件类型:
.kepler.tsx- 带有JSX的TypeScript.kepler.ts- TypeScript.kepler.jsx- 带有JSX的JavaScript.kepler.js- JavaScript
树摇和特定于平台的代码
Vega OS上完全支持特定于平台的树摇。这意味着,当您构建应用时,Bundler将自动排除其他平台的代码,从而减小您的程序包大小。工作方式
当您使用特定于平台的文件扩展名(如.kepler.tsx)时,构建系统将:
- 在构建过程中检测目标平台
- 在Vega OS Bundle中仅包含
.kepler文件 - 从最终Bundle中排除
.ios和.android文件 - 移除未使用的特定于平台的代码分支
重要注意事项
由于Vega OS在平台系统中注册为kepler,因此必须在特定于平台的文件名中使用kepler关键字(而非vega),才能使摇树正常作用。
正确:
最佳实践
- 针对显著差异使用特定于平台的文件:如果不同平台之间的实现有很大差异,请使用扩展名为
.kepler的单独文件。 - 针对细微差别使用Platform.select():对于样式或简单条件逻辑等小变化,请在单个文件中使用
Platform.select()或Platform.OS检查。 - 在公共文件中保留共享逻辑:将与平台无关的逻辑提取到没有平台扩展的共享文件中,以最大限度地重复使用代码。
- 利用树摇:使用特定于平台的扩展,确保您的Vega OS Bundle仅包含相关代码,从而提高性能并减小Bundle大小。

