什么是diff算法?diff算法是一种用于比较虚拟DOM树之间差异的高效算法。就是进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新DOM。diff算法的作用?它是Vue的核心特性之一,允许Vue以一种有效的方式更新DOM以反映数据的最新状态。Vue的diff算法采用深度优先的递归方式比较两棵虚拟DOM树的差异。它会尽可能地复用老的虚拟节点
今天我们来说下我们构建一个完整的vue的项目需要哪些步骤?构建项目vue3项目中我们就用create-vue命令或者vite去生成一个新的项目。引入插件接下来就是引入必要的插件比如:路由:vue-router,网络请求:axios,存储:vuex/pinia,UI库:elementUI/vant/element-plus等。常用库和组件常用库和组件有像lodash、dayjs、nprogress等
上节说到了vue中的数据响应的方式,这篇说下这两个的具体理解和区别。首先vue3中已经放弃了defineProperty,使用了proxy来代替,那么肯定是defineProperty有不足之处。那么先说下defineProperty的不足之处在哪里?首先:Object.defineProperty 有一个缺陷是无法监听数组下标的变化,导致直接通过数组的下标给数组设置值,不能实时响应。一旦我们修改
什么是响应式?数据响应式就是 能够监测到数据变化并且做出响应的一种机制为什么vue需要响应式?在 vue 中要解决的一个核心问题就是连接数据层和视图层,通过数据变化驱动视图更新,要做到这点就需要对数据做响应式处理。有什么好处?通过数据响应式加上虚拟 DOM 和 patch 算法,我们只需要操作数据,关心业务,完全不需要接触繁琐的 
大家都知道vue中的双向绑定用的是v-model来实现的,它会根据表单元素的类型自动选择正确的方法来更新数据。那么具体实现的原理是什么呢?下面先用语言去解释一下。 Vue 中双向绑定的原理其实就是利用:value把变量挂载到dom上,然后通过input事件去监听元素的变化,从而实现动态绑定的原理,看看使用代码:<template> <div> <
iOS的内存管理其实涉及到的东西特别多,这里我们不去详细的阐述细节的东西,大概说一下内存中的野指针、空指针、自动释放池、property内存管理的关键字这几个方面。1.野指针、空指针野指针就是指向了一个被销毁的对象的指针,如果给野指针发送消息,会报EXC_BAD_ACCESS错误。如何避免野指针的出现?就是在对象被销毁之后,将其置为nil。空指针就是没有存储任何内存地址的指针,也就是NULL或者n
上一篇说了四个iOS中常用到的存储类型,分别是NSUserDefault、归档(NSKeyedArchiver)、KeyChain、Plist存储。这篇我们主要说下SQLite3和CoreData.1.SQLite3SQLite3是一个轻量级的能够跨各端的数据库,它能够存储大量的数据以及存储的速度非常快,并且能够对数据进行大量的聚合,操作也使非常快的。但是它的写起来也非常繁琐,用到的都是C语言的结
最近做项目过程中用到了iOS的本地存储,今天大概简述一下iOS中经常遇到的本地存储,大概可分为几个:NSUserDefaults (开发中用到的最多的)归档Keychainplist存储SQLite3CoreData下面大概介绍下这几个:1.NSUserDefaultsNSUserDefaults适合存储轻量级的本地数据,支持的数据类型有:NSNumber,NSString,NSDate,NSAr
1.什么是RunLoopRunLoop是通过苹果系统内部维护的事件循环(Event Loop)来对事件/消息进行管理的一个对象。没有消息处理时,休眠已避免资源占用,由用户态切换到内核态。有消息需要处理时,立刻被唤醒,由内核态切换到用户态。2.RunLoop的数据结构NSRunLoop(Foundation)是CFRunLoop(CoreFoundation)的封装,提供了面向对象的API RunL
作为一名多年的iOS开发者,说实话iOS中用到的锁确实不常用,但是也很有用,今天我们来总结一下常用的锁。1.NSLockNSLock属于互斥锁,一般只是用于简单的逻辑中,不能多次使用lock,不然会造成死锁。示例代码://创建锁 _myLock = [[NSLock alloc] init]; [self testLock]; -(void)testLock { //上锁 [_my
1.@property首先我们要只知道当你写下@property的时候,内部做了什么操作?举个例子:@property NSObject *obj;这个时候编译器做了三件事:1.创建了实例变量obj;2.声明了obj属性的setter和getter方法;3.实现了obj属性的setter和getter方法。其次,就是@property的本质是什么?其实就是一句话,使用@property系统化会自动
今天我们来说下http和https的安全性,众所周知http是不安全的,它可以被中间人攻击篡改我们发送的和获取到的内容,那么https就可以防止中间人攻击,是安全的,那么就要说说他们两个的区别了。首先,HTTP是协议中的报文都是以明文的方式进行传输的,不做任何加密,这样就有一个角色登场了,那就是中间人。我举个例子,比如说A正在给服务器发送一个消息aaa,那么在传输协议的过程中aaa可能会被截获,然
1.MVC:Model-View-ControllerMVC是通过controller的控制去操作model层的数据,并且返回给view层展示。MVC工作原理:用户触发事件 -- view层发送指令到controller层 -- controller通知model层更新数据 -- 数据更新完显示在view层上。优点:通过controller控制全局,同时将view和model的变化分开,对复杂混乱
今天简单来说下runtime的具体应用场景有哪些?1.给分类添加属性正常来说分类是不能添加属性的,但是利用runtime的机制就可以实现这个功能,主要是通过关联对象的方式实现,代码如下:// .h代码 #import <Foundation/Foundation.h> @interface NSObject (Name) @property (nonatomic,copy)NSSt
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号