- 博客(27)
- 收藏
- 关注
原创 js 兼容事件
/创建一个存放事件的哈希表(散列表)//获取某一个元素到最外层顶点的位置。//获取某一个节点的上一个节点的索引。//获取某一个节点的下一个节点的索引。//创建一个存放事件处理函数的数组。//跨浏览器获取innerText。//跨浏览器设置innerText。//某一个值是否存在某一个数组中。//为每个事件分配一个计数器。//跨浏览器添加link规则。//跨浏览器移出link规则。//同一个注册函数进行屏蔽。//跨浏览器获取滚动条位置。//跨浏览器获取Style。//跨浏览器添加事件绑定。
2025-01-21 14:45:52
676
原创 vue设计与实现
运行时 + 编译时: 可以分析用户提供的内容,看看哪些内容未来可 能会改变,哪些内容永远不会改变,这样我们就可以在编译的时候提取这些信息 ,然后将其传递 给Render 函数,Render 函数得到这些信息之后,就可以做进 一步的优化了。由于不需要任何运行时,而是直接 编译成可执行的JavaScript 代码,因此性能可能会更好,但是这种做法有损灵活性,即用户提供 的内容必须编译后才能用。ESM 格式的资源有两种:用于浏览器的 esm-browser.js 和用于打包工具的 esm-bundler.js。
2024-05-30 18:45:54
452
1
原创 vue 响应式系统
函数的执行会直接或间接影响其他函数的执行,这时我们说这个函数产生了副作用。副作用很容易产生,例如一个函数修改了全局变量, 这其实也是一个副作用。当obj.text发生变化时,effect函数自动执行。obj就是响应式数据在浏览器中显示“响应式数据测试” 一秒后会显示 “vue3”这种方式不灵活,它是直接通过名字(effect )来获取副作用函数。副作用函数的名字应该可以任意取。
2024-05-30 18:27:36
1097
2
原创 网络参考模型与标准协议
如果ARP缓存中不存在主机B的物理地址,主机A就需要发送一个ARP请求广播,向本地网络中的所有主机发送一个询问,询问该IP地址对应的物理地址是谁。ARP具有自动学习和更新的能力,每当主机之间进行通信时,ARP缓存会自动更新,以保持IP地址和物理地址的对应关系的准确性。如果匹配,说明自己就是被询问的主机B,就会发送一个ARP响应包,将自己的MAC地址回复给主机A。当主机A收到主机B的ARP响应包后,就可以将主机B的MAC地址存储到自己的ARP缓存中,并使用该MAC地址封装数据帧,将数据包发送给主机B。
2024-01-26 13:47:07
790
原创 css 笔记
通过绝对定位实现的双列布局看起来会比较僵硬,因为父盒子首先需要设置定位属性并且父盒子的高度无法被子盒子撑开,如果子盒子的高度是自适应的,那么父盒子的高度也就无法确定从而设置了,但优点是设置属性比浮动来得更直观。自适应的双列布局利用浮动、外边和触发父级BFC即可实现,这种方法主要是因为BFC的高度计算会包含其内的浮动元素的高度,父盒子会被撑开。常规块盒子有一种机制叫外边距折叠,即垂直方向上的两个外边距相遇时,会折叠成一个外边距,且折叠之后的外边距高度为两者之中较大的那一个。
2023-09-22 17:07:00
83
原创 ts-notes
note: linkbooleannumberstring[] | Array<元素类型>[string,number,…]enumAnyVoidNullUndefiendNeverObject类型断言类型断言有两种形式。 其一是“尖括号”语法:另一个为as语法接口可选属性只读属性函数类型接口能够描述JavaScript里丰富的类型。除了描述带有属性的普通对象外,接口也可以描述函数类型。给定义了一个调用签名,就像是一个只有参数列表和返回值类型的函数定义。可
2023-07-14 18:03:25
207
原创 vue virtual Dom
virtual Dom是一个轻量级的Javascript对象,在状态发生变化时,virtual Dom会进行Diff运算,来更新只需要被替换的DOM,而不是全部重绘
2022-05-26 16:03:12
129
原创 vue 自定义指令
Vue 自定义指令自定义指令的钩子函数bind:只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个绑定时执行一次的初始化动作inserted:被绑定元素插入父节点时调用(父节点存在即可调用,不必存在与document中)update:被绑定元素所在的模板更新时调用,而不论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新componentUpdated:被绑定元素所在模板完成一次更新周期时调用unbind:只调用一次,指令与元素解绑时调用...
2022-05-24 17:38:33
148
原创 Vue slot
slotprops传递数据、events触发事件和slot内容分发构成了Vue组件的3个API来源,再复杂的组件也是由这3部分构成的。slot分发的内容,作用域是在父组件上单个slot在子组件内使用特殊的<slot>元素,就可以为这个子组件开启一个slot插槽,在父组件里,插入在子组件标签内的所有内容将替代子组件的<slot>标签及它的内容子组件<slot>内的备用内容,它的作用域是子组件本身具名slot给<slot>元素指定一个name后
2022-05-17 16:36:49
191
原创 vue 组件间的通信
组件间的通信非父子组件通信1、 vue1版本中是通过$dispatch()和$broadcast()这两个方法$dispatch()用于向上级派发事件,只要是它的父级,都可以在vue实例的events选项内接收$broadcast()是由上级向下级广播事件的,这俩中方法一旦发出事件后,任何组件都可以接收到,并且会在第一次接收后停止冒泡,除非返回truevue.component('my-component',{ ... methods:{ handleDispatch:function(
2022-05-16 18:24:57
82
原创 vue 完整版 运行时版本及其设计
vue 完整版 运行时版本包括了 UMD(vue.js vue.min.js)、CommonJS(vue.common.js vue.common.dev.js vue.common.prod.js)、ES(vue.esm.browser.js vue.esm.browser.min.js vue.esm.js)生产和开发包,以及完整版,压缩版本、只包含运行时的版本(…runtime…js)vue脚手架工具开发版默认加载的是运行时版本(运行时版本没有 compiler编译,也就是不能
2022-05-16 17:24:19
284
原创 Module
Module在es6之前,JavaScript没有模块系统。社区自己定制了一些模块加载方案,如CommonJS(服务器)、AMD(浏览器)等。模块化降低程序之间的耦合性方便代码复用维护方便CommonJS一个js文件就是一个模块,模块中的代码是全部包装在函数中的可以通过类数组arguments对象验证,只有在函数中才能使用arguments对象arguments对象和Function是分不开的因为arguments这个对象不能显式创建arguments对象只有函数开始时才可
2021-11-04 18:06:04
157
原创 面向对象的程序设计
面向对象的程序设计对象的属性创建对象继承面向对象都有类的概念,通过类可以创建任意多个具有相同属性和方法的对象。无序属性的集合,其属性可以包含基本值、对象或函数。创建一个对象并为其添加属性和方法var person = new Object();person.name = 'DMXY';person.age = 29;person.job = 'software Engineer';person.sayName = function(){ console.log(this.na
2021-07-20 16:29:46
107
原创 Generator 函数
Generator 函数Generator函数\color{#c4f}Generator 函数Generator函数是 ES6 提供的一种异步编程\color{#c4f}异步编程异步编程解决方案,语法行为与传统函数完全不同Generator 函数多种理解角度语法上Generator函数\color{#c4f}Generator 函数Generator函数是一个状态机\color{#c4f}状态机状态机,封装了多个内部状态\color{#c4f}多个内部状态多个内部状态,执行 Generator 函数
2021-07-12 17:50:40
109
原创 Class
Class类的由来JavaScript语言中,生成\color{#f8f}生成生成实例对象\color{#88f}实例对象实例对象的传统方法是通过构造函数\color{#88f}构造函数构造函数function Point(x, y) { this.x = x; this.y = y;}Point.prototype.toString = function () { return '(' + this.x + ', ' + this.y + ')';};var p = ne
2021-06-25 17:31:55
88
原创 iterator
iterator一种接口,为各种不同的数据结构提供的统一的访问机制。作用为各种数据结构,提供一个统一的、简便的访问接口使得数据结构的成员能够按某种次序排列es6创造了一种新的遍历命令 for…of循环,Iterator接口主要供for…of消费遍历过程创建一个指针对象,指向当前数据结构的起始位置。(遍历器对象本质上,就是一个指针对象)第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员第二次调用指针对象的next方法,指针就指向数据结构的第二个成员不断调用对象
2021-06-21 14:59:42
103
原创 canvas 获取视频帧
canvas 获取视频帧用作视频封面Canvas 2D API 中的 CanvasRenderingContext2D.drawImage() 方法提供了多种方式在Canvas上绘制图像。语法void ctx.drawImage(image, dx, dy);void ctx.drawImage(image, dx, dy, dWidth, dHeight);void ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dH
2021-06-17 18:05:34
1685
原创 electron 将前端项目打包成桌面应用
electron-forge使用electron-forge 创建项目安装electron-forgenpm install -g electron-forge由于网络原因安装失败可使用淘宝镜像npm install -g nrm安装成功后 查看源(这里使用cmd 或在编辑器中的terminal 可能会出现下面错误)使用git bash here窗口可以查看各种源nrm ls cmd窗口vscode terminal 窗口git bash here切换源nrm us
2021-05-07 14:08:43
386
原创 windows 编程api 使用
#include <tchar.h>#include <Windows.h>#pragma comment(lib, "Urlmon.lib")int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPerIntance, char* ipCmdLine, INT nShowCmd){ /* 弹框 */ //MessageBox(NULL, _T("第一个程序"), _T("标题"),MB_OK); /* 下载文件
2021-04-25 18:14:06
139
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人