企业级react-native项目架构和文件结构(附demo)

公司项目最近要加新人,为了便于新同事快速上手公司项目,抽时间整理了一下项目现有结构的文档。随着整理,感觉可能其他从原生转过来的react-native开发人员可能也会遇到一个疑问,rn的项目架构应该怎么搭建。在此分享一下自己的经验,希望给大家提供一些参考。
推荐clone后,对照着项目来阅读本文

demo地址:直播demo,持续更新中

项目内使用的redux管理数据流,先看一下整个项目的架构图:

项目架构图

再看一下整体的项目目录结构:


react-native项目结构.png

注意:项目内的redux和常规的分为action,reducer,store三部分不同。项目内的action和reducer合并到一起了。

1.显示层

  1. 路由(navigator)
  2. 容器组件(screen),页面
  3. 显示组件(view)

1 路由(navigator)

负责管理app内所有的页面(screen),配置路由跳转规则,转场动画,header样式等

2 容器组件(screen)

每一个页面对应一个容器组件,负责管理整个页面内的数据,和显示组件。
小型项目,业务逻辑相对比较简单,可以将结构图中的controller的功能合并到容器组件内,使得其同时负责与其他层级交互。demo内对应的该种实现。文件可以省略,可以合并到容器组件内,但是控制层这个概念,大家要清楚。仅仅是没有单独的文件去对应控制层了,或者说容器组件变成了控制层。
如果项目较复杂,业务逻辑复杂,这个时候就需要有一个controller文件来负责管理当前页面数据和对外的交互。此时项目结构就变成了项目目录图里面的样子。

3 显示组件(view)

只承担显示职责。不处理任何业务逻辑。显示组件在项目内,会复用度最高的。在任何页面内,传递指定的数据格式,即可以实现服用。

style文件夹

目录架构内有一个style文件夹,这个地方或许叫UI文件夹更妥当一些。这个文件夹内的内容。需要和项目团队内的UI沟通设计规范后确定,此处记录了整个app的设计规范。这地方是一个很好用的模块,可以快速切换主题,快速适配各种机型。
先说颜色:
内部应该包含整个项目内使用的所有颜色,所有的字号,所有字体等信息。如果合作效率较高。可以一起确定出项目内所有使用的公共组件的样式,比如项目内使用的所有按钮的样式,所有header的样式,所有列表item的样式,所有的间距值等等。
并且给每个对应的值,取一个共同知晓的名称。比如项目内主题色primaryColor,bgColor,一般会使用2-3种红色(red1,red2),2-3种蓝色(blue1,blue2)等
后续在UI出设计图的过程中,颜色标注,使用约定的名称即可。当后期设计图出现改动的时候,只需要将对应颜色色值修改,整个app就可以切换主题。又或者老版本所有的按钮都是使用带阴影的按钮,现在修改为扁平化设计,只需要把项目内的按钮组件调整一个布局,整个app即可切换完成。
再说一下size:
size内要约定好整个app每个页面的上下左右的边界值是什么,状态栏的高度是什么,不同机型的适配则可以在该处处理。比如iOS和Android顶部的状态栏高度不一致。是否全面屏的又是另外一个值。是否有虚拟导航栏又会是另外的值。这个部分使用好的话,能给适配提供大量便利。

2 控制层

控制层的工作,可以交由容器组件承担,也可以交给单独的controller文件来承担。至于交由哪个文件承担,请大家自行决定。该部分主要介绍,控制层应该承担哪些具体的工作。
主要工作内容则是给组件提供数据。两种方式:
1.组件调用controller内的方法,请求获取数据,controller得到数据后,以方法返回值的方式,直接返回给组件使用。异步数据推荐使用 async/await的方式获取。
2.组件关联store。在组件内通知controller发起获取数据的请求。controller得到数据后,发送dispatch,修改store内的数据。通过redux的机制,将数据传给组件使用。
controller获取数据的来源:
1.网络请求;
2.项目内如果有原生模块部分,通过bridge与原生交互后,读取数据。
3.组件在起请求时候,传递进来的参数,解析后,返回给组件使用。(解析数据)

3 数据层

整个项目的数据提供者

1 网络请求

此处负责配置所有的url信息,debug/release对应的url的切换。具体的网络请求的实现。

2 原生部分的数据

3 store

store要根据具体的业务,划分好内部的数据模块。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352