」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > React Native 應用程式的資料夾結構

React Native 應用程式的資料夾結構

發佈於2024-07-29
瀏覽:852

Folder Structure of a React Native App

介绍

React Native 是一个强大的框架,用于使用 JavaScript 和 React 构建移动应用程序。当您深入使用 React Native 进行开发时,了解典型 React Native 项目的结构至关重要。每个文件夹和文件都有特定的用途,了解它们的角色将帮助您更有效地管理和导航项目。本文全面概述了 React Native 应用程序的文件夹结构,重点介绍了主要目录的内容和用途:根目录、android/ 文件夹和 ios/ 文件夹。

根目录

React Native 项目的根目录包含管理项目依赖项、配置和入口点的基本文件和文件夹。

关键文件和文件夹

  • node_modules/:包含通过npm或yarn安装的所有依赖项和子依赖项。通常,您不需要直接触摸此文件夹。
  • package.json:列出您的项目依赖项、脚本和其他元数据。这对于管理项目依赖关系和脚本至关重要。
  • package-lock.json或yarn.lock:锁定已安装依赖项的版本,确保不同环境下的一致性。
  • index.js:React Native应用程序的入口点,通常注册应用程序的主要组件。

核心文件夹

  • android/:包含原生 Android 代码和配置文件,如果您需要编写或修改原生 Android 代码,则需要此文件。
  • ios/:包含本机 iOS 代码和配置文件,对于编写或修改本机 iOS 代码至关重要。
  • app/ 或 src/:通常是 JavaScript/TypeScript 代码的主文件夹,例如组件、屏幕和服务。这是您的大部分应用代码所在的位置。

公共子文件夹(app/或src/内)

  • 组件/:可重用的 UI 组件,有助于在应用程序的不同部分组织和重用 UI 元素。
  • screens/:代表不同屏幕或视图的组件,使管理导航和单个屏幕变得更容易。
  • navigations/:导航配置和组件,用于定义应用程序的导航结构。
  • assets/:图像、字体和其他静态资源,使所有静态资源井然有序。
  • redux/(如果使用 Redux 进行状态管理):用于管理应用程序全局状态的操作、reducer 和存储配置。
  • styles/:跨组件和屏幕使用的通用样式,有助于保持一致的设计并简化样式管理。

配置和实用程序文件

  • .babelrc 或 babel.config.js:Babel 配置文件,定义 Babel 如何转译你的代码。
  • .eslintrc.js:ESLint 配置文件,为您的项目设置 linting 规则。
  • .prettierrc:Prettier配置文件,配置代码格式化规则。
  • metro.config.js:Metro 捆绑器的配置文件,React Native 使用的 JavaScript 捆绑器。
  • .gitignore:指定 git 存储库中要忽略的文件和目录。

android/文件夹

android/ 文件夹包含在 Android 设备或模拟器上构建和运行 React Native 应用程序所需的所有本机 Android 代码和配置文件。

关键文件和文件夹

  • build.gradle:顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。
  • gradle.properties:Gradle 构建系统的配置属性。
  • gradlewgradlew.bat:分别在基于 Unix 和 Windows 系统上运行 Gradle 命令的脚本。
  • settings.gradle:指定项目的模块,包括您的项目可能依赖的任何外部库或其他模块。

子文件夹

应用程序/

  • build.gradle:应用程序模块的构建文件,包含特定于您的应用程序的配置和依赖项。
  • src/:包含应用程序 Android 部分的源代码。
    • 主要的/
    • AndroidManifest.xml:向 Android 构建工具、Android 操作系统和 Google Play 描述有关应用程序的基本信息。
    • java/:包含 Java 或 Kotlin 源文件,包括 MainActivity.java 或 MainActivity.kt,应用程序的入口点。
    • res/:包含应用程序资源,例如布局、可绘制文件(图像)、字符串和应用程序使用的其他 XML 文件。
    • assets/:存储应用程序所需的原始资源文件,例如字体或其他二进制文件。
    • jniLibs/:包含您的应用程序依赖的预编译本机库(.so 文件)。

摇篮/

  • wrapper/:包含有助于 Gradle 构建系统的文件。
    • gradle-wrapper.jar:Gradle 包装器的 JAR 文件,允许您构建项目而无需用户安装 Gradle。
    • gradle-wrapper.properties:指定要使用的 Gradle 版本和其他属性。

ios/文件夹

ios/ 文件夹包含在 iOS 设备或模拟器上构建和运行 React Native 应用程序所需的所有本机 iOS 代码和配置文件。

关键文件和文件夹

  • Podfile:指定 React Native 应用程序的 iOS 部分的依赖项,由 CocoaPods 管理。
  • Podfile.lock:锁定Podfile中指定依赖的版本,保证不同环境下的一致性。
  • .xcworkspace:由 CocoaPods 生成的工作区文件,用于在 Xcode 中打开项目。
  • .xcodeproj:包含应用程序的项目设置和信息的 Xcode 项目文件。

子文件夹

/

  • AppDelegate.m 或 AppDelegate.swift:管理应用程序级事件和状态,iOS 应用程序的入口点。
  • Info.plist:包含应用程序的配置信息,例如捆绑包标识符、应用程序名称、权限和其他设置。
  • Assets.xcassets/:包含应用程序的图像和图标资源。
  • Base.lproj/:包含主故事板或启动屏幕文件 (LaunchScreen.storyboard)。
  • main.m 或 main.swift:应用程序的主入口点,设置应用程序对象和应用程序委托。
  • 支持文件/:包含附加资源和配置,例如权利和桥接标头(如果使用 Swift)。

结论

