首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【架构】1131- 如何创建可扩展和可维护的前端架构

正如你所看到的,每一个发送到存储的更新请求都可以通过一串的逻辑。这就是我们所说的中间件。这是 Redux 中使用的一种模式。中间件的一个简单例子是记录存储的传入请求。...这就是说,你模块的路由放在不同模块的页面中。 组件通过动作与应用层交互。这些动作可能表现为各种形式。它们可以是普通的 JavaScript 函数、Redux 相关函数或者 React Hooks。...一个例子是一个拖放文件的区域,结果上传到一个 blob 存储。它可以成为可重复使用的组件。但是,文件的实际上传取决于我们能够使用的服务。...我们通过 UI 组件和上传文件的实际动作结合起来,创建了一个小的包含模块。组件与业务逻辑结合在一起时,我们将其转换为模块。 但是其他模块是如何使用文件模块中的组件或者动作的?...这可能不需要太多努力,就能得到一个通用的下拉组件。但这个组件可能无法在窗体中工作。也许有必要创建一个可以使用的 UserDropdown 组件。现在我们只在用户周围更改一个组件时更改。

83130
您找到你想要的搜索结果了吗?
是的
没有找到

如何创建可扩展和可维护的前端架构

正如你所看到的,每一个发送到存储的更新请求都可以通过一串的逻辑。这就是我们所说的中间件。这是 Redux 中使用的一种模式。中间件的一个简单例子是记录存储的传入请求。...这就是说,你模块的路由放在不同模块的页面中。 组件通过动作与应用层交互。这些动作可能表现为各种形式。它们可以是普通的 JavaScript 函数、Redux 相关函数或者 React Hooks。...一个例子是一个拖放文件的区域,结果上传到一个 blob 存储。它可以成为可重复使用的组件。但是,文件的实际上传取决于我们能够使用的服务。...我们通过 UI 组件和上传文件的实际动作结合起来,创建了一个小的包含模块。组件与业务逻辑结合在一起时,我们将其转换为模块。 但是其他模块是如何使用文件模块中的组件或者动作的?...这可能不需要太多努力,就能得到一个通用的下拉组件。但这个组件可能无法在窗体中工作。也许有必要创建一个可以使用的 UserDropdown 组件。现在我们只在用户周围更改一个组件时更改。

1.7K20

手写一个React-Redux,玩转React的Context API

上一篇文章我们手写了一个Redux,但是单纯的Redux只是一个状态机,是没有UI呈现的,所以一般我们使用的时候都会配合一个UI库,比如在React中使用Redux就会用到React-Redux这个库。...这个库的作用是Redux的状态机和React的UI呈现绑定在一起,当你dispatch action改变state的时候,会自动更新页面。...到这里其实我们React-Redux的接入和Redux数据的组织其实已经完成了,后面如果要用Redux里面的数据的话,只需要用connectAPI将对应的state和方法连接到组件里面就行了,比如我们的计数器组件需要...保证组件更新顺序 前面我们的Counter组件使用connect连接了redux store,假如他下面还有个子组件也连接到redux store,我们就要考虑他们的回调的执行顺序的问题了。...只有连接到Redux最顶级的组件才会直接注册到Redux store,其他子组件都会注册到最近父组件的subscription实例上。

3.7K21

从设计的角度看 Redux

一般来说,我们需要在应用程序中管理三个方面的数据 获取和存储数据 数据绑定到 UI 元素 改变数据 比如我们要做一个 Dribbble 的作品页面。在作业页面上我们想要展示的数据有哪些?...这就是为什么许多人开始使用Redux作为替代。 获取和存储数据 在React中,我们UI分解为组件。这些组件都可以分解为更小的组件。...图片描述 如果我们的 UI 是这样构造的,那么在填充UI之前,我们什么时候获取数据以及在哪里存储数据 假设每个组件中都有一个厨师。从服务器获取数据就好比是采购所需的所有原材料以准备佳肴。...组件通常从 store 中获取数据,而不是其他地方。这使得 UI 保持高度统一。 ? 数据绑定到 UI 元素 如果单单使用 React 的话,实际上有一种更好的方法来获取和存储数据。...使用 Redux,我们可以任何数据插入任何组件,而不影响其他组件,就像这样 更准确地说,实际上是另一个叫做 react-redux 的库数据提供给组件的,而并非 Redux 本身。

