
大前端
文章平均质量分 66
整理和前端相关的知识点
骑鱼的少年
君子藏器于身,待时而动
展开
-
设计模式-观察者模式
一、背景多年前,用Java的时候,特意学过设计模式。但是随着时间的推移,发现设计模式在日常工作中,并没有很常用,渐渐地对设计模式的记忆变得模糊。最近参加技术小组学习,选的课题刚好是设计模式-观察者模式,特此记录学习成果,方便以后回忆。二、设计模式介绍什么是模式?建筑师Christopher Alexander给模式的定义是:每一个模式都描述了一个在我们周围不断发生的问题,以及该问题的解决方案的核心,这样,你就能够无数次地使用该解决方案而不用按照同样的方式重做一遍。简单地说,模式(patt原创 2021-09-18 14:56:57 · 94 阅读 · 0 评论 -
html页面生成图片-前端解决方案:vue+html2canvas
一、前言背景:最近有一个需求,要根据html页面,生成一个图片,并发送邮件。前端架构:vue+iview。技术选择:html2canvas 生成图片前提条件:npm i html2canvas二、代码实现编写toImage函数:创建一个htmltoimage.js文件,然后在main.js引入import html2canvas from 'html2canvas'import Vue from 'vue'const IMAGE = {}IMAGE.install = fu原创 2021-01-20 17:10:38 · 980 阅读 · 0 评论 -
07-vue源码学习-vue的响应式原理(MVVM原理)
什么是MVVMMVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。要实现一个mvvm的库,我们首先要理解清楚其实现的整体思路。先看看下图的流程:1.实现compile,进行模板的编译,包括编译元素(指令)、编译文本等,达到初始化视图的目的,并且还需要绑定好更新函数;2.实现Observe,监听所有的数据,并对变化数据发布通知;3.实现watcher,作为一个中枢,接收到o原创 2020-12-10 16:21:45 · 266 阅读 · 0 评论 -
06-vue源码学习-理解依赖收集和派发更新(Observer、Watcher、Dep)
转载至:彻底理解Vue中的Watcher、Observer、Dep在数据响应化时,在getter方法中做依赖收集,在setter方法中做派发更新。dep用于存储依赖和派发更新。思考以下代码new Vue({ el: '#example', data(){ return{ obj:{ a:1 } } },})当我们写下这行代码时,vue将我们在data内定义的obj对象进行依赖追踪.具体做转载 2020-12-10 15:33:43 · 513 阅读 · 0 评论 -
05-vue源码学习-发布订阅模式
发布订阅模式目标: 解耦, 让各个模块之间没有紧密的联系现在的处理办法是 属性在更新的 时候 调用 mountComponent 方法.问题: mountComponent 更新的是什么??? (现在) 全部的页面 -> 当前虚拟 DOM 对应的页面 DOM在 Vue 中, 整个的更新是按照组件为单位进行 判断, 已节点为单位进行更新.如果代码中没有自定义组件, 那么在比较算法的时候, 我们会将全部的模板 对应的 虚拟 DOM 进行比较.如果代码中含有自定义组件, 那么在比较算法的时候,原创 2020-12-10 12:00:54 · 448 阅读 · 0 评论 -
04-vue源码学习-proxy
proxyProxy 对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋值、枚举、函数调用等)。app._data.name// vue 设计, 不希望访问 _ 开头的数据// vue 中有一个潜规则:// - _ 开头的数据是私有数据// - $ 开头的是只读数据app.name// 将 对 _data.xxx 的访问 交给了 实例// 重点: 访问 app 的 xxx 就是在访问 app._data.xxx假设:var o1 = { name: '原创 2020-12-10 11:50:21 · 150 阅读 · 0 评论 -
03-vue源码学习-响应式原理(对象和数组)
一、响应式原理什么是响应式原理:意思就是在改变数据的时候,视图会跟着更新。实现响应式原理的核心:Object.definePropertyObject.defineProperty( 对象, '设置什么属性名', { writeable configurable enumerable: 控制属性是否可枚举, 是不是可以被 for-in 取出来 set() {} 赋值触发 get() {} 取值触发} )二、对象响应式化 <script>原创 2020-12-10 11:36:02 · 484 阅读 · 0 评论 -
02-vue源码学习-vue的基本执行流程和简单渲染模型
一、vue的基本执行流程获得模板: 模板中有 “坑”(比如{{}})利用 Vue 构造函数中所提供的数据来 “填坑”, 得到可以在页面中显示的 “标签了”将标签替换页面中原来有坑的标签总的来说:Vue利用我们提供的数据和 页面中模板生成了一个新的 HTML 标签 ( node 元素 ),替换到了页面中放置模板的位置.二、简单渲染模型Vue 本质上是使用 HTML 的字符串作为模板的, 将字符串的 模板 转换为 AST(抽象语法树), 再转换为 VNode(虚拟dom).模板 ->原创 2020-12-10 11:05:01 · 181 阅读 · 0 评论 -
01-vue源码学习-柯里化函数
一、概念:科里化: 一个函数原本有多个参数, 之传入一个参数, 生成一个新函数, 由新函数接收剩下的参数来运行得到结构.偏函数: 一个函数原本有多个参数, 之传入一部分参数, 生成一个新函数, 由新函数接收剩下的参数来运行得到结构.高阶函数: 一个函数参数是一个函数, 该函数对参数这个函数进行加工, 得到一个函数, 这个加工用的函数就是高阶函数.为什么要使用科里化? 为了提升性能. 使用科里化可以缓存一部分能力.二、代码实现vue源码中判断是否是html标签函数 let tags =原创 2020-12-10 10:21:37 · 572 阅读 · 0 评论 -
DOM事件模型和事件委托
此文章主要作用是记录看到的琐碎知识事件模型图常用的监听事件addEventListerbtn.addEventListener = ('click', function(){}, false)btn.addEventListener = ('click', function(){}, true)addEventListener(事件名,回调函数,布尔值),第三个参数是来指定事件是否在捕获阶段或冒泡阶段执行(默认为false,在冒泡阶段执行事件的回调函数)。事件委托(事件代理)事件委托.原创 2020-10-30 16:59:21 · 250 阅读 · 0 评论