全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

16 | 百花齐放,百家争鸣:前端MVC框架

MVC分层清晰
客户端聚合发展
服务端页面聚合
页面静态
页面一次性从服务端生成
Ajax技术成熟
早期
Chrome开发者工具
jQuery
React学习
Angular中文教程
ng-click
解耦
使用前端MVC框架的好处和坏处
Reducer是纯函数
数据单向流动
状态管理
测试更方便
呈现模板和渲染逻辑放在一起
过滤器
依赖注入
双向绑定
React
Angular
Vue.js
jQuery
技术分层变化
HTML、CSS、JavaScript
扩展阅读
问题二
问题一
Redux
JSX
特性
前端框架
前端技术发展
社区活跃
比后端MVC框架出现晚
总结思考
React + Redux
Angular
MVC的变革
发展
前端MVC框架

该思维导图由 AI 生成,仅供参考

你好,我是四火。
我在上一章讲到了 MVC 的原理,今天我来讲讲前端的 MVC 框架。这部分发展很快,它们比后端 MVC 框架出现得更晚,但是社区普遍更活跃。
我们在学习的过程中,需要继续保持深度和广度的均衡,既要对自己熟悉的那一款框架做深入了解,知道它的核心特性,明白其基本实现原理,对于其优劣有自己的想法;也要多了解了解这个技术的百花园,看看别的框架是什么,想想有什么优势和缺点,拓宽视野,为自己能够做出合理的技术选型而打下扎实的基础。

前端 MVC 的变革

让我们来回想一下,在 [第 07 讲] 中,介绍过的 MVC 架构。实际上,我们可以把前端的部分大致归纳到视图层内,可它本身,却还可以按照 MVC 的基本思想继续划分。这个划分,有些遵循着 MVC 两个常见形式之一,有些则遵循着 MVC 的某种变体,比如 MVVM。
我们都知道前端技术的基础是 HTML、CSS 和 JavaScript,可随着技术的发展,它们在前端技术分层中的位置是不断变化的。
在前端技术发展的早期,Ajax 技术尚未被发明或引进,页面是一次性从服务端生成的,即便有视图层的解耦,页面聚合也是在服务端生成的(如果忘记了服务端的页面聚合,请回看 [第 09 讲])。也就是说,整个页面一旦生成,就可以认为是静态的了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

