自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 收藏
  • 关注

原创 js 面试题(3)

​一。柯里化柯里化(curry)的的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。具有通用性和高适用。常见作用:1、参数复用。2、提前返回。3、延迟计算/运行二。任务:同步任务和异步任务,异步任务分为宏任务和微任务​

2023-01-31 19:31:56 375

原创 vue 基础

一。vue 生命周期:总共10个。初始化只会执行(1 2 3 4)。beforeCreate:即初始化状态之前 created:初始化状态后(initState 执行完成)。 beforeMount:虚拟dom生成之前,在该周期内执行 render 函数,生成虚拟dom和挂载dom mounted:此时dom元素已加载完成,可以进行dom元素操作。(调用顺序先执行子元素的mount再执行父元素) beforeUpdate:更新之前 updateed:更新后 beforeDestroy:销毁前

2022-02-15 15:08:46 414

原创 opencv.js

opencv 图形入门。一。读取图片方法。在读取图片完成后请执行:let dst = new cv.Mat()。之后所有的操作数据都会在 dst 里面cv.matFromImageData(imgData):imgData: canvas 通过 getImageData 获取的数据。 cv.imread(imageSource) :imageSource可以是图片元素或canvas 元素或他们的id。二。显示图片。cv.imshow('canvasOutput', dst):canvasO.

2021-11-15 17:35:04 4440

原创 vue SEO

一。本人主要是在不改动SPA单页面的情况下,专门针对爬虫进行处理,从而完成SEO。使用工具:puppeteer、nginx。puppeteer:主要用于生成wa

2021-05-31 13:59:07 171

原创 微信小程序 webview 返回按钮阻止返回

一。需求:微信小程序在使用webview 时,导航栏是不允许自己修改的。对于左上角的返回按钮,如果相要在返回的时候,弹框确定后再返回,微信小程序是没有api支持。在微信小程序的思路上基本无解。二。解决办法:用于我们的webview 就是直接使用的微信浏览器。我们是可以使用js 相关的 History API. 主要是通过 设置 history.pushState 这个方法来阻止的。history.pushState API说明:总共是三个参数,前面两个不用管直接用null 即可,第三个代码跳转页面的

2021-05-14 16:18:39 7986 3

原创 Failed to connect to github.com port 443: Timed out

一。github 网络错误处理办法: 打开https://github.com.ipaddress.com/ 如下图 ​​​​​​​​​​​​​​ 打开https://fastly.net.ipaddress.com/github.global.ssl.fastly.net#ipinfo​​​​​​​ 如下图: 打开 https://github.com.ipaddress.com/assets-cdn.github.com 如下图: 将红框框住的 ip 复制下来。.

2021-04-20 12:01:27 1252

原创 字体加载

需求:就在字体加载完成时,将该字体的字绘制到canvas 中。假如该字体未加载完成前,使用canvas 绘制的就是默认字体的字。涉及到的项目:青柠设计:https://qingning6.com/一。如何判断一个字体是否加载完成。使用api :document.fonts./** * 验证字体是否加载完成 * fonts => [{fontSize, fontFamily}] * */function validFonts(fonts) { return new Prom

2021-04-02 17:24:08 892

原创 css 文字渲染

css 文字渲染实测结论:测试的内容都是使用span 标签(即是用内联元素进行测试的)具体显示效果可以参考:青柠设计:https://qingning6.com/参数说明:字体自带行高:fontLineHeight;css设置的行高:lineHeight;字大小:fontSize;行数: row;列数: col;文字宽高:width、height;字间距:letterSpacing;水平文字:单行文字,文字的高度:height = fontLineHeight 多行文字,文字高度:hei.

2021-04-01 11:18:07 338

原创 阿里云 跨域问题处理

主要针对:No 'Access-Control-Allow-Origin' header is present on the requested resource一。首先是判断是不是客户端缓存的原因。二。按照阿里云的官方文档进行处理。链接:https://help.aliyun.com/knowledge_detail/39518.html?spm=a2c4g.11186623.2.18.37242dffXszCIQ三。确定下是否设置个允许跨域。设置过请求会出现如下图的header如果出

