自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 html转pdf分页问题终极解决方案 k-htmlpdf

jspdf分页有个比较不好的地方就内容过长的时候虽然会虽然能做到分页,但是会把内容给截断,解决思路是给每个可能会被截断元素加上类,然后动态的计算该元素的位置是否在下一页和上一页之间,如果在的话就添加一个空白元素把这个元素给挤下去,这样就能实现了......

2022-06-23 09:25:11 2551 4

原创 使用ES6 的Proxy实现数组负索引

let arr = [1,2,3,45,6,7]const arrProxy = new Proxy(arr,{ get(target,proerpty){ if(proerpty>=0){ return Reflect.get(target,proerpty) } return Reflect.get(target,target.length+Number(proerpty)) }})console..

2021-08-17 17:54:36 188

原创 javascript统计字符串出现的不重复字符最长长度

function total(str) { let len = str.length if (len < 1) return 1 let total = 0 let k = 0 // 每次需要计算量 for (let i = 1; i < len; i++) { let j = i - 1 let count = 0 while (j >= k && str

2021-08-17 17:53:17 159

原创 js的单例模式

传统单例模式  保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现单例核心思想  无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象,接下来我们用JavaScript来强行实现这个思路,请看代码: class Db { //ES6类的静态方法(只能直接由类名调用的方法):static getInstance //ES6类的静态属性:直接挂载在类名上的方法,如:Db.instance() static

2021-08-17 17:50:59 636

原创 javascript的闭包和回调

1.闭包闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。直观的说就是形成一个不销毁的栈环境。js闭包典型的运用场景就是计算器困境: function add() { var counter = 0; return counter += 1; } console.log(add()) console.log(add()) console.log(add())如上面的代码本意是输出3,最终输出的确都是

2021-08-17 17:49:55 301

原创 promise原理

js Promise 实现原理(手写)一. 简单实现调用 then 方法,将想要在 Promise 异步操作成功时执行的 onFulfilled 放入callbacks队列,其实也就是注册回调函数,可以向观察者模式方向思考;创建 Promise 实例时传入的函数会被赋予一个函数类型的参数,即 resolve,它接收一个参数 value,代表异步操作返回的结果,当异步操作执行成功后,会调用resolve方法,这时候其实真正执行的操作是将 callbacks 队列中的回调一一执行;class Pro

2021-08-17 17:47:04 725

原创 vue3的响应式原理和虚拟DOM

为啥使用Proxy?而弃用definePropertydefineProperty不会对数组每个元素都监听,提升了性能.(arr[index] = newValue是不会触发试图更新的,这点不是因为defineProperty的局限性,而是出于性能考量的)defineProperty不能检测到数组长度的变化,准确的说是通过改变length而增加的长度不能监测到(arr.length = newLength也不会)。所以Vue2是不能检测对象属性的添加或删除的。相对于defineProperty,

2021-08-17 17:45:18 237

原创 vue-qr和html2canvas的简单使用

title: vue-qr和html2canvas的简单使用date: 2021-03-15 11:06:51tags: [‘element-ui’,‘js’]categories: [‘Vue’]安装导入插件npm install --save html2canvasnpm install --save vue-qr import vueQr from "vue-qr"; import html2canvas from "html2canvas";html 部分 .

2021-03-15 16:07:11 182

原创 使用js封装vue组件,可以发布到npm

使用js封装vue组件,可以发布到npmvar Child = { template: '<div>A custom component! {{msg + "----" + title + "-----" + content}}</div>', props: ['title', 'content'], data: function() { return { msg: '子组件本身的数据' } }, }ex

2020-11-23 11:49:11 111

原创 Element UI 级联选择器的动态加载用法

Element UI 级联选择器的动态加载用法html 部分 <el-cascader size="mini" clearable placeholder="请选择地址" @change="cascaderChange" v-model="searchForm.detailAddress" :props="cascaderProps" >&l

2020-11-03 09:36:46 1752 3

原创 在使用数组的时候,有时候会需要遍历替换子节点

在使用数组的时候,有时候会需要遍历替换子节点例如 arr = [{ a:1, b:2, subList:[{ a:1, b:2 subList:[ a:1, b:2 ] } ] }, { a:1, b:2, } ] 现在将arr数组中的所有subList 节点名替换成 children1. 使用map循环替换子节点

2020-10-30 17:17:19 141

原创 Node.js 删除文件夹以及文件夹下所有文件函数

Node.js 删除文件夹以及文件夹下所有文件函数这是我的第一篇博客,作为一个技术积累的起点吧node.js的fs模块在删除文件夹时,如果文件夹非空就会报错,因此自己封装了一个方法。废话少说直接上代码const fs = require('fs')// path:要删除的文件夹路径onst removeFileDir = (path)=>{ var files = fs.readdirSync(path); for (let item of files) {

2020-10-30 16:44:21 1139

空空如也

空空如也

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

TA关注的人

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