- 博客(30)
- 问答 (3)
- 收藏
- 关注
原创 跨域原理及解决方案
前言跨域是什么,为什么会有跨域?跨域的解决方法是什么?常用的是什么?原理是什么?什么是跨域跨域是指从一个域名去请求另一个域名的资源。严格来说,只要域名,协议,端口任何一个不同,就视为跨域。跨域场景以下这种看上去再相似也没有用,都是跨域。主域不同http://www.chrome.cn/index.htmlhttp://www.chomper.cn/server.php子域名不同http://abc.chomper.cn/index.htmlhttp:/.
2021-08-02 19:20:50
1153
原创 数据结构-查找
查找1. 线性表的查找1.1 顺序查找时间复杂度 O(n)function SeqSearch(arr, k) { let i = 0, len = arr.length; while (i < len && arr[i] !== k) i++; if (i < len) return i + 1; else return 0;}优化方式,在数组末尾添加一个关键字为 k 的记录,作为哨兵,这样在查找过程中不用再判断 i 是否越
2021-07-29 21:15:19
284
原创 一文彻底弄清楚虚拟DOM和diff算法
什么是虚拟DOM用JS对象数据结构表示 DOM 树的结构,然后用这棵树构建一个真正的树。当状态变更的时候,重新构造一棵新的对象树,然后用新的树和旧的树进行比较,记录两棵树差异。把 2 所记录的差异应用到步骤 1 所构建的真正的 DOM 树上,视图就更新了。如何比较两棵虚拟DOM树的差异就是diff算法的作用。diff算法有几个规则:key是节点的唯一标识,只有通过key,才能告诉diff算法,在更改前后它们是同一个DOM节点只有是同一个虚拟节点,才会进行精细化比较。否则就是暴力删除旧的、插入
2021-07-28 16:12:51
401
原创 You are using the runtime-only build of Vue where the template compiler is not available. Either pre
在升级脚手架到vue-cli3.0版本的时候出现了这个报错:[Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build.我在这里大概说一下出现这个报错的原因在哪里和解决办法..
2021-07-28 16:05:33
623
原创 指针数组与数组指针
1、指针数组:是指一个数组里面装着指针,也即指针数组是一个数组定义形式:int *a[10];2、数组指针:是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已;定义形式:int (*p)[10]; 其中,由于[]的优先级高于*,所以必须添加(*p)区分方法:主要看后面的两个字是什么(前面是修饰作用),因此指针数组是数组,而数组指针是指针。...
2021-03-07 15:47:50
2369
原创 JavaScript高级程序设计 第13章 事件
13.1事件流13.1.1冒泡事件(现在浏览器都是默认为冒泡事件)事件由文档中嵌层次最深的那个节点接收,然后逐级向上传播,一直到 document/window 节点13.1.2事件捕获事件由最外层节点(document/window)接收一直往内传播,直到最具体的节点13.1.2DOM事件流“DOM2级事件”规定的事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段13.2 事件处理程序事件就是用户或浏览器自身执行的某种动作...
2021-01-23 14:10:47
245
原创 JavaScript高级程序设计 第12章 DOM2 和 DOM3
12.2样式12.2.1访问元素样式通过JavaScript访问style中的样式要使用驼峰命名法其中,不能直接转换的样式是float,“DOM2级样式”规定的属性名是cssFloat,而IE是styleFloat“DOM2级样式”为style对象定义了一些属性和方法 cssText:返回style特性的 CSS 代码 length:应用给元素的CSS属性的数量 parentRule:表示 CSS信息的 CSSRule 对象、 ...
2021-01-23 14:04:19
198
原创 JavaScript高级程序设计 第11章 DOM扩展
11.1选择符API querySelector querySelectorAll matchesSelector 11.2元素遍历IE9 以及以前不会返回文本节点,而其他浏览器都会返回文本节点。ElementTrversalAPI为DOM元素添加了以下 5个属性 childElementCount firstElementChild previousElementSibling nextElement...
2021-01-23 14:02:14
179
原创 JavaScript高级程序设计 第10章 DOM
10.1节点层次 对象10.1.1Node类型除了IE之外,其他浏览器都能访问到Node类型,里面声明了所有节点的类型常用的: NODE.ELEMENT_NODE(1):元素节点 NODE.ATTRIBUTE_NODE(2):属性节点 NODE.TEXT_NODE(3):文本节点 NODE.COMMENT_NODE(8):注释节点 NODE.DOCUMENT_NODE(9):文档节点 1、nodeName和nodeVal...
2021-01-23 13:59:01
184
原创 JavaScript高级程序设计 第8章 BOM 对象
8.1window对象8.1.1全局作用域 window对象同时扮演着ECMAScript中的Global对象的角色 在全局作用域定义的变量和函数,它们会被自动归在window对象名下 全局变量和window对象上直接定义的变量的差别是: 全局变量不能通过delete删除,因为它的configurable为false window对象上直接定义的变量可以通过delete删除 访问声明的变量会报...
2021-01-23 13:57:49
138
原创 JavaScript高级程序设计 第6章 面向对象的程序设计
6.1理解对象6.1.1属性类型ECMAScript分为数据类型和访问器类型(可通过Object.defineProperty修改)1.数据属性 configurable:是否可以用delete删除属性,能否修改该属性的特性或访问器属性 enumerable:是否能通过for-in循环返回该属性 writable:是否可写 value:这个属性的数据值 2.访问器属性 configurable ...
2021-01-23 13:53:44
160
原创 JavaScript高级程序设计 第7章 函数表达式
定义函数有两种方法: 函数声明式:functionfun(){} 预加载的时候会把整个函数提升 函数表达式:let fun = function(){} 预加载的时候只会提升变量名 7.1递归arguments.callee:是一个指向正在执行的函数指针,可以使用它避免函数指针赋值后使用递归出现问题7.2闭包闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见形式是,在一个函数内部创建另一个函数,子函数访问父函...
2021-01-23 13:48:35
187
原创 JavaScript高级程序设计 第5章 引用类型
5.3Date类型 new Date() 接收一个毫秒值,转换成日期对象。 如果不传入自动使用当前时间。 如果传入日期的字符串,会在后台调用Date.parse()。 也可传入 UTC 类型的,内部也会模仿 UTC。如 new Date(2020,6,29,20,48,0) Date.parse() 把日期的字符串转化成相应的毫秒 Date.UTC() 也返回日期的毫秒数,但是构建的值不同 ...
2021-01-23 11:28:35
141
原创 C++:输入一个十进制数表示的正整数,将其转换为二进制表示并输出结果
#include <iostream>using std::cout;using std::cin;using std::endl;void fun(int num) { if (num > 1) { fun(num/2); cout << num % 2; } else { cout << num; }}void binary(int num) { int i = 0, temp = num; int arr[32]; w.
2020-12-19 20:19:04
6610
1
原创 JavaScript数据结构之哈希表
哈希表一、认识哈希表1.1 哈希表介绍哈希表是基于数组进行实现的,相对于数组,它有很多的优势:它可以提供非常快速的增删改查操作无论多少数据,增删改查的效率都接近O(1),速度比树的查找还要快,并且相对于树的编码要简单许多哈希表的劣势:因为哈希表是无序的,所以不能以一种固定的方式(比如说从小到大)来遍历其中的元素哈希表的 key值 是不能重复的哈希表的实现方式其实就是通过哈希函数把唯一关键字转换成一个大数字(通过幂的连乘),为了避免数组越界,要通过哈希化把大数字压缩到数组下标范
2020-08-31 17:17:10
303
原创 Vue 双向数据绑定原理及实现
class Vue { constructor(option) { // 1. 保存数据 this.$options = option this.$data = option.data this.$el = option.el // 2. 将 data 中数据保存到响应式系统中 new Observer(this.$data) // 3. 代理 this.$data 的数据 Object.keys(this.$data).forEac.
2020-07-27 09:22:52
217
原创 canvas 制作兼容 PC 和手机端签名插件
1、首先我们来了解一下 canvas 的基本使用在 canvas 标签中间写的内容会在浏览器不兼容的情况下显示<canvas class="canvas" ref="canvas"> 抱歉,您的浏览器不支持canvas元素</canvas>我们先来熟悉一下本次任务中 canvas 使用的API(其他 API 可参考https://blog.youkuaiyun.com/Insist_bin/article/details/80282043)const canvas.
2020-07-21 23:47:43
852
1
原创 vue-print-nb 解决 vue 打印问题,并且隐藏页眉页脚
1、通过 npm 安装 vue-print-nbnpm install vue-print-nb --save2、挂载到 Vue 上import Print from 'vue-print-nb'Vue.use(Print)3、配置打印对象<div id="main">这里是要打印的东西</div><!-- 打印按钮,通过 v-print 调用打印事件 --><button v-print="printObj">打印<
2020-07-20 23:43:31
16535
8
原创 HTML5 sessionStorage 会话存储
HTML5 sessionStorage 会话存储1. 介绍1.1 说明sessionStorage 是 HTML5新增的一个会话存储对象,用于保存 同一窗口(或标签页) 的数据,在关闭窗口或标签页之后将会删除这些数据。1.2 特点同源策略限制。若想在不同页面对同一个 sessionStorage 进行操作,这些页面必须同一个协议、同一个主机名和同一个端口下。(IE8 和 9存储数据仅...
2019-03-27 19:36:48
302
原创 JavaScript 运行机制 Event Loop(事件循环)详解
1. JavaScript 为什么是单线程的?JavaScript 单线程主要和它的用途有关,它的主要作用是与用户交互以及处理 DOM,试着想一下如果 JavaScript 是多线程的,一个线程要给一个 DOM 添加元素,另一个线程要删了这个 DOM,(浏览器一脸懵逼)。所以为为了避免出现这种情况,JavaScript 只能是单线程,也是这门语言的核心。虽然说后来的 HTML5 提出了 Web...
2019-03-08 15:37:01
339
原创 小程序把接口 Promise 化
小程序把接口 Promise 化在使用小程序接口的时候我们发现小程序的接口都是使用 success 和 fail 进行请求成功和失败处理的。习惯了用 Promise 处理方式后发现这样写代码有点不美观(容易形成回调地狱),并且行数也会增多。接下来就来讲讲如何把小程序接口 Promise 化。1、首先,我们要明确我们要解决的目的:把小程序接口 Promise 化。2、 然后我们想象一下我们要实...
2019-03-03 22:29:53
530
原创 小程序登录逻辑
小程序登录逻辑登录流程时序用户程序小程序第三方服务器微信接口服务1. wx.login临时登录凭证 code2. wx.getUserInfoencryptedData + iv3. code + encryptedData + iv4. appid + appsecret + codesession_key + openid 等sessioin_key是微信服务器生成的针对用户信息进行加密签...
2019-01-23 17:35:55
777
1
原创 总结微信小程序开发传值的几种方式
总结微信小程序开发传值的几种方式暂且知道4种传值方式(有知道的朋友留言告知一下哈)1、标签传值2、页面传值2.1 navigator 标签传值2.2 调用微信 API wx.navigateTo(Object)3、from 传值暂且知道4种传值方式(有知道的朋友留言告知一下哈)标签传值页面传值form 表单传值1、标签传值首先通过在标签给标签添加 data-属性名 属性并赋值,然...
2019-01-22 21:28:51
1990
1
原创 canvas中如何判断点是否在路径上
判断点是否在路径上ctx.isPointInPath( 要判断点的x坐标,要判断点的y坐标 )<canvas id="cvs"></canvas><script> /* * ctx.isPointInPath( 要判断的点x轴坐标,要判断的点y轴坐标 ) * */ var cvs = document.querySelector...
2018-05-11 15:49:42
2819
原创 canvas中状态保存与回滚,和平移/旋转/缩放的应用
1.1、状态保存:ctx.save();把当前状态(绘制环境的所有属性)复制一份保存起来,多次调用可以保存多份状态1.2、状态回滚:restore();把最近保存的一次状态作为当前状态回滚一次会把上次保存的属性删掉再回滚会拿到上次保存的属性可多次回滚,一次往回找save保存的属性2.1、translate(x轴平移量,y轴平移量)平移坐标轴:已绘制的图形不会收到影响,只会影响平移之后绘制的,平移会...
2018-05-11 15:46:58
1739
原创 canvas绘制图片
ctx.drawImage()绘制图片:有三种方式- 3参数:图像资源、绘制的起始x坐标、绘制的起始y坐标- 5参数:图像资源、绘制的起始x坐标、绘制的起始y坐标、绘制的宽、绘制的高- 9参数:图像资源、裁剪的x坐标、裁剪的y坐标、裁剪的宽度、裁剪的高度、绘制的起始x坐标、绘制的起始y坐标、绘制的宽、绘制的高...
2018-05-11 15:33:46
367
原创 canvas绘制形状
1.1 绘制形状1.1.1 绘制矩形绘制矩形路径ctx.rect(startX, startY, width, height);绘制矩形框(描边矩形)ctx.strokeRect(startX, startY, width, height);绘制填充矩形ctx.fillRect(startX, startY, width, height);清除矩形区域ctx.clearRect(startX, s...
2018-05-11 15:30:55
373
原创 canvas绘制字体
1、绘制描边文字 ctx.strokeText( 文字,参考x坐标,参考y坐标,[,限制文字最大长度] ) 限制最大长度:如果字体长度大于最大长度会被压缩2、设置字体样式 ctx.font = ' style | variant | weight | size/line-height | family'; 注意:单独设置字体大小不生效,必须加一个字体样式3、绘制填充文字 ...
2018-05-11 15:29:14
4881
原创 Canvas基础语法
1.1 什么是Canvascanvas是HTML5提供的一个用于展示绘图效果的标签,canvas原意画布,帆布,在HTML5页面中用于展示绘图效果,最早canvas是苹果提出来的一个方案,今天已经在大多数浏览器实现了1.1.1 canvas的基本用法基本语法<canvas></canvas>使用canvas标签,即可在页面中开辟一格区域,可以设置其width和height设...
2018-05-11 15:26:20
692
原创 HTML5labels属性
用法:obj.labels代表该元素所绑定的标签元素所构成的集合 function checkVal(){ var txtName=document.getElementById("txt_name"); var form=document.getElementById("testform"); var btn=documen
2017-12-19 14:28:40
1353
空空如也
vue-cli 打包文件报错
2018-12-25
在终端执行webpack调用webpack.config.js 时,报错
2018-10-09
HTML中<a>标记target用法
2017-11-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人