关于前端知识中框架概念部分的详细介绍

1、为什么要学习流行框架?

  1. 企业:为了提高效率,因为时间就是金钱。
  2. 开发人员:提高了开发效率
  3. 发展进程
    • JS=>JQuery=>模板引擎=>框架时代(Angular(2+)、React、Vue)
    • 好处:不用直接操作DOM,更多关注业务逻辑

2、前端框架与库的区别?

  1. 功能层面
    • 框架:提供全方位功能,是比较齐全的
    • :以提供API为主,像JQuery提供了大量的API,[框架]是提供基础性的服务为主,vue有虚拟Dom的支持,有双向数据绑定的支撑,像这些呢,都会一些基础性的服务,可以提升开发效率。
      • jquery库:操作DOM+网络请求 => 比如获取按钮,给按钮绑定事件…等
  2. 代码层面
    • 库:是为了实现某个功能,而调用某个函数 => 如:使用轮播图时,引入轮播图的库放置到代码中使用
    • 框架:帮助我们运行编写好的代码
      • 步骤1:初始化框架自身的一些行为 => 框架要运行,必须要先跑起来
      • 步骤2:执行你编写好的代码 => 由框架来帮助执行
      • 步骤3:释放一些资源;
  3. 总结
    • :单一某个层面,可以任何地方调用库,也是可以替代的,在pc端使用jquery库,在移动端可以使用更轻量级的zepto来实现dom操作
    • 框架:大而沉,把代码给框架去执行。是一套完整的解决方案;对项目的侵入性较大,我们的代码是只写代码段的,不会写完整的页面,会把自己写的代码段交给框架,让框架帮我们跑起来,项目如果需要更换框架,则需要重新架构整个项目,因为它不如库这么灵活

3、MV*架构模式是什么?

  1. 解释:MV是指好几种架构模式,这里的*是泛指,是指mv开头的一系列架构模式,而vue框架就属于这种框架模式(MVVM)的一种
  2. 核心思想:都是将应用分层。
  3. 拆解名词:MV系列架构中,M和V分别指Model层和View层,但其功能会因为框架的不同而变化。
    • Model层是数据模型,用来存储数据;
    • View层是视图,展示Model层的数据。
    • 总结:虽然在不同的框架中,Model层和View层的内容可能会有所差别,但是其基础功能不变,变的只是 数据的传输方式

4、Web1.0时代

  1. Web1.0时代
    • 前/后端未分离阶段,在Web1.0时代,并没有前端的概念。
    • 开发一个应用多数采用ASP.NET/Java/PHP编写,项目通常由多个.aspx/.jsp/.php文件构成,每个文件同时包含了HTML、CSS、JavaScript、C#/Java/PHP代码。
  2. 服务端比较重
    • 有些内容横跨服务端和客户端。
    • JSP在服务端生成,调用server获取数据,在jsp页面中进行封装,把前端的代码混成一个,返给前端。
  3. 优势及劣势
    • 这种架构的好处是简单快捷,但是,缺点也非常明显:JSP代码难以维护,前后端未分离,混合在一起,没有前端的概念,后端人员责任较重。

4.1、后端MVC

  1. 为了让开发更加便捷,代码更容易维护,前后端职责更清晰,便衍生出了MVC开发模式框架
  2. 典型的框架就是Java(Spring、 Structs、 Hibernate).Net(ASP.NET MVC)
  3. 这时的MVC仅限于服务端
    在这里插入图片描述

4.1、存在问题

  1. 前端页面开发效率不高 => 后端人员兼顾前端开发,页面效果又不是很完美
  2. 前后端职责不清 => 一定的分离,未彻底分离,view层,依赖jsp实现模板文件的渲染

5、Web2.0时代—当前时代

  • 自从Gmail的出现,Ajax技术风靡全球。
  • 有了Ajax技术之后,前/后端的职责更加清晰了,因为前端可以通过Ajax后端进行数据交互。

1在这里插入图片描述

6、前端MVC(Model-View-Controller)

  1. 前端MVC后端类似,M(Model)模型,V(View)视图,C(controller)控制器。
  2. 它是MVC、MVP、MVVM这三者中最早产生的架构,其他两个架构模式是以它为基础发展而来的。
    在这里插入图片描述

6.1、存在问题

  1. 数据流混乱,可维护性太差。控制器可以修改模型,模型变了,会修改视图;但是也会有视图变了,修改模型。最后是视图修改的模型,还是控制器该的模型,不确定。
  2. 由于很多开发者会在view层写逻辑代码,导致view层庞大,而控制层Controller变得单薄(就是简单的数据监听,再调用model层的更改逻辑)。
  3. 在前端开发中,缺少MVP开发模式,是因为AngularJS早早的将MVVM架构模式带入了前端。MVP模式在前端开发中并不常见,但是在安卓、IOS等原生开发中,比较常见。

7、MVP(Model-View-Presenter)

  1. 传统的MVC模式虽然可以管理页面系统中的数据,视图,控制器,但是在视图层创建界面时常常会用到模型层内的数据,使模型层和视图层耦合在一起,降低了复用性和灵活性。
  2. MVP与MVC很接近,P指的是Presenter, Presenter可以理解为一 个中间人,它负责着View和Model之间的数据流动,防止View和Model之间直接交流。