了解 React Native 应用程序的文件夹结构对于高效的项目管理和开发至关重要。每个文件夹和文件都有特定的角色,从管理依赖项和配置到包含 Android 和 iOS 平台的代码和资源。

版本聲明 本文轉載於:https://dev.to/wafa_bergaoui/folder-structure-of-a-react-native-app-3m44?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    如何使用char_length()在mySQL中按字符串長度對數據進行排序?
    [2 using the built-in CHAR_LENGTH() function.Difference between CHAR_LENGTH() and LENGTH()CHAR_LENGTH():返回字符串中字符數的數量,考慮多字節字符編碼(例如,UTF-8)。 此查詢將從指定的表中...
    程式設計 發佈於2025-01-31
  • 如何干淨地刪除匿名JavaScript事件處理程序?
    如何干淨地刪除匿名JavaScript事件處理程序?
    在這里工作/},false); 不幸的是,答案是否。除非在Creation中存儲對處理程序的引用。 要解決此問題,請考慮將事件處理程序存儲在中心位置,例如頁面的主要對象,請考慮將事件處理程序存儲在中心位置,否則無法清理匿名事件處理程序。 。這允許在需要時輕鬆迭代和清潔處理程序。
    程式設計 發佈於2025-01-31
  • 為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    為什麼使用固定定位時,為什麼具有100%網格板柱的網格超越身體?
    網格超過身體,用100%grid-template-columns 問題:考慮以下CSS和HTML: position:fixed ; grid-template-columns:40%60%; grid-gap:5px; 背景: #eee; 當位置未固定時,網格將正確顯示。但是...
    程式設計 發佈於2025-01-31
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-01-31
  • 哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    哪種方法更有效地用於點 - 填點檢測:射線跟踪或matplotlib \的路徑contains_points?
    在Python 射線tracing方法 matplotlib路徑對象表示多邊形。它檢查給定點是否位於定義路徑內。如提供的代碼段所示: polygon = [[np.sin(x)0.5,np.cos (x)0.5]在np.linspace中的x(0,2*np.pi,100) ] points = ...
    程式設計 發佈於2025-01-31
  • 如何克服PHP的功能重新定義限制?
    如何克服PHP的功能重新定義限制?
    克服PHP的函數重新定義限制在PHP中,多次定義一個相同名稱的函數是一個no-no。嘗試這樣做,如提供的代碼段所示,將導致可怕的“不能重新列出”錯誤。 // error:“ coss redeclare foo()” 但是,php工具腰帶中有一個隱藏的寶石:runkit擴展。它使您能夠靈活...
    程式設計 發佈於2025-01-31
  • PHP陣列鍵值異常:了解07和08的好奇情況
    PHP陣列鍵值異常:了解07和08的好奇情況
    PHP數組鍵值問題,使用07&08 在給定數月的數組中,鍵值07和08呈現令人困惑的行為時,就會出現一個不尋常的問題。運行print_r($月份)返回意外結果:鍵“ 07”丟失,而鍵“ 08”分配給了9月的值。 此問題源於PHP對領先零的解釋。當一個數字帶有0(例如07或08)的前綴時,PHP...
    程式設計 發佈於2025-01-31
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mysql組使用mysql組來調整查詢結果。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的基於列的轉換。通過子句以及條件匯總函數,例如總和或情況。讓我們考慮以下查詢: select d.data_timestamp, sum(data_id = 1 tata...
    程式設計 發佈於2025-01-31
  • 對象擬合:IE和Edge中的封面失敗,如何修復?
    對象擬合:IE和Edge中的封面失敗,如何修復?
    解決此問題,我們採用了一個巧妙的CSS解決方案來解決問題: transform:translate:translate(-50%,-50%); height:100%; 高度:auto; 寬度:100%; //對於水平塊 ,使用絕對定位將圖像定位在中心,以object-fit:object-f...
    程式設計 發佈於2025-01-31
  • 如何使用替換指令在GO MOD中解析模塊路徑差異?
    如何使用替換指令在GO MOD中解析模塊路徑差異?
    克服go mod中的模塊路徑差異 coreos/bbolt:github.com/coreos/ [email受保護]:解析go.mod:模塊將其路徑聲明為:go.etcd.io/bbolt `要解決此問題,您可以在go.mod文件中使用替換指令。只需在go.mod的末尾添加以下行:[&& &...
    程式設計 發佈於2025-01-31
  • 如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    如何為PostgreSQL中的每個唯一標識符有效地檢索最後一行?
    [2最後一行與數據集中的每個不同標識符關聯。考慮以下數據: 1 2014-02-01 kjkj 1 2014-03-11 ajskj 3 2014-02-01 sfdg 3 2014-06-12 fdsa 在(ID)上選擇DISTINC 來自the_table 按ID訂單,date desc;...
    程式設計 發佈於2025-01-31
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python 導入編解碼器 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有表情符號 emoji_pattern = re.compile(“ [”...
    程式設計 發佈於2025-01-31
  • HTML格式標籤
    HTML格式標籤
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    程式設計 發佈於2025-01-31
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    [2 _post ['ss'];? > 的目的是從單擊提交按鈕時,文本框並顯示。但是,輸出保持空白。當方法=“ get”無縫工作時,方法=“ post”構成問題。 檢查action屬性:如果您正在刷新頁面,請將操作屬性設置為空字符串,例如] action ='&...
    程式設計 發佈於2025-01-31
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式界面中實現垂直滾動元素的CSS高度限制 考慮一個佈局,其中我們具有與可滾動的映射div一起移動的subollable map div用戶的垂直滾動,同時保持其與固定側邊欄的對齊方式。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 可以限制地圖的滾動,我們可以利用CS...
    程式設計 發佈於2025-01-31

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3