前端MVC框架在快速发展,社区活跃度高。随着前端技术的进步,HTML、CSS和JavaScript的地位不断变化。随着Ajax技术的成熟,客户端聚合发展起来,前端的MVC分层变得更加清晰。随着前端业务的复杂性增加,单纯的JavaScript库已经不能很好地解决问题,前端框架开始扮演更重要的角色。Angular提供了双向绑定、依赖注入和过滤器等特性,简化了复杂绑定行为的代码。而React和Redux提供了可预测的状态管理能力,成为整个MVC框架的重要组成部分。文章还介绍了JSX和Redux对状态管理的重要性和优势。总结提出了两个思考题,引发读者思考。整体来说,本文深入探讨了前端MVC框架的发展和特性,为读者提供了深入了解和技术选型的参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • pyhhou
    1. 使用过 React,前端的 MVC 框架的出现带动了整个前端的发展,现在前端可以和后端分离开来设计与实现,对比之前,前端页面的聚合需要后端,这些框架的出现,在大的层面上看也算是进行了一次前后端的解耦吧;不好的地方就是前端的技术变得非常的多,而且杂,并且很多前端技术的生命周期都很短,这增加了普通工程师的学习难度的同时,前端在技术层面上也没有一个大的 “统一” 2. 这让我回想起了我们之前讲过的一个话题,就是 “MVC 框架的控制逻辑的配置是写在单一的文件中,还是利用注解的方式写在控制逻辑处?”,放在这里也是可以类比的,把行为从 HTML 里面分离出去,单独管理,可以使得行为和 HTML 显示分开,达到解耦,同样,以 Angular 这种方式,让行为跟着具体的 HTML 显示模块走,让行为和 HTML 显示对照起来,这也是解耦,只不过前者是代码横向分层解耦,后者是代码纵向分层解耦,不能完全说哪一个好,还是得具体场景,具体分析。 这里有一个小问题,就是上面提到说 “Reducer 是无状态的,它是一个纯函数”,我们上一篇文章中提到纯函数是安全的,也是幂等的,但是这里 Reducer 是会改变 store 的,而且对一个 Reducer 一次调用和多次调用会导致 store 里面的状态变得不一样,或者说我这里是不是误解了什么,还请老师指教 PS: 过滤器标题下面那句话有 typo,Angular 写成了 React

    作者回复: 第2点讲得非常好,👍。 关于你的问题,Reducer返回的是新状态,而不是改变原有状态(新状态会放到这个store里面),这点请注意,你可以参见 https://redux.js.org/basics/reducers#handling-actions。 typo 我已经知会编辑修改,感谢!

    2019-10-17
    4
  • 上沅同学
    老师,有个问题没太想明白。为什么前端要引入状态管理这一概念呢?它解决了什么问题?为什么诸如iOS,Android 等移动端技术没有引入状态管理这一概念?

    作者回复: 这个问题很大,以下仅仅是个人理解: 在很早的时候,前端的结构都是非常简单的,只是做单纯的、静态的展示,而现在则发生了很大的变化,尤其是复杂性上,比如对于SPA网页,有这样的需求,去记录用户的操作状态,而这样的状态仅仅通过后端来记录是不可行,或者是低效的。接着,随着状态的增加,特别是状态之间转移的复杂化,五花八门的状态管理的方法就冒出来了。 至于移动端,状态管理相对弱一些的原因,其中一个是设备适配的复杂性;而且本身移动端我们普遍见到功能和展示上都没有PC端丰富,因而状态的支持本身从需求上看就要弱一些。

    2020-04-27
    2
  • 咕叽咕叽
    问题一:使用过backbone,spine,最大的好处是分层和复用,坏处是模型之间的通信会复杂一点,需要借助发布订阅模式。vue,react和angular,最大的好处是框架完成了数据和UI的同步。并且采用声明式的写法,写起来就像写配置文件一样,简洁清晰。坏处是debug更复杂,不清楚各个组件的状态,不过已经有插件辅助了。 问题二:作用域是不一样的。原始的写法:<img onclick="setImage()">,setImage是全局的。anglular的写法:<img ng-click="setImage()">,把setImage的作用域限制在了组件内,不会污染全局。angular的写法使代码结构变的更好,把逻辑单元封装在组件里。

    作者回复: 说得很好。

    2019-10-24
    2
  • 零维
    1. 使用 MVC 的好处个人认为是思维模式的转变,现在思考的方式都是以数据为主,不用去考虑去操作 DOM,坏处是越来越依赖框架了,很多相对基础的都忘记了。 2. 感觉 angular 那样更好,因为像绑定事件这些,如果都放到 control 层 ,会更难理解和维护。之前用 jQuery 写的时候,一大堆事件放在一块,过一段时间再看代码就不太好看懂了。并且这样写是不是也是更像声明式的语法?

    作者回复: 关于第2点你的问号:是的。 当然,有利有弊,你提到的好的地方,Angular这样做也带来一些问题,也可以想一想。

    2019-10-22
    2
  • sky
    三驾马车没有讲vue,老师对这个框架没有什么想说的吗?

    作者回复: 框架有很多,我挑了两个有代表性的,讲清楚我想要传达的内容就可以了。:)

    2019-10-21
    1
  • jokar
    这部分 Angular 这一块的东西需要注意一下,Angular.js 和 Angular 不是同一个框架,按版本号算的话,Angular从2这个大版本之后,就不兼容 Angular 1 这个版本了。为了区分,现在前端社区里面通常用 Angular.js 表示 Angular 1 和之前的版本,官网是这个https://angularjs.org/,这个版本就是这篇文章的版本。从 Angular 2 开始的版本就叫做 Angular,官网就是 https://angular.cn/。 说这些并非是要咬文嚼字,Angular 2 确实和 Angular.js 不一样,是彻底的 breaking change,并没有 Controller 这样的概念了。前端现在的库、框架,都有一些共同点,比如组件化了,单向数据流。,双向绑定也只适合一个语法糖,其实还是单向数据流。

    作者回复: 嗯, 感谢说明!确实说明大版本号的前提更清楚。

    2020-09-04
  • 杨越
    jquery现在已经不流行了,除非是维护老项目。开发比较大的新项目用不到,但是它的理念是很有启发性的,write less,do more.
    2019-10-16
    2
  • 唐锋
    按照文中的内容,react是V,redux可以是M,那C是指什么?
    2021-01-21
  • paperen
    1.是直接用vue开始的 好处就是html跟逻辑代码分开更加清晰,更重要可以组件化页面增加复用,坏处嘛个人觉得就是觉得前端复杂了无论从环境还是搭建发布,但总体是利大于弊,自己也习惯了vue开发 2.如果是打算要发布兼容多平台的(同一份html代码),这种写法确实不好,但具体问题还是要具体分析
    2020-06-23
  • 丁丁历险记
    我是个后端,用过vue element ui 做后台用。 之前是jq + bootstrap 天生对前端没兴趣,会用够用就好,很明显同样超出本职的玩docker k8s 时兴趣更大。
    2019-11-26
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部