首页 > 其他分享 >0001命令式和声明式

0001命令式和声明式

时间:2024-04-10 19:01:19浏览次数:22  
标签:0001 代码 性能 命令式 div 声明 hello

命令式

命令式框架的一大特点就是关注过程

就如下面的代码,自然语言描述能够与代码产生一一对应的关系,代码本身描述的是"做事的过程",这符合我们的逻辑直觉

const div = document.querySelector('#app')      //获取div
div.innerText = 'hello world'                   //设置文本内容
div.addEventListener('click',()=>{alert('ok')}) //绑定点击事件
声明式

声明式框架更注重结果

如下面代码,可以实现上面代码相通的功能,我们只需要提供一个"结果",至于如何实现这个"结果",我们并不需要关心,交给

<div @click="()=> alert('ok')">hello world</div>
优缺点

命令式和声明式各有优缺点,在框架设计方面,则体现在性能与可维护之间的权衡.

比如当我们要将div标签的文本内容修改为hello vue3

命令式

使用命令式我们可以用以下代码实现

div.textContent = 'hello vue3'
声明式

使用声明式我们可以用以下代码实现,但是对于框架来说,为了实现最优的更新性能,他需要找到变化的地方,最终完成此次更新的代码还是上面的那串代码.

<!--之前-->
<div @click = "()=> alert('ok')">hello world</div>
<!--之后-->
<div @click = "()=> alert('ok')">hello vue3</div>
性能差异

如果我门把直接修改性能消耗定义为A,把找出差异的性能消耗定义为B,那么有:

命令式代码更新性能消耗: A

声明式代码更新性能消耗: A + B

所以就算最理想的情况下,即B的性能消耗为0,声明式的代码也只能于命令式的代码性能持平

总结

所以使用声明式代码是为了可维护性更强,但是在让可维护性变强的同时,性能就会有一定的损失,而框架设计者要做的就是,在保持可维护性的同时让损失最小化

标签:0001,代码,性能,命令式,div,声明,hello
From: https://blog.csdn.net/qq_45774781/article/details/137607059

相关文章

  • Spring Boot数据缓存之声明式缓存支持
    在SpringBoot数据缓存之Spring缓存抽象@Cacheable初体验对声明式数据缓存有了初步的体验,那么SpringBoot是如何支持数据缓存的呢?由于Mybatis本身也具备缓存的功能,那怎么知道案例中的环境使用的是SpringBoot中提供的还是Mybatis自带的缓存功能呢?将数据访问的方式改为JPA方式......
  • Item22:将成员变量声明为private
    芝士wa2024.4.7参考资源:EffectiveC++中文版第三版侯捷/译索引号:主图B300TP312C++/D60-3成员变量不该是public的理由:如果成员变量不是public,客户唯一能访问对象的方法就是通过成员函数,这种做法提高了规范性和一致性private可以实现只读,只写,读写的操作封装意义,public和......
  • HOW - Typescript 类型声明文件
    目录一、背景二、如何添加类型定义支持智能提示方法一:使用JSDoc注释方法二:使用TypeScript编写类型声明文件.d.ts方法三:JSDoc注释转Typescript类型声明文件总结二、使用TypeScript编写类型声明文件1.创建类型声明文件2.编写类型声明2.1dec......
  • Spring声明式事务(Spring学习笔记十五)
            不推荐使用编程式事务 在Spring-dao.xml中配置声明式事务<!--配置声明式事务--><!--获得transactionManager然后把他丢给他的构造器constructor-arg--><beanid="transactionManager"class="org.springframework.jdbc.datasource.D......
  • JavaScript不建议直接声明undefined的原因,极致的严谨和仔细
    前言:很多人写JavaScript代码时习惯用vara=undefined这种写法,其实这种写在某种情况下会产生意想不到的bug,又或者说undefined本身就是JavaScript的一个bug??为什么这么说呢,因为undefined它应该是关健字才合理的,但undefined在JavaScript里面压根就不是关健字,它是window......
  • Vue基础知识:声明式导航---导航链接router-link,router-link是什么,怎么用?router-link-ac
    router-link是什么?vue-router提供的一个全局组件,router-link(用于取代a标签)router-link怎么用?router-link的好处?1.能够跳转,能高亮(自带激活时的类名)1.能跳转,配置to属性指定路径(必须)。本质还是a标签,to不需要多加#既然已经有了a标签,为什么还有加一个router-link标签呢?......
  • Python函数(一):函数的声明、调用以及参数的使用
    目录为何要用到函数函数的定义和调用函数的参数参数的传递参数的类型 return语句为何要用到函数通常我们编写一段代码是为了实现特定的功能,比如想得到一段数字序列中的最大值、最小值和平均值并输出一个字典,编写一段代码如下:num=[96,85,69,82,52,99,72]m......
  • Rust中声明变量的方式
    letmutguess=String::new();在Rust中,一般使用let声明变量,比如letapples=5;这行代码声明了一个名为apples的变量,并绑定其变量值为5,在Rust中变量默认是不可变的immutable。意味着一旦给变量赋值后,其值不会发生改变。需要声明可变的变量,需要在变量名之前加mut,比如letappl......
  • js 可以间接地“声明”或初始化变量的其他方式(除了直接使用var、let和const)
    在JavaScript中,除了直接使用var、let和const关键字来声明变量外,还有一些其他方式可以间接地“声明”或初始化变量。以下是一些示例:函数参数:当定义一个函数时,函数的参数列表中的每个参数实际上都会成为该函数作用域内的变量。这些变量在函数被调用时会被自动声明和初始化。func......
  • 调试逻辑及变量声明顺序
    模型功能使用ILA观察信号观察变量的转化触发信号的设立ILA调试状态机的编写VIO的手动控制模型框图ila_0u_ila_0(.clk(clk),.probe0(probe_0));实现步骤ILA调试核的使用直接调用该IP核,可以实现一个在线逻辑分析仪的功能ILA核的设置包括信号个数(对应位宽......