7.1、存在问题

  1. 由于View层和Model层都需要经过Presenter层,导致Presenter层比较复杂,维护起来也会有一定的问题;
  2. 而且,因为没有绑定数据,所有数据都需要Presenter层进行“手动同步”,代码量较大,虽然比起MVC框架好很多,但还是有比较多冗余部分。

8、MVVM模式

  • 为了让View层和Model层的数据始终保持一致,MVVM框架出现了。
  • MVVM是前端视图层的概念,主要关注于 视图层分离,也就是说:MVVM把前端的视图层,分为了 三部分 Model, View , VM ViewModel(视图模型)

在这里插入图片描述

  1. MVVM是这样分割的:M、V、VM。
  2. 上图中最右边的就是M—>model,最左边就是V—>View,中间就是VM—>ViewModel,VM起到连接HTML和JSON数据的桥梁作用。
  3. 如果JSON数据层改变,那么就通过VM在内存中维护的 虚拟 DOM 重新点对点刷新 View 界面,点对点起到提高效率作用;
  4. 然后,如果View的某个地方有数据改变,比如用户在input标签里输入内容,有数据变动,那么就映射到Model里面,这就是VM的监听作用。

8.1、特性

  1. 数据驱动视图
    • 好处:当Model层发生数据变化时,页面会自动重新渲染。开发人员只维护好数据的变化,页面结构会被VM会自动渲染出来。
    • ViewModel通过实现一套数据响应式机制自动响应ModeI中数据变化,同时,Viewmodel会实现一套更新策略自动将数据变化转换为视图更新。
    • 注意:数据驱动视图是单向的数据绑定
  2. 双向数据绑定
    • 前面学习原生JS时,表单收集用户输入,通过ajax提交数据。
    • 用户在填写表单时,双向数据绑定可以帮助开发人员在不操作DOM的前提下,自动把用户填写的内容同步到数据源中
    • 页面中的input值发生变化,vm会自动把最新的值取出来,更新到数据。
    • 好处:开发人员不再需要手动操作DOM元素,来获取表单元素输入的最新值;js数据的变化,会被自动渲染到页面上。

9、总结

  1. 这三个架构模式,反应了前端领域的发展进程,共同目标都是职责划分(分层),解决model层view的耦合度问题,切分成功能鲜明的各个层,提高可读性和可维护性。
  2. MVC模式出现较早主要应用在后端,如Spring MVC、ASP.NET MVC等,随着Ajax出现,有了纯粹的前端。它的优点是分层清晰,缺点是数据流混乱,灵活性不高,带来维护性问题。
  3. MVP模式在是MVC的进化形式,Presenter作为中间层负责MV通信, 解决了两者耦合问题,但P层过于臃肿会导致维护问题。
  4. MVVM模式在前端领域有广泛应用。 跟 MVP 架构对比:MVVMViewModel层把Model层和View 层的数据同步自动化了,解决了 MVP 架构中数据同步比较麻烦的问题,不仅减轻了 ViewModel 层的压力,同时使得数据处理更加方便,只需告诉 View 层展示的数据是 Model 层中的哪一部分即可。
  5. Vue.js 是一个提供了 MVVM 风格的双向数据绑定的 Javascript 库,专注于View 层,它的核心是 MVVM 中的 VM,也就是 ViewModel。 ViewModel负责连接 View 和 Model,保证视图和数据的一致性,这种轻量级的架构让前端开发更加高效、便捷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/53627.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭秘蛇形机器人的主动SLAM算法和障碍物避让策略

更多优质内容,请关注公众号:智驾机器人技术前线 1.论文信息 论文标题:An active SLAM with multi-sensor fusion for snake robots based on deep reinforcement learning 作者:Xin Liu, Shuhuan Wen, Yaohua Hu, Fei Han, Hong…

文件IO编程

文章目录 文件描述符相关系统调用文件有关的系统调用文件操作函数--creat函数文件操作函数--open函数文件操作函数--read函数文件操作函数--write函数文件操作函数--close函数文件操作函数--lseek函数缓冲区的大小对性能的影响 实验:调用系统函数,实现文…

STM32 WDG看门狗

在大型项目中,BUG根本无法避免,因为可能的状态太多了,总有那么意想不到的情况发生, 所以,对于程序员,第一要要丰富的经验,避免一些常见的bug, 第二,程序要经常迭代&#…

集成学习(Ensembling Learning)

0. 来源 概念比较全,可以作为目录,前置知识讲得好,其他一般。 01.内容简介_哔哩哔哩_bilibili01.内容简介是集成学习:XGBoost, lightGBM的第1集视频,该合集共计19集,视频收藏或关注UP主,及时了…

【数据结构】排序算法系列——序言(附源码+图解)

作为基础算法的中流砥柱部分,排序算法一直都是计算机学习者们不可忽略的一部分。而其中的算法思想也蕴含着许多在今后的算法学习甚至是整个计算机技术的学习之中仍然熠熠生辉的算法思想,它们引领着我们不断探索算法的奥秘之处。所以,学习排序…

