Vue.js框架中权衡的艺术(一)

简介: Vue.js框架中权衡的艺术

1686889477236.jpg

前言

更文活动又开始了,冲这奖品也得肝一肝,先给自己定个小目标,活动结束之前,先肝个7篇,完成个最基础的任务。

无奈,平时积累的文章不够,恰好,上个月读了一段时间《Vue.js设计与实现》,有整理部分笔记,先发几篇。

所以,后面几篇内容都是对这本书内容的整理总结

详细情况可以查看专栏学习理解《Vue.js设计与实现》

《Vue.js 设计与实现》是Vue.js官方团队成员 霍春阳 倾力打造,基于Vue.js3 深入解析Vue.js设计细节。

这本书一大特点就是贵,定价120,到手价格90。

1686889528518.jpg

设计框架里到处都体现了权衡的艺术

牛逼!!!

其实说人话就是 就是设计时的技术方案的选型,然后为什么选这个,不选那个,高大上一点就是 权衡。

命令式 和 声明式的权衡

视图层的框架一般分为 命令式和声明式。

命令式框架:如Jquery和原生js,更关注更改视图,修改dom的过程。

声明式框架:如vue,更关注结果,操作dom,修改dom的过程我们不用关心,vue去帮我们我们完成,我们只需要告诉框架我们需要什么样的东西

以一个操作dom的场景为例子

  • 获取一个dom\
  • 设置文本内容hello world\
  • 为其绑定点击事件\
  • 当点击时弹出ok


// jquery 实现
$('#app') // 获取div
    .text("hello world") // 设置文本内容
    .on("click",()=>{ alert('ok') }) // 增加监听事件
// 原生js实现
const div = document.querySelector('#app') // 获取div
div.innnerText = 'hello world' // 设置文本内容
div.addEventListner('clilk',() => { alert('ok') } })   // 增加监听事件
// vue 实现
<div @click="()=> alert('ok')">hello word</div>

命令式框架,更加符合人脑处理事情的思路,面向过程,一步一步去做。

声明式框架,更加傻瓜式一些,只需要告诉框架,我需要的结果,但是如果告诉框架,有框架自定义的一套规范,有学习成本和使用成本。

权衡之后,vue 决定按 一套 声明式框架来设计

性能与可维护的权衡

命令式框架的性能 优于 声明式的框架的性能

简单来说,就是jquery 性能优于 vue

当我们需要更新dom时

  • 对于vue 框架来说,修改dom 需要先找到真实dom 和虚拟dom的差异,更新dom有差异的地方。
  • 对于jquery 框架来说,修改dom 直接去修改就可以了。

vue 等声明式框架的更新性能消耗 = 直接修改的性能消耗 + 找出差异的性能消耗

jquery 等命令式框架的更新性能消耗 = 直接修改的性能消耗

所以说,jquery 性能优于 vue

当然了vue的可维护性更强,所以我们需要做的是,努力减小找出差异的性能消耗,这样就可以使vue的性能无限接近jquery

因此我们提出了虚拟dom,来最小化找出差异

虚拟DOM的性能

其实性能这个东西,很难直接说,好不好,没有对比就没有伤害

我们把它和原生js 修改dom 进行对比

虚拟dom 简单来讲它就是将HTML的DOM,用一套JS对象来表示。

为了更好的说明虚拟dom的性能,我们用innerHTML来比较。

innerHTML 是html5 提出的一个新的获取操作dom的方法。

不知道这个api的可以去查一查,活着看下我之前写的dom bom博客,

从零开始学习dom bom



相关文章
|
7天前
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架,它们各自拥有独特的核心功能和使用场景
【6月更文挑战第16天】Phaser是开源的2D游戏引擎,适合HTML5游戏,提供物理引擎、图像渲染和资源管理,适用于2D游戏,如消消乐。Three.js是基于WebGL的3D库,用于创建复杂的3D场景和应用,涵盖从游戏到可视化领域的多种用途。两者分别在2D和3D开发中展现强大功能,选择取决于项目需求。
20 8
|
7天前
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。
|
16天前
|
JavaScript 前端开发 中间件
Express框架搭建项目 node.js
【6月更文挑战第3天】这篇文章是关于使用Express框架构建Node.js Web应用的教程。Express是一个轻量级、功能丰富的框架,特点包括简洁灵活的核心、强大的中间件支持、灵活的路由系统和模板引擎兼容性。文章介绍了如何安装Express,并通过一个简单的示例展示了如何创建一个基本的Web服务器。最后,鼓励读者继续学习和实践,以充分利用Express和Node.js的能力。
23 1
|
20天前
|
前端开发 JavaScript API
Vue.js:渐进式JavaScript框架-前端开发
Vue.js:渐进式JavaScript框架-前端开发
23 3
|
23天前
|
JavaScript Java 测试技术
基于ssm+vue.js的框架失物招领信息交互平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的框架失物招领信息交互平台附带文章和源代码设计说明文档ppt
15 1
|
24天前
|
JavaScript 前端开发 API
Vue与其他框架的对比优势
【5月更文挑战第30天】Vue与其他框架的对比优势
18 1
|
24天前
|
JavaScript 前端开发 API
Vue.js是一个构建用户界面的渐进式框架
【5月更文挑战第30天】Vue.js是一个构建用户界面的渐进式框架
21 1
|
3天前
|
JavaScript 前端开发 Java
信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ&插件项目
信息打点-JS架构&框架识别&泄漏提取&API接口枚举&FUZZ&插件项目
|
5天前
|
JavaScript 前端开发 编译器
跨越时代的框架对决:深度剖析Vue 2与Vue 3核心差异
跨越时代的框架对决:深度剖析Vue 2与Vue 3核心差异
14 0
|
5天前
|
JSON JavaScript 中间件
Node.js Express 框架
Node.js Express 框架
11 0