2021-01-15 18:24:02 2894

原创 opencv 构成js版本

重点说明:不要使用window 进行编译,不然会出现各种奇葩的错误。(我花啦一周的时间尝试wind10 没有成功。)一。系统安装步骤说明:如果是window 系统,请直接安装VMware 虚拟机。然后在虚拟机里面安装Ubuntu 20 版本。 VMware 下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html Ubuntu下载地址:https://cn.ubuntu.com/dow

2021-01-07 15:01:26 999 8

原创 canvas multiply、screen

一。canvas multiply、screen计算过程multiply 计算:r/g/b/a 分别相乘除以255及是混合后的值。 function aM(left, right) { let newArr = [] for(let i = 0; i < left.length; i++) { newArr.push(left[i] * right[i] / 255) } console.

2020-12-14 17:22:22 145

原创 image 描边

function stroke(image, width, height) {const strokeCanvas = document.createElement('canvas') strokeCanvas.width = width strokeCanvas.height = height const strokeCtx = strokeCanvas.getContext('2d') strokeCtx.drawImage(image, 0, 0, .

2020-10-30 12:08:07 360

原创 h5 组合和解组

一。组合:就是指多个元素组合成一个元素,组合的元素称为父元素,被组合的元素则称为子元素。组合后:父元素进行拖动、旋转、缩放时,子元素也相对于父元素进行。拖动时:实际就是改变父元素的位置,子元素相对于父元素是不变的。所以子元素相对于最原始的坐标轴为: 父元素的位置 + 子元素的位置。 旋转: 父元素旋转是绕父元素的中心点进行旋转的,子元素也是绕父元素的中心点进行旋转。则子元素的相对位置计算方式是:通过获取子元素的中心点,然后利用绕点旋转公式计算出子元素中心点绕父元素中心点旋转后得出的新的子元素中心点。然

2020-08-20 20:44:02 377

原创 vuex 状态管理器

一。Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。这个状态自管理应用包含以下几个部分:state,驱动应用的数据源; view,以声明方式将state映射到视图; actions,响应在view上的用户输入导致的状态变化。使用时机:多个视图依赖于同一状态。 来自不同视图的行为需要变更同一状态。 当项目是中大型时,也需要时机。每一个 Vuex 应用的核心就是 store(仓库)。“store”基本上就是一个容器,它包含着你的应用中大部分的状态 (stat...

2020-07-29 13:17:04 227

原创 Vue-router

一。vue-route 简介:通过<router-view></router-view>进行组件渲染。通过<router-link to="a"></router-link> 进行跳转(组件局部刷新)。 api 导航:通过router实例,router.push() / router.replace / router.go() / router. 获取路由参数:t通过 route 属性进行获取 (this.$route.query / this.$ro

2020-07-29 11:54:22 196

原创 table 表头固定

一。table 表头固定说明。我们将表头和表内容分成两个表格就可以解决该问题。二。代码。css代码:里面定死的宽高只是为啦方便看效果,实际中需要使用js计算出来。* { box-sizing: border-box; } .table { border: 1px solid #efefef; ...

2019-09-27 14:06:34 1939

原创 typeScript

一。类型说明:JavaScript 的类型分为两种:原始数据类型和对象类型。原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol。二。TypeScript 内如何定义类型。通过(:)进行定义。类型值分别是(number, string, boolean, null, undefined, any(代表任何类型))。如果没有定义类型则默认设...

2019-08-02 10:57:38 175

原创 js 函数节流

一。函数防抖:基本思想是指,某些代码不可以在没有间断的情况连续重复执行。第一次调用函数, 创建一个定时器,在指定的时间间隔之后运行代码。当第二次调用该函数时,它会清除前一次的定时器 并设置另一个。如果前一个定时器已经执行过了,这个操作就没有任何意义。然而,如果前一个定时器 尚未执行,其实就是将其替换为一个新的定时器。目的是只有在执行函数的请求停止了一段时间之后才 执行。常用于onresize 事...

2019-07-23 15:45:37 244 1

原创 js 拖放

一。说明:通过draggable 属性设置元素是否可拖动。true 则可拖动,反之不行。二。拖放API(1)拖动元素时触发的API:dragstart():开始拖动的时候触发。 drag():拖动期间触发,dragstart 触发后就开始触发。 dragend():拖动停止时触发。(2)放置到目标元素时,触发的API:dragenter():元素被拖动到放置目标上,就触发。...

2019-07-18 14:37:05 132

原创 html5 canvas API

一。canvas 是一个html 标签。必须先设置其 width 和 height 属性,指定可以绘图的区域大小。width、height、css可以随便的修改。主要用于2D 绘图。画图操作必须先设置颜色,然后画线。所有以 fill 开头的API 都只能使用fillStyle 属性填充颜色,以stroke 开头的 API 都只能使用strokeStyle 属性进行描边。二。API说明:这...

2019-07-18 11:41:04 255

原创 js 面试题(2)

一。函数表达式相关知识:(1)闭包:是指有权访问另一个 函数作用域中的变量的函数。(2)this指针:this 对象是在运行时基于函数的执行环境绑定的;在全局函数中,this 等于 window,而当函数被作为某个对象的方法调用时,this 等于那个对象。不过,匿名函数的执行环境具有全局性,因此其 this 对象通常指向 window。其次具体的this指向取决于代码。二。BOM(...

2019-07-15 14:25:31 207

原创 js 引用类型、常用函数

Object 常用函数:(1)Object.assign()合并对象,返回Object。(2)Object.keys() 获取所有键返回Array。(3)Object.value() 获取所有值,返回ArrayArray 常用函数:(1)isArray: 检查是否是数组。(2)toString, join:都返回字符串,默认以逗号分开,join可以选择其他符合。(3)...

2019-07-09 16:42:01 281

原创 js 面试题(1)

一。script 标签: async:资源立即下载,异步加载外部资源,确保各资源之间不存在相互依赖的问题,load之前进行加载(h5存在) defer:表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效(h4存在)二。typeof /instanceof 的区别typeof:用于检测给定变量的数据类型。返回字符串类型的值undefined、string、...

2019-07-02 18:14:10 325

原创 axios 导出

一。导出代码。exportExecl () { let url = '/export' axios({ method: 'get', url: url, responseType: 'blob' }).then(response => { this.downl...

2019-04-12 17:04:12 453

原创 柯里化

一。柯里化(curry )的 的概念很简单:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。二。具有通用性和高适用。三。常见作用:1、参数复用。2、提前返回。3、 延迟计算/运行四。实例。 (1)参数复用:function add(a) { return function (b) { return function (c) { ret...

2019-02-13 18:08:44 989

原创 async 异步代码同步化处理

一。async就是 Generator 函数的语法糖。二。async使用说明。(1)函数前面加上async字段。例如: async function asyncFunction() {} // orlet asyncFunction = async function () {}(2)在需要同步的函数前面加上await字段使其同步。对于await同步的表达式需要返回Pr...

2019-01-25 10:33:29 1286

原创 jsPlumb 流程图处理(二)

流程图一链接:https://blog.csdn.net/github_38186390/article/details/86470650承接流程图处理(一)。本文主要说明流程图的保存和加载部分。一、流程图保存操作。1、dom节点的保存。通过jQuery $('#' + id).get(0).outerHTML获得该don节点参数。2、连接的线保存。jsPlumb.getConne...

2019-01-14 15:02:10 2814 10

原创 jsPlumb 流程图处理(一)

本文主要针对流程图通过端点手动连接和保存后通过数据进行加载。例图:jsPlumb.getInstance() 该api主要用于生成当前实例、在一个页面多个流程图是这个api需要。一.流程图拖动问题从某个地方拖动元素到流程图区域可以使用jQuery-UI的拖动和放置进行处理。流程图内的拖动直接使用jsPlumb.draggable(id)改api里面的id为元素id。二.流程图...

2019-01-14 14:18:55 5999

原创 子元素宽度超出父元素

1.主要是给父元素设置white-space: nowrap;强制元素不换行。如果需要使父元素不换行则需要设置display: inline-block;等2. 给子元素设置dispaly: flex / inline-flex / inline-block 使子元素里面的元素一行显示。 总结:.parent { white-space: nowrap;display: in...

2018-11-19 18:22:59 10583 2

原创 js 数组去重

js去重的多种方法:  1、通过删除原数组里面重复的数,进行去重。知识:数组反循环,indexOf。 function removeRepeat(data) { for(let i = data.length - 1; i &gt;= 0; i--){ if (data.indexOf(data[i]) !== i) { data.splice(i, 1) ...

2018-08-28 15:28:31 306

原创 js 深拷贝

一。js深拷贝方式:      1、递归实现。 function clone(data) { if (typeof data === 'object') { var newData = Array.isArray(data) ? [] : {}; for (var i in data) { newData[i] = ...

2018-08-27 14:13:29 301

原创 js 加减乘除精度问题

一。加法精度修改后如下:function add(...val) { let max = 0 let count = 0 for (let i = 0; i &lt; val.length; i++) { const strVal = val[i].toString() const index = strVal.i...

2018-08-14 14:50:05 3369 3

原创 排序算法

  产生随机数进行测试 function randomNum(num) { const data = [] for (let i = 0; i &lt; num; i++) { const val = Math.round(Math.random() * 100) data.push...

2018-08-08 16:48:38 149

原创 promise 讲解

function add(num) { return new Promise((resolve, reject) =&gt; { console.log(num + ' + ' + num + ' = ' + (num + num)) if (num &gt; 10) { setTimeout(resolve(num + n...

2018-08-08 14:20:22 173

原创 树形数据整合

function getTreeS() { const time = new Date().getTime() treeS(treeData) const timeEnd = new Date().getTime() console.log((timeEnd - time) + 'ms') console.log(tree(treeDa...

2018-08-03 17:23:27 522

原创 js 树形结构整合

 一。根据标识符去掉空菜单。// 根据菜单有‘/’页面没有‘/’的特点function deleteEmptyMenu(data) { const newData = [] for (let i = 0; i &lt; data.length; i++) { if (data[i].path.indexOf('/') === -1 || data[i].chi...

2018-08-03 15:12:42 1476

原创 ES6基础(2)函数扩展

1. 函数扩展 参考:http://es6.ruanyifeng.com/#docs/function(1)函数参数默认值。例如:function log(x, y = “world”){}, y就是有默认值。参数不要重名。重名会有其他隐患存在,避免使用。参数默认值不是传值的,而是每次都重新计算默认值表达式的值。也就是说,参数默认值是惰性求值的,最好不要使用表达式。 函数传对象参数。例如:func...

2018-05-15 10:54:53 161

原创 ES6基础(1)

1. let / const / global 使用  let 主要用于定义块级作用域,只在块内有效。‘{}’代表块。没有变量提升,必须先定义后使用。块内不允许重复定义。  const 主要用于声明只读常亮,忌用于数组和对象,因为对于对象和数组只是指向的地址不变,而里面的值是可以改变的。  global 指的是顶层对象。2. 变量的解构与赋值。  形式一:let a = 1;  形式二:let [...

2018-05-15 10:32:08 122

原创 this的使用

一。在全局环境里面永远值向window,普通函数的调用也指向window。var name = "张三";function fn(){ var name = "李四"; console.log(this); // window; console.log(this.name); // 张三}fn();二。作为对象调用时,则指向对象。没有调用则取向于最终调用的对象。v...

2018-03-12 08:39:30 134

原创 闭包

一。闭包的概念:就是能够读取其他函数内部变量的函数。二。闭包的用途:1.可读取函数内部的变量。2.使这些变量始终保持在内存中。三。实例function f1(){ var i = 0; function f2(){ i++; console.log(i); } return f2;}var result = f1();result(); // 1resu...

2018-03-11 17:09:44 183

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除