Vega OS的平台特定代码
在为Vega OS构建应用时,您可能需要编写仅在Vega上运行的特定于平台的代码,或者整理代码以处理平台之间的差异。本指南介绍如何在Vega OS上使用特定于平台的扩展和平台模块。
平台模块
适用于Vega的React Native提供了一个平台模块,用于检测您的应用在其上运行的平台。在Vega OS上,您可以使用这个模块来执行特定于Vega的代码。
Platform.OS
Platform.OS属性返回一个代表当前平台的字符串。注意: 在Vega OS上,Platform.OS返回'kepler'。
import { Platform, StyleSheet } from 'react-native';
const styles = StyleSheet.create({
container: {
flex: 1,
...Platform.select({
kepler: {
backgroundColor: 'blue',
},
ios: {
backgroundColor: 'red',
},
android: {
backgroundColor: 'green',
},
}),
},
});
Platform.select()
Platform.select() 方法返回您当前运行所在平台的值。使用kepler作为特定与Vega的值的密钥。
import { Platform } from 'react-native';
const Component = Platform.select({
kepler: () => require('ComponentKepler'),
ios: () => require('ComponentIOS'),
android: () => require('ComponentAndroid'),
})();
特定于平台的扩展
当您的特定于平台的代码较为复杂时,应将代码拆分为单独的文件。React Native将检测文件何时具有特定于平台的扩展名,并在需要时从其他组件加载相关的平台文件。
对于Vega OS,使用.kepler扩展名。
示例
假设您的项目中有以下文件:
Button.kepler.tsx
Button.ios.tsx
Button.android.tsx
当您导入组件时。
import Button from './Button';
React Native将根据运行所在平台自动选择正确的文件:
- 在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),才能使摇树正常作用。
正确:
Button.kepler.tsx ✓
utils.kepler.js ✓
不正确:
Button.vega.tsx ✗
utils.vega.js ✗
最佳实践
-
针对显著差异使用特定于平台的文件: 如果不同平台之间的实现有很大差异,请使用扩展名为
.kepler的单独文件。 -
针对细微差别使用Platform.select(): 对于样式或简单条件逻辑等小变化,请在单个文件中使用
Platform.select()或Platform.OS检查。 -
在公共文件中保留共享逻辑: 将与平台无关的逻辑提取到没有平台扩展的共享文件中,以最大限度地重复使用代码。
-
利用树摇: 使用特定于平台的扩展,确保您的Vega OS Bundle仅包含相关代码,从而提高性能并减小Bundle大小。
其他资源
有关特定于React Native平台代码模式的更多信息,请参阅有关特定于平台代码的React Native文档(仅提供英文版)。
Last updated: 2026年1月13日

