现代前端技术解析:现代前端交互框架

直接 DOM 操作时代


DOM API分为:节点查询型、节点创建型、节点修改型、节点关系型、节点属性型、内容加载型

类型方法jQuery 方法
节点查询型getElementById、getElementByName、getElementsByClassName、getElementsByTagName、querySelector、querySelectorAll$(selector).find()等
节点创建型createElement、createDocumentFragment、createTextNode、cloneNode$(selector).clone()等
节点修改型appendChild、replaceChild、removeChild、insertBefore、innerHTMLhtml()、replace()、remove()、append()、before()、after()等
节点关系型parentNode、previousSibling、childNodesparent()、siblings()、closest()、next()、children()等
节点属性型innerHTML、attributes、getAttribute、setAttribute、getComputedStyleattr()、data()、css()、hide()、show()、slideDown()、slideUp()、animate()等
内容加载型XMLHttpRequest、ActiveXajax()、get()、post()等

DOM的property和attribute区别

property通常是指DOM元素对象的(固有)属性,例如style
attribute是指HTML标签的文本标记属性,一般是可见的,如自定义的data-status属性

JQuery

简化选择器、DOM 操作方法、Ajax、事件绑定、延时对象、兼容性处理

主流前端页面加载模式

DOM 加载 => JS 等脚本加载 => 脚本执行发送请求 => DOM 操作进行数据渲染 => 事件绑定

MV* 交互模式


前端 MVC 模式

MVC(Model-View-Controller)数据模型、试图、事件控制函数

  • Model 用来存放数据结果和数据对象
  • View 用于页面 DOM 的更新与修改
  • Controller 用于根据前端路由条件来调用不同 Model 给 View 渲染不同的数据内容

前端 MVP 模式

MVP(Model-View-Presenter)

  • Presenter 与 View 的操作绑定是双向的

前端 MVVM 模式

MVVM可认为是一个自动化的MVP,使用ViewModel代替了Presenter。数据Model的调用和模板内容的渲染不需要主动操作,而是ViewModel自动来触发完成,任何用户的操作也是通过ViewModel的改变驱动的。

Visual DOM 交互模式

设计思想:

在内容发生变化时,不改变整个列表,只对变化的部分重新渲染
Visual DOM 是一段能够直接描述 HTML DOM 结构的 JS 对象

核心实现:

  1. 创建 Visual DOM
    把一段 HTML 字符串文本解析成一个能够描述它的 JS 对象
    根据标签之间的关系,进行词法分析,自己实现解析方式
    (由于 Visual DOM 的使用目的是避免直接进行 DOM 操作,所以我们不能用 DOM API 扫描生成 JS 对象,这样效率很低)

  2. 对比 Visual DOM
    将改变后的 Visual DOM 结构与改变前的对比,生成差异树对象(对于多叉树的遍历,DFS/BFS)

  3. 渲染差异化 Visual DOM

前端 MNV* 时代

前端 MNV 开发模式:*

  • MNV*Model-NativeView-*
  • * 可以是 Visual DOM 或 MVVM 中的 ViewModel
  • 使用 JS 调用原生控件或事件绑定来生成应用程序的交互模式
  • 完全脱离 DOM 编程的模式
  • 这种模式仅适用于移动端Hybrid应用,因为需要依赖原生应用控件的调用支持。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值