[关闭]
@yzzer 2020-05-04T21:50:14.000000Z 字数 3251 阅读 558

React Native 目录结构

我们来看看刚刚创建的项目。

一个新的 React Native 项目,根目录下的文件和目录结构如下

  1. └── hello
  2. ├── App.js
  3. ├── __tests__
  4. ├── android
  5. ├── app.json
  6. ├── babel.config.js
  7. ├── index.js
  8. ├── ios
  9. ├── metro.config.js
  10. ├── node_modules
  11. ├── package.json
  12. ├── package-lock.json
  13. └── yarn.lock
  14. 4 directories, 8 files

总共有 4 个目录和 8 个文件。

文件 说明
App.js 项目的实际 React Native 源码,主要是存放入口组件 App 的源码
app.json 项目的配置文件
index.js 项目的入口文件,如果需要全局加载和全局配置,可以把代码写在这里

app.json

app.json 是项目的配置文件,存放了一些公共的配置项。

新创建的项目,app.json 内容如下

  1. {
  2. "name": "hello",
  3. "displayName": "hello"
  4. }
属性 说明
name 用于配置项目的名称
displayName 用于配制生成 iOS 和 Android 项目时的显示名称,也就是桌面上图标下面的名称。

index.js

index.js 是项目的入口文件,一些初始化的加载和初始化配置都放在这里。

新创建的项目,index.js 内容如下

  1. /**
  2. * @format
  3. */
  4. import {AppRegistry} from 'react-native';
  5. import App from './App';
  6. import {name as appName} from './app.json';
  7. AppRegistry.registerComponent(appName, () => App);

代码很简单,就是加载 App.js 中的 App 组件,然后使用 AppRegistry.registerComponent() 函数注册组件和初始化。

一般情况下,如果需要全局加载和全局配置,可以把代码写在这里

App.js

App.js 是项目的实际 React Native 源码,主要是存放入口组件 App

新创建的项目,App.js 内容如下

  1. /**
  2. * Sample React Native App
  3. * https://github.com/facebook/react-native
  4. *
  5. * @format
  6. * @flow
  7. */
  8. import React from 'react';
  9. import {
  10. SafeAreaView,
  11. StyleSheet,
  12. ScrollView,
  13. View,
  14. Text,
  15. StatusBar,
  16. } from 'react-native';
  17. import {
  18. Header,
  19. LearnMoreLinks,
  20. Colors,
  21. DebugInstructions,
  22. ReloadInstructions,
  23. } from 'react-native/Libraries/NewAppScreen';
  24. const App: () => React$Node = () => {
  25. return (
  26. <>
  27. <StatusBar barStyle="dark-content" />
  28. <SafeAreaView>
  29. <ScrollView
  30. contentInsetAdjustmentBehavior="automatic"
  31. style={styles.scrollView}>
  32. <Header />
  33. {global.HermesInternal == null ? null : (
  34. <View style={styles.engine}>
  35. <Text style={styles.footer}>Engine: Hermes</Text>
  36. </View>
  37. )}
  38. <View style={styles.body}>
  39. <View style={styles.sectionContainer}>
  40. <Text style={styles.sectionTitle}>Step One</Text>
  41. <Text style={styles.sectionDescription}>
  42. Edit <Text style={styles.highlight}>App.js</Text> to change this
  43. screen and then come back to see your edits.
  44. </Text>
  45. </View>
  46. <View style={styles.sectionContainer}>
  47. <Text style={styles.sectionTitle}>See Your Changes</Text>
  48. <Text style={styles.sectionDescription}>
  49. <ReloadInstructions />
  50. </Text>
  51. </View>
  52. <View style={styles.sectionContainer}>
  53. <Text style={styles.sectionTitle}>Debug</Text>
  54. <Text style={styles.sectionDescription}>
  55. <DebugInstructions />
  56. </Text>
  57. </View>
  58. <View style={styles.sectionContainer}>
  59. <Text style={styles.sectionTitle}>Learn More</Text>
  60. <Text style={styles.sectionDescription}>
  61. Read the docs to discover what to do next:
  62. </Text>
  63. </View>
  64. <LearnMoreLinks />
  65. </View>
  66. </ScrollView>
  67. </SafeAreaView>
  68. </>
  69. );
  70. };
  71. const styles = StyleSheet.create({
  72. scrollView: {
  73. backgroundColor: Colors.lighter,
  74. },
  75. engine: {
  76. position: 'absolute',
  77. right: 0,
  78. },
  79. body: {
  80. backgroundColor: Colors.white,
  81. },
  82. sectionContainer: {
  83. marginTop: 32,
  84. paddingHorizontal: 24,
  85. },
  86. sectionTitle: {
  87. fontSize: 24,
  88. fontWeight: '600',
  89. color: Colors.black,
  90. },
  91. sectionDescription: {
  92. marginTop: 8,
  93. fontSize: 18,
  94. fontWeight: '400',
  95. color: Colors.dark,
  96. },
  97. highlight: {
  98. fontWeight: '700',
  99. },
  100. footer: {
  101. color: Colors.dark,
  102. fontSize: 12,
  103. fontWeight: '600',
  104. padding: 4,
  105. paddingRight: 12,
  106. textAlign: 'right',
  107. },
  108. });
  109. export default App;

大家只要知道,一般情况下,开发项目都是从 App.js 中文件开始的。
YPPSAI.png

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注