React Native 新架构实战课
蒋宏伟
58 同城前端架构师,58RN 负责人
18214 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
React Native 新架构实战课
15
15
1.0x
00:00/00:00
登录|注册

02|Component:搭建静态页面的正确思路是什么?

你好,我是蒋宏伟。
上一讲我们说到,React/React Native 开启了“基于组件”构建应用的潮流。
在工作中,特别是业务类的开发需求,绝大多数都是写页面。写页面分为两步,第一步是搭建静态页面,第二步是给静态页面添加交互让它动起来。这第一步至关重要,它决定了 UI 设计稿要拆分成哪些组件,这些组件又是如何组织起来的,这些都会影响程序的可扩展性和可维护性,甚至还有团队的合作方法。
我们这一讲的目的,就是让你有一个正确的基于组件搭建静态页面的思路,不让第一步走偏。要知道,如果后面再去纠正,要花费的成本就大了去了。

组件:可组合、可复用的“拆稿”方式

在开始使用组件这种方式构建静态页面之前,请你先思考一个问题,为什么 React/React Native 选择了基于组件的架构方式呢?
理论上,除了组件这种方式外,常见的构建应用方式还有:类似 HTML/CSS/JavaScript 这种的分层架构、基于 MVC 的分层架构。那为什么 React/React Native 没有选择这两种架构方式呢?
这是因为,基于组件的架构模式,或许是现在重展示、重交互应用的最好选择。
记得我 2015 年刚入门的时候,还有一种岗位叫做网页重构工程师,我还面过这种岗位。那个时候,架构模式就是把 UI 设计稿拆成 3 层:HTML、CSS、JavaScript。网页重构工程师负责 HTML、CSS 部分,前端工程师负责 JavaScript 部分。但是后来我发现网页重构工程师这种岗位越来越少了,也庆幸自己没有上错车。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

React/React Native 架构选择了基于组件的模式,以适应现代应用中重交互、重展示的情况。该架构模式具有组件内聚、可组合、可复用和单向数据流等优势。在搭建静态页面时,遵循单一责任原则,即每个组件只负责一个功能,并尽量减少外部依赖,以提高可读性、可维护性和可测试性。宿主组件是生产基础视图的工厂,包括容器组件 View、文字组件 Text 和安全区域组件 SafeAreaView。整体而言,本文强调了基于组件的搭建静态页面的正确思路,以及单一责任原则的重要性。文章还介绍了如何创建自定义的复合组件,以及静态页面的最终实现。总结指出,React/React Native 架构方式能够满足现代应用的需求,且遵循单一责任原则能设计出可扩展、可维护的应用。文章还提供了补充材料和思考题,引发读者对组件架构和 MVC 方式的思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《React Native 新架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • huangshan
    我之前写组件库的时候,是很坚持单一职责和OCP的,认为组件无状态灵活性很高。但是复杂组件经过组合和增强之后,感觉dom节点层数过多、数据流维护和状态更新成本变高。请问蒋老师对这一块有什么建议吗?

    作者回复: 首先,坚持单一职责和OCP原则是非常好的习惯,为你点赞。 你面临的问题正是我们所有人都面临的问题,业务复杂的增加必然带来的代码复杂度的增加。 从代码角度,能采用的手段主要是分而治之,像你说的单一职责、OCP,或者说 React 提供的 Hook 抽离通用逻辑的方法,都是把某块能够独立的逻辑从原有逻辑中抽离。 从团队角度,主要是流程保障和知识的普及。举个例子,我会拉着我们团队的同学对某个复杂模块举行团队 codereview,大概的流程是半小时的背景介绍,半小时的 codereview,1小时的讨论。在这两个小时中,真实挑战的案例和该案例的各种解决方案会在团队中普及开来,下次为大家遇到类似的提供思路。

    2022-04-13
    7
  • Asterisk
    应该讲一下clas风格组件和 function风格组件

    作者回复: class 在新项目已经基本用不上了,直接用 function 即可

    2022-10-12归属地:北京
    1
  • Geek_ce9101
    你好,github 的项目我用安卓的没跑起来,有个疑问,package 里面并没有 install-android-hermes script,但 readme 里面却第一步就是:yarn install-android-hermes ?

    作者回复: 你好,可以先去掉 yarn install-android-hermes

    2022-05-23
    3
  • Geek_51b2dc
    https://github.com/facebook/react-native/issues/33698 有同学搭建andriod环境的时候遇到这个问题 吗?怎么解决的能告知一下吗?
    2022-07-25
    1
  • Geek_140294
    有没有环境搭建的内容啊?我跑项目都还跑不起来
    2024-03-11归属地:新加坡
  • angelajing
    因为我本地环境npm等各种软件包的版本和github上下载的代码版本不一致(参见package.json),需要适当的更新dependencies的版本信息。例如, ---- package.json----- 19 "@apollo/client":"^3.5.6" -------------------- ----- terminal ------ $ npm search @apollo/client @apollo/client 3.8.7 ------------------ 命令行查看本地环境中 @apollo/client包的版本是 3.8.7,所以把 package.json文件中相关包的版本改一下。所有包的版本都改好后,执行下面的命令。记得启动 device simulator。 ------ terminal ---- $ npm install $ npm start -----------------
    2023-11-23归属地:辽宁
  • kittyE
    MVC的数据流向是C(5, 2) * 2 优点是:代码颗粒度小 缺点是:数据流向复杂,组件越多可能的数据流向更多
    2023-07-23归属地:江苏
  • Geek_ae84e1
    居然是音频课,大家要小心
    2023-06-19归属地:北京
  • Asterisk
    确实只讲了一个思虑,我还需要再看看 https://reactjs.org/docs/components-and-props.html
    2022-10-12归属地:北京
  • Geek_b056e8
    我下载了课件,但是怎么才能运行Demo里不同章节的代码呀?
    2022-06-21
    4
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部