Web应用中解决问题的方案步骤?
我们学一个东西,通常两个目的:
- - 为了解决现有的问题
- - 为了解决将来可能会有的问题
所以,在学这些东西之前,先必须了解,它们是用来解决什么问题的。
在Web应用中,我们需要解决的问题可以归纳为三类:
- - 状态
- - 组织
- - 效率
状态
什么是状态?
在一个业务界面中,我们可能会根据某些数据去生成一块界面,然后通过界面上的某些操作,改变一些数据,从而影响界面的另外一些部分。
这里面就存在两种关系,一种是从数据到界面,一种是从界面到数据。能够描述界面当前状况的数据,就可以被称为状态。
如果不对状态作抽象,很可能会导致逻辑的混乱,比如说,一个地方点了,要改多个地方,这种代码直接写,很容易写乱的,所以,不同的框架采用不同的方式进行了处理。
组织
所谓组织,指的是两个方面,一方面是模块关系,另一方面是业务模型。
我们是怎样解决模块关系的呢?共识就是组件化
整个应用形成倒置的组件树,每个组件提供对外接口,然后内部只关注自己的实现。这些东西说起来简单,但实际做的时候还是有非常多需要考虑的东西,包括组件的定义,约束,管理,测试等等
业务模型又是指什么呢?
我们提到React的时候,就会听到Flux,Redux之类的东西,为什么又要有它们呢?我们必须认识到,脱离了这类东西,纯上层的组件化是不牢固的,如果你感受不到,只有一个原因:你的项目的业务层太薄。
业务模型指的是所处领域中的业务数据、规则、流程的集合。即使抛开所有展示层,这一层也是应当要能够运作起来的。
那么,这跟Redux之类又有什么关系呢?
刚才提到组件化,整个应用形成了一个组件树,组件之间可能会需要通讯,它们通讯的内容可能是简单的界面事件,也可能是业务含义较深,能够牵一发而动全身的。
界面是怎么来的?
是由初始界面加上状态形成的,为了能够反映界面的变化,我们必须使得对业务模型的每一个变动都反应到确切的状态,所以,这也就是Redux这类东西的意义所在。
所以,没有Redux之类辅助方案的React,是不完整的。而Redux本身,也不是局限到只能作为React辅助方案的,它的理念,对于Angular,Vue,照样是非常重要的补充。
在同一业务场景下,对于每个框架来说,数据模型层面临的问题都是一样的,在这一层并没有任何分别。
当他发现FP,FRP之类编程模型的时候,会非常喜欢,但对于大型项目,需要很多人协作的状况来说,不一定是好事。
用面向过程,面向对象的那些方式,虽然笨重,但好处是门槛低,符合大多数人的理解和思维方式,并且可以复用几十年积累的各种设计模式和经验。所以,如果不是小而精悍的团队,我对引入FP和FRP都是比较保守的。
很多人吐槽Angular大而全笨重,吐槽React全家桶,但其实世界上大部分人是没有框架整合能力的,小而美的库最后整合了,在面临各种业务需求之后不断引入新模块,也还是一个大而全的方案。在绝大部分场景下,还是有一整套标配模块比较好。
效率
效率也分两种,一种是开发效率,一种是运行效率。
组件化,这是提升开发效率的一种手段,在组件化这个点上,各路框架的组织方式大同小异,反正最终都是组件树。
具体到单个组件的实现上,我个人是倾向于MVVM流的,MVVM系的代码量会少一些,开发效率稍高一点。
运行效率的另外一面主要是创建和修改DOM,在创建上,大家是没有太大差异的,而在修改DOM的时候,React首创的虚拟DOM有很大优势,所以其他框架内部实现也在逐渐借鉴。
相关文章
- qt实现web服务器加载vue应用进行C++和html混合编程-连载【6】-企业级系统开发实战连载系列 -技术栈(vue、element-ui、qt、c++、sqlite)
- Tomcat-公布WEB应用
- Web API应用架构设计分析(1)
- Web应用类型扫描识别工具WhatWeb
- 【AGC】应用在手机端的AG能搜索到而在WEB AG搜索不到
- 应用内路径规划的简单实现
- 关于Django Web应用架构设计开发的几个问题
- 《移动优先与响应式Web设计》一1.3 原生应用又如何?
- 《HTML5移动应用开发入门经典》—— 1.4 使用开放Web标准
- 《HTML5和JavaScript Web应用开发》——2.2 决定支持
- 《重构HTML:改善Web应用的设计(修订版)》——第1章 重构1.1 为何重构
- 《重构HTML:改善Web应用的设计(修订版)》——2.4 正则表达式
- 《超越平凡的Web设计——HTML5+CSS3专业应用之道 (iWeb会场抢先版)》——第一部分——前端工程师之路第1章 超越平凡的Web设计
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- 第3章 NFS基本应用
- 软件Web测试中应用性能测试的探析
- Web应用功能测试测试点
- Linux开发环境及应用—《第一、二周单元测验》
- iOS全部150万应用归Win10?微软大计划
- web应用架构演变
- Kubernetes应用包管理器Helm