1.7K30

设计师都能懂的 Redux 指南

一般来说,我们需要在应用程序中管理三个方面的数据 获取和存储数据 数据绑定到 UI 元素 改变数据 比如我们要做一个 Dribbble 的作品页面。在作业页面上我们想要展示的数据有哪些?...这就是为什么许多人开始使用Redux作为替代。 获取和存储数据 在React中,我们UI分解为组件。这些组件都可以分解为更小的组件。...如果我们的 UI 是这样构造的,那么在填充UI之前,我们什么时候获取数据以及在哪里存储数据 假设每个组件中都有一个厨师。从服务器获取数据就好比是采购所需的所有原材料以准备佳肴。...组件通常从 store 中获取数据,而不是其他地方。这使得 UI 保持高度统一。 数据绑定到 UI 元素 如果单单使用 React 的话,实际上有一种更好的方法来获取和存储数据。...使用 Redux,我们可以任何数据插入任何组件,而不影响其他组件,就像这样 更准确地说,实际上是另一个叫做 react-redux 的库数据提供给组件的,而并非 Redux 本身。

1.6K10

react 的数据管理方案:redux 还是 mobx?

它区别于 redux 的最大特点是,可以直接修改数据,对 UI 进行精确刷新。精确更新是什么意思呢,看下面的例子。...但是,这里分别用redux方案 和 mobx方案 实现上面的功能。 为了演示方便,所有的代码都放在一个文件中。查看 mobx 实现的代码前,先了解下装饰器(decorator)是什么。...a ); } } // ④state、actions 映射到组件 props const mapStateToProps...,@action 的语义,表示这是一个修改状态的操作 redux Provider 传递 store 是强约定,mobx Provider 灵活传递 store actions,也可以是其它名字,比如...mobx 在大项目中的扩展能力 redux 方案,本质上还是通过添加更多的 switch 语句来实现扩展, store 分支节点的 reducer 分散到不同的文件,再通过工具函数combineReducers

1.8K70

react 的数据管理方案:redux 还是 mobx?

它区别于 redux 的最大特点是,可以直接修改数据,对 UI 进行精确刷新。精确更新是什么意思呢,看下面的例子。...但是,这里分别用redux方案 和 mobx方案 实现上面的功能。 为了演示方便,所有的代码都放在一个文件中。查看 mobx 实现的代码前,先了解下装饰器(decorator)是什么。...a ); } } // ④state、actions 映射到组件 props const mapStateToProps...,@action 的语义,表示这是一个修改状态的操作 redux Provider 传递 store 是强约定,mobx Provider 灵活传递 store actions,也可以是其它名字,比如...mobx 在大项目中的扩展能力 redux 方案,本质上还是通过添加更多的 switch 语句来实现扩展, store 分支节点的 reducer 分散到不同的文件,再通过工具函数combineReducers

2K10

【19】进大厂必须掌握的面试题-50个React面试

组件是React应用程序UI的构建块。这些组件整个UI分成独立且可重用的小块。然后,它使这些组件中的每个组件彼此独立,而不会影响UI的其余部分。 12.解释React中render()的目的。...它们是只读组件,必须保持纯净即不变。在整个应用程序中,它们始终从父组件传递到子组件。子组件永远无法道具发送回父组件。这有助于维持单向数据流,通常用于呈现动态生成的数据。 15....它是一个属性,有助于存储对特定React元素或组件的引用,该引用将由组件渲染配置函数返回。它为u sed引用返回到()的特定元素或组分被渲染返回。...用Redux开发的应用程序易于测试,并且可以在表现出一致行为的不同环境中运行。 37. Redux遵循的三个原则是什么? 单一事实来源:整个应用程序的状态存储在单个存储中的对象/状态树中。...Redux使用“存储应用程序的整个状态存储在一个地方。因此,所有组件的状态都存储在商店中,它们从商店本身接收更新。单一状态树使跟踪随时间变化以及调试或检查应用程序变得更加容易。