简单聊聊bait文件

场景:业务同事发现某云主机部署了企业主机安全,在该主机上发现了一个诱饵文件,显示注意:此文件是诱饵文件,用于防止重要文件被病毒加密。请勿修改或删除此文件。 解决方法:联系企业主机安全运维同事发现&am…

信号保存和处理

把上一篇回顾一下吧:共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,进程不再通过执行进入内核的系统调用来传递彼此的数据 共享内存的数据结构: struct shmid_ds {…

QT实现TCP/UDP通信

服务器端&#xff1a; 客户端&#xff1a; 服务器&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> #include <QTcpSocket> #include <QList> #include <QMessageBox> #include <QDebug&…

point transformer v3复现及核心代码详解

point transformer v3复现及核心代码详解 1. 复现1.1 复现1.2 数据预处理1.3 跑通 2. 核心代码详解2.1 读取数据2.2 dataloder2.3 模型读取数据的逻辑2.4 forward2.4.1 Point2.4.2 backbone2.4.2.1 point.serialization2.4.2.2 稀疏化2.4.2.3 embedding2.4.2.4 encoder 1. 复现…

Emlog程序屏蔽用户IP拉黑名单插件

插件介绍 在很多时候我们需要得到用户的真实IP地址&#xff0c;例如&#xff0c;日志记录&#xff0c;地理定位&#xff0c;将用户信息&#xff0c;网站数据分析等,其实获取IP地址很简单&#xff0c;感兴趣的可以参考一下。 今天给大家带来舍力写的emlog插件&#xff1a;屏蔽…

wakenet尾迹

1、数据集介绍SWIM_Dataset_1.0.0 1.1标注文件介绍 标注文件介绍&#xff0c; 第一种&#xff1a;角度和框的坐标 <annotation><folder>Positive</folder><filename>00001</filename>文件名字<format>jpg</format>图片后缀<s…

自掘坟墓?开源正在卷爆程序员!

前端训练营&#xff1a;1v1私教&#xff0c;终身辅导计划&#xff0c;帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer Hello&#xff0c;大家好&#xff0c;我是 Sunday。 今天这篇文章其实我想了好久&#xff0c;因为这并不是一个 和光同尘 的话题&#xff0c;它…

第143天:内网安全-权限维持自启动映像劫持粘滞键辅助屏保后门WinLogon

案例一&#xff1a; 权限维持-域环境&单机版-自启动 自启动路径加载 路径地址 C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\ ##英文C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\开始菜单\程序\启动\ ##中文…

OpenHarmony鸿蒙( Beta5.0)智能窗户通风设备开发详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…

如何逆转Instagram账号流量减少?实用技巧分享

Instagram作为全球十大社媒之一&#xff0c;不仅是个人分享生活的平台&#xff0c;还是跨境卖家进行宣传推广和客户开发的关键工具。在运营Instagram的过程中&#xff0c;稍有不慎就容易出现账号被限流的情况&#xff0c;对于账号状态和运营工作的进行都十分不利。 一、如何判断…

isis与ospf高级属性

文章目录 前言一、基础配置(配置各设备的IP地址)二、配置各设备的ospf与isis三、检查ospf与isis邻居是否建立成功1.实现快速重路由2.流量过滤方法3.引入默认路由4.配置等价路由 前言 在下面实验中&#xff0c;蓝色区域运行ospf&#xff0c;为了控制ospf的lsdb数量&#xff0c;…

vue页面使用自定义字体

一、准备好字体文件 一般字体问价格式为 .tff&#xff0c;可以去包图网等等网站去下载&#xff0c;好看的太多了&#xff01;&#xff01;&#xff01; 下载下来就是单个的 .tff文件&#xff0c;下载下来后可以进行重命名&#xff0c;但是不要改变他的后缀名&#xff0c;我把他…

【c++】类和对象详解

✅博客主页:爆打维c-CSDN博客​​​​​​ &#x1f43e; &#x1f539;分享c语言知识及代码 来都来了! 点个赞给博主个支持再走吧~&#xff01; 一.类的定义 &#xff08;1&#xff09;类定义格式 class为类定义的关键字&#xff0c;定义一个类格式如下: class 类名{//代码…

turtle.circle() 函数绘制弧形规律助记图 ← Python

【Python 之 turtle.circle() 函数定义】 定义&#xff1a;turtle.circle(radius, extent)作用&#xff1a;根据半径 radius 绘制 extent 角度的弧形参数&#xff1a;radius &#xff1a;弧形半径当 radius 值为正数时&#xff0c;圆心在当前位置/小海龟左侧。当 radius 值为负…

9月美联储决策前哨战——美国CPI数据来袭

随着本周关键CPI数据的即将发布&#xff0c;市场正翘首以待&#xff0c;这将是美联储在9月17日至18日议息会议前获取的最后一块重要经济拼图。鉴于美联储官员已进入传统的政策静默期&#xff0c;8月份的CPI报告无疑将成为交易员们评估未来货币政策走向的重要标尺。 欧洲央行降…