Flux 是什么?
Flux是一种架构思想,专门解决软件中的结构问题。这是同一种MVC架构,但是更简单、更清晰。
Flux 有多种实现方式。
Flux将一个应用分成四个部分:
视图:视图层。这是用户看得见、摸得着的地方,是MVC和MVVM架构中都存在的概念。不过,我认为定义不一致,存在细微差别,但这种差别并不妨碍你首先理解视图这个术语。
Actions:视图层发送的消息(例如mouseClick)。这是从一个地方传递到另一个地方的结构化信息,整个过程就是一个动作/事件。
调度程序:用于接收操作并执行回调函数。调度员是从触发操作到导致商店发生变化的镇流器。这比典型架构设计中直接改变“事件”逻辑的“数据”更加“正式”。
Store(数据层):对应传统意义上的数据,与MVC、MVVM模型有一定的对应关系。当发生更改时,视图会收到页面更新通知。
基于 Servlet 容器的 Web MV
对于Web 开发人员来说,Spring 的Web MVC 框架随着Spring 一起成长,但很早就因为基于servlet 容器而被批评难以测试。
实现 Reactive Streams 的 Reacto
确实,Web Flux 是独立于servlet 容器的,但在讨论Web Flux 之前,我们首先需要了解一下Reactor 项目。它由Spring 的当前所有者Pivotal 推出,并实现了Reactive。流规范。用于支持实现反应式编程。
然而,从使用XML 配置的实用控制器界面到使用JavaConfig 的后注释,Web MVC 已经变得越来越容易使用。如果你愿意,你可以采用循序渐进的方式,逐步重建一个基于servlet API 的Web 应用程序,达到使用很少的servlet API 并在程序中利用屏蔽servlet API 的效果代码级别也可以实现。
目前,基于servlet API 的Web MVC 框架是一个优势,因为许多Java 开发人员都是从servlet 容器中获得Web 开发经验的。 Web MVC 允许你在不直接面对servlet API 的情况下编写程序,但如果你在配置或API 中找不到相应的解决方案,或者你有复杂的心智模型,那么就更意味着受到Spring 的限制。如果您不知道HttpSession 和ServletContext 的等效功能,一个好的经验法则是直接从HttpSession 和ServletContext 调用它们。
确实,Web MVC 是基于servlet 容器的,因为当你编写程序时,即使不使用servlet API,底层仍然要依赖servlet 容器的功能,例如Spring Security。这基本上是基于servlet容器的过滤器解决方案。
然而,如今,Servlet 被认为是过时的,对于许多开发人员来说代表着过时的技术。在Java EE 8 发布前后,每当有人谈论servlet 4.0 时,就会听到“servlet 4.0”这个术语。他提出了诸如“Web Flux 可以与servlet 分离”等建议。
示例:
假设您有以下需求:我有一个待办事项列表,在弹出窗口中编辑待办事项,按下回车键时发出API请求,如果请求成功则关闭弹出窗口,如果无法保留弹出窗口则打开窗口。
如果您的商店按域分区,则它支持回流和还原。
Reflux可以放在View层,由组件管理。这种打开和关闭状态基本上与POST_TODO_COMPLETED 操作有关。为了实现这个功能,UI层必须直接监控成功请求的动作。
Reflux 通常在视图层使用异步操作triggerPromise。
当然,这显然违反了FLUX 的数据流,被认为是动作和视图之间的私密交换。在Redux中,不存在像triggerPromise这样的“后门”,因此域与页面无关。尽管这两个页面显示和操作相同的域对象,但它们的外观和行为却截然不同。这种情况并不少见。
综上所述,前端开发长期以来一直在为后端做出贡献,所以感觉它在框架和理念上对后端的影响应该是很深的。介绍FLUX 和Redux。这使得开发人员能够真正从前端的角度思考、组织和前进。
总结
Flux 的优点是发生的所有事情都是在调度程序中预定义的(或者什么也没有发生),因此每个事件都是可预测的。
Flux 的结构被称为“大型项目的架构”,因为它可以轻松处理极端情况(如果你用它来创建待办事项列表,那你脑子肯定有问题)。令人惊讶的是,它可能是移动时代最好的免费网站构建器,拥有如此复杂的编辑界面。
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。