11.1K30

Redux的设计模式

比如下面这张图,他代表的是React的组件结构,网站是通过组件树的形式渲染UI的。 ?...我们都知道React中数据流向是单向的,而且总是自上而下传递的,可以通过props数据从父组件传递给子组件,但是假设我们需要将组件树最底层的Banner节点的数据传递给最顶层的Index,这个时候组件之间该如何通信呢...基本上你的代码就是无法维护的状态。而且这样处理数据的开销是非常巨大的。一个不小心很有可能陷入无限死循环中。...使用Redux架构来说所有的组件基本不会互相通信了,数据放在一个叫做store的数据仓库中存储。 ?...通过使用Redux我们可以剥离出组件中的数据(state),所有数据统一存放在Redux数据(store)仓库中,如果组件中哪一个组件需要使用到数据,这个组件可以去数据仓库中自行认领有个高大上的叫法是订阅

1.5K20

React 入门学习(十五)-- React-Redux 基本使用

Redux ,我们在写案例的时候,也发现了它存在着一些问题,例如组件无法状态无法公用,每一个状态组件都需要通过订阅来监视,状态更新会影响到全部组件更新,面对着这些问题,React 官方在 redux...}> 这就类似于 React-Redux 容器组件UI 组件 所有的 UI 组件都需要有一个容器组件包裹 容器组件来负责和 Redux 打交道,可以随意使用 Redux...的API UI 组件无任何 Redux API 容器组件用于处理逻辑,UI 组件只会负责渲染和交互,不处理逻辑 在我们的生产当中,我们可以直接 UI 组件写在容器组件的代码文件当中,这样就无需多个文件.../components/Count' // 引入 connect 连接UI组件 import {connect} from 'react-redux' // 建立连接 export default connect.../redux/count_action' 编写 UI 组件,简单写个 demo,绑定 props 和方法 return ( 当前求和为:{this.props.count

88720

React 入门学习(十五)-- React-Redux 基本使用

Redux ,我们在写案例的时候,也发现了它存在着一些问题,例如组件无法状态无法公用,每一个状态组件都需要通过订阅来监视,状态更新会影响到全部组件更新,面对着这些问题,React 官方在 redux...}> 这就类似于 React-Redux 容器组件UI 组件 所有的 UI 组件都需要有一个容器组件包裹 容器组件来负责和 Redux 打交道,可以随意使用 Redux...的API UI 组件无任何 Redux API 容器组件用于处理逻辑,UI 组件只会负责渲染和交互,不处理逻辑 在我们的生产当中,我们可以直接 UI 组件写在容器组件的代码文件当中,这样就无需多个文件.../components/Count' // 引入 connect 连接UI组件 import {connect} from 'react-redux' // 建立连接 export default connect.../redux/count_action' 编写 UI 组件,简单写个 demo,绑定 props 和方法 return ( 当前求和为:{this.props.count

91920

回望过去,展望未来- 2024 React 生态一览表

「路由表(Route Table):」 路由表是路由器中存储的一种数据结构,用于 URL 映射到相应的组件或视图。路由表可以手动配置,也可以通过自动化工具生成。...「连接到视图层:」 客户端状态管理通常需要与视图层(例如 React 组件、Vue 组件)进行连接,以便状态的变更能够反映在用户界面上。...Redux Toolkit 的结构化方法,包括操作、减速器和存储,非常「适合复杂的大型项目」。它倡导集中和声明性的状态管理方法。 2....(组件库我们后面会单讲) 但是,如果表单过于复杂或者由于某些原因无法使用组件库,那你就需要手搓from了。 所以,再次给大家提供额外的选择。 解决方案 1....Redux DevTools[33] 是另一个 Chrome 扩展,可增强我们的 Redux 开发工作流程。它提供了对 Redux 存储的洞察,允许我们检查操作和状态更改,回溯和重放操作等。

53210

「首席架构师推荐」React生态系统大集合

Bit - 用于跨应用程序管理和使用React和其他Web组件的虚拟存储库 AtlasKit - Atlassian的React UI库 ReactiveSearch - Elasticsearch的UI...react-desktop - 使用React构建的OS X和Windows UI组件 Reapop - React和Redux通知系统 react-extras - 使用React的有用组件和实用程序...,具有热重新加载,动作重放和可自定义的UI react-router-redux - 保持react-router和redux同步的绑定 redux-form - 使用react-redux保持形状状态的高阶组件...- 用于测试redux异步动作创建器和中间件的模拟存储 redux-immutable - 创建一个与Immutable.js状态一起使用的Redux combineReducers的等效函数 redux-react-i18n...- React组件包装器,用于React与MobX结合使用 MobX教程 10分钟介绍MobX和React 使用MobX管理React应用程序中的复杂状态 您的应用程序从Redux重构为MobX

12.3K30

React + Redux 组件化方案

在 React 作为 UI 组件库的基础上,以 redux 作为状态管理框架,我们定义了4种类型的组件。 展示组件 React 组件即为我们的展示组件。...存储中心组件 存储中心组件即为上文提到的 redux 架构中的 store。...存储中心组件中默认定义了一些 reducer 处理函数和一些 middleware,还包含了连接 redux 和 react 的高阶函数和向 store 中注入新的 reducer 的方法。...高阶组件可能不会引入任何数据组件的方法,只需 import 对应的数据组件reducer 注入进 store import '@tencent/now-data-roomInfo' 接入组件 申明存储中心组件...即使使用了不同了数据管理架构,也可以直接使用展示组件。 一些待解决的问题 公用的 css 无法管理,需要引入新的构建工具 开发调试不方便,无法单独独立的开发一个组件 组件文档缺失。

76080

React + Redux 组件化方案

在 React 作为 UI 组件库的基础上,以 redux 作为状态管理框架,我们定义了4种类型的组件。 展示组件 React 组件即为我们的展示组件。...存储中心组件 存储中心组件即为上文提到的 redux 架构中的 store。...存储中心组件中默认定义了一些 reducer 处理函数和一些 middleware,还包含了连接 redux 和 react 的高阶函数和向 store 中注入新的 reducer 的方法。...高阶组件可能不会引入任何数据组件的方法,只需 import 对应的数据组件reducer 注入进 store import '@tencent/now-data-roomInfo' 接入组件 申明存储中心组件...即使使用了不同了数据管理架构,也可以直接使用展示组件。 一些待解决的问题 公用的 css 无法管理,需要引入新的构建工具 开发调试不方便,无法单独独立的开发一个组件 组件文档缺失。

55410

React + Redux 组件化方案

在 React 作为 UI 组件库的基础上,以 redux 作为状态管理框架,我们定义了4种类型的组件。 展示组件 React 组件即为我们的展示组件。...存储中心组件 存储中心组件即为上文提到的 redux 架构中的 store。...存储中心组件中默认定义了一些 reducer 处理函数和一些 middleware,还包含了连接 redux 和 react 的高阶函数和向 store 中注入新的 reducer 的方法。...高阶组件可能不会引入任何数据组件的方法,只需 import 对应的数据组件reducer 注入进 store import '@tencent/now-data-roomInfo' 接入组件 申明存储中心组件...即使使用了不同了数据管理架构,也可以直接使用展示组件。 一些待解决的问题 公用的 css 无法管理,需要引入新的构建工具 开发调试不方便,无法单独独立的开发一个组件 组件文档缺失。

1.4K00
领券