达夫设备(Duff's device) 发表于 2018-05-01 | 分类于 人生很美好 达夫设备是什么?在看《js高性能编程》这一本书的过程中,发现了其中一个处理循环的算法,书中称之为达夫设备。这到底是什么呢?来看看wiki的解释达夫设备(英文:Duff’s device)是串行复制(serial copy)的一种优化实现,通过汇编语言编程时一常用方法,实现展开循环,进而提高执行效率。这一方法据信为当时供职于卢卡斯影业的汤姆·达夫于1983年11月发明,并可能是迄今为止利用C语言switch语句特性所作的最巧妙的实现。达夫设备说白了就是展开循环的变形 阅读全文 »
prop双向绑定 发表于 2018-04-21 | 分类于 人生很美好 Vue单项数据流vue的组件间传值使用的是prop。按照vue的设计理念,prop的传值应该是单向的,因为这样会避免父组件将值传给多个子组件时某一个子组件数据变动导致的其他有数据依赖的组件同步更新,而消耗性能。但某些情况下,我们必须要使用双向数据流,应该怎么办呢? 阅读全文 »
修改vue的keep-alive实现仿easyui-页面tab切换 发表于 2017-10-27 后台管理页面通常会有tabs切换作为导航常见实现方式 通过显示和隐藏div(缺点:无法看到路由) 通过iframe,其实和显示隐藏区别不大vue实现方式因为要在vue中实现,用vue-router和vue中一个keep-alive,但是keep-alive有个缺点,他是用对象来缓存组件,并且是一个抽象组件,所以就稍微修改下。 效果图 阅读全文 »
js设计模式笔记-职责链模式 发表于 2017-08-23 职责链模式 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 你去政府部门求人办事过吗?有时候你会遇到过官员踢球推责,你的问题在我这里能解决就解决,不能解决就推卸给另外个一个部门(对象)。至于到底谁来解决这个问题呢?政府部门就是为了可以避免屁民的请求与官员之间耦合在一起,让多个(部门)对象都有可能接收请求,将这些(部门)对象连接成一条链,并且沿着这条链传递请求,直到有(部门)对象处理它为止。 阅读全文 »
js设计模式笔记--策略模式 发表于 2017-08-22 策略模式 将定义的一组算法封装起来,使其可以相互替换。封装的算法彼此之间独立,不会随着客户端的变化而变化 通过定义算法返回结果,和状态模式不同的是,没有对象的依赖 阅读全文 »
js设计模式笔记--状态模式 发表于 2017-08-22 状态模式 当一个对象的内部状态发生改变时,会导致其行为的改变,看起来像是改变了对象 当碰见需要多次判断某一个值得时候,不能确定是否还是会继续添加,就用状态模式,将判断的条件当做对象内部的一种状态 阅读全文 »
js设计模式笔记--观察者模式 发表于 2017-08-22 观察者模式 观察者模式又被称作发布-订阅模式,是一种消息机制,依靠事件很容易实现解耦 观察者模式称为js最重要的设计模式都不为过 观察者模式实际是函数的回调,先将函数放入(订阅)容器中,发布的时候从容器中拿出执行 阅读全文 »
js设计模式笔记--模板方法模式 发表于 2017-08-22 模板方法模式 父类定义一组操作骨架,将一些具体的步骤放在子类中,使得子类不改变父类的情况下,实现多元化展现 提供一个基础的弹框,外壳一样,但是里面的内容不一样,这就是模板方法的一种实现 阅读全文 »
js设计模式笔记--享元模式 发表于 2017-08-22 享元模式 运用共享技术有效的支持最大量的细粒度的对象,避免对象间拥有相同的内容造成多余的开销 主要对数据和方法共享分离,将数据和方法分为外部和内部,内部就是共享的,所以提出来这一部分能提高性能 barrat李靖的解释 “享”是共享的意思,“元”指的是元件,也就是小颗粒的东西,享元顾名思义便是共享小部件,很多系统或者程序包含大量对象,但是这些对象绝大多数都是差不多的,除了一些极个别的属性外。在享元模式中有两个比较重要的关键词,内部变量和外部变量;内部变量是可以共享的属性集,而外部变量是对象之间的差异部分,通过相同+不同的方式组合诸多对象,可以有效地节省系统空间,降低内存大小。 阅读全文 »
js设计模式笔记-组合模式 发表于 2017-08-21 组合模式 层次结构,将部分整合成一个整体,类似DOM tree,所有有节点组合成一个html,使得用户对单个对象和组合的对象具有一致性 有一个整体作为对外的接口,内部组合若干的层次,模块化每个组件 阅读全文 »