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



相关文章
|
1月前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端框架
【10月更文挑战第34天】在数字化时代,后端开发如同一座桥梁,连接着用户界面与数据处理的两端。本文将通过Node.js这一轻量级、高效的平台,带领读者领略后端框架的魅力。我们将从基础概念出发,逐步深入到实战应用,最后探讨如何通过代码示例来巩固学习成果,使读者能够在理论与实践之间架起自己的桥梁。
|
2月前
|
JavaScript 容器
乾坤qiankun框架搭建 主应用为vue3的项目。
乾坤qiankun框架搭建 主应用为vue3的项目。
200 2
|
1月前
|
缓存 监控 JavaScript
Vue.js 框架下的性能优化策略与实践
Vue.js 框架下的性能优化策略与实践
|
1月前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
39 2
|
1月前
|
缓存 负载均衡 JavaScript
构建高效后端服务:Node.js与Express框架实践
在数字化时代的浪潮中,后端服务的重要性不言而喻。本文将通过深入浅出的方式介绍如何利用Node.js及其强大的Express框架来搭建一个高效的后端服务。我们将从零开始,逐步深入,不仅涉及基础的代码编写,更会探讨如何优化性能和处理高并发场景。无论你是后端新手还是希望提高现有技能的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
2月前
|
JavaScript 前端开发 API
Vue.js:现代前端开发的强大框架
【10月更文挑战第11天】Vue.js:现代前端开发的强大框架
88 41
|
1月前
|
JavaScript 中间件 API
Node.js进阶:Koa框架下的RESTful API设计与实现
【10月更文挑战第28天】本文介绍了如何在Koa框架下设计与实现RESTful API。首先概述了Koa框架的特点,接着讲解了RESTful API的设计原则,包括无状态和统一接口。最后,通过一个简单的博客系统示例,详细展示了如何使用Koa和koa-router实现常见的CRUD操作,包括获取、创建、更新和删除文章。
51 4
|
1月前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
54 1
|
1月前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
113 3
|
1月前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
45 1