自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 模拟实现一个 localStorage

使用indexedDB 模拟实现一个基础的 localStorage 进入正文之前我们先来了解一下,indexedDB的几个基础操作。 IDBOpenDBRequest:IndexedDB API的接口使用特定的事件处理程序属性,提供对打开或删除数据库(使用IDBFactory.open和执行IDBFactory.deleteDatabase)的请求结果的访问。 我们可以通过indexedDB...

2020-01-26 22:55:39 1082

原创 腾讯云对象存储COS的使用教程,node获取签名,js上传

腾讯云对象存储的使用 这里忽略创建存储桶之类的操作。 说明:本示例使用nuxt服务端渲染 + koa框架 万事第一步:npm install ~~~ npm i qcloud-cos-sts --save node sdk 注意:qcloud-cos-sts 只能在服务端中使用。 第二步:设置授权策略 // 示例 创建一个oss文件夹在controllers下面,项目结构自行更改。 // ../c...

2019-10-31 09:31:00 4668 2

原创 vh、vw、rem究极适配方案

实现不同倍率设计图同时用px开发,使用vw vh 与 rem 共存方式解决问题。 在开发中经常会用到ui框架,本例使用vant ui框架。 一般我们在移动端项目开发中都会使用px然后通过postcss 转换成 rem或vw vh 进行适配 ,但是遇到ui框架与设计图像素倍率不同的时候,都会选择修改设计图像素倍率进行兼容ui框架。 或者也有人使用postcss的 selectorBlackList:...

2019-08-01 14:56:52 2646

原创 docker部署前端项目,区分开发环境,生产环境 ~ 本文基本适用于所有前端工程化项目

通过docker部署前端项目,包括node服务~ 稍微修改,也可以适用于所有前端框架。 简版demo请看上一篇文章。 https://blog.youkuaiyun.com/qq_40146880/article/details/112474594 本文使用next.js框架来做一个说明,其实和用什么框架并没有任何关系,基本通用 默认大家都装好了docker 和 docker-compose 先上一个package.json配置 "scripts": { "dev": "next -p 8081", /

2021-01-12 20:24:07 2808

原创 docker部署项目(vue/react/node/web......)

docker 项目部署 我默认你已经安装了 docker 儿~ 先说一下,下面执行可能会遇到的问题。 Permission denied 运行shell报错:Permission denied 意思就是没有权限。 使用命令:chmod 777 ***name***.sh ,修改该文件***name***.sh 的权限,然后再执行上面第二步的操作即可。 bash: vi: command not found 这是因为vim没有安装。 使用如下命令安装: apt-get update apt-get

2021-01-11 17:05:51 780

原创 隔位连接,输入 '1, 2, 3, 5, 7, 8, 10' 输出 '1~3, 5, 7~8, 10'

输入 '1, 2, 3, 5, 7, 8, 10' 输出 '1~3, 5, 7~8, 10' const str = '1, 2, 3, 5, 7, 8, 10'; // 格式化数据 const trimStr = [...new Set(str.split(',').map(x => x.trim()))].join(','); let result = []; const change ...

2020-01-28 18:06:35 560

原创 实现一个简单的全局存储器

有的时候项目比较小的时候,我们不想使用vuex也不想使用Storage,那么我们就来自己造一个存储器。 const name = Symbol('storeMock'); const storeMock = Object({ [name]: {}, getItem(key) { return storeMock[name][key]; }, setItem(key, va...

2020-01-26 23:41:07 347

原创 反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序

// 反转链表,每 k 个节点反转一次,不足 k 就保持原有顺序 // 构建链表 function list(...val) { let obj = val.reverse().map((res, i) => Object.assign({}, { [i]: new Node(res) })); for (let item in obj) { if (item...

2019-09-20 18:34:10 445

原创 模拟实现一个深拷贝,并考虑对象相互引用以及 Symbol 拷贝的情况

对于 symbol 通过查看文档可以知晓:当使用 JSON.strIngify() 时以 symbol 值作为键的属性会被完全忽略,Symbols 在 for...in 迭代中不可枚举。另外,Object.getOwnPropertyNames() 不会返回 symbol 对象的属性,但是你能使用 Object.getOwnPropertySymbols() 得到它们。 因此,要实现一个深拷贝,并...

2019-09-20 11:58:08 950

原创 js希尔排序注解

/** * 生成随机数组 * @param */ function randoms(num, max, min) { return Array.from({ length: num }).map(() => Math.ceil(Math.random() * (max - min) + min)); } let num1 = randoms(3...

2019-09-18 18:01:21 163

原创 普通遍历递归深拷贝,Array.from()深拷贝,split("")截取,Array.from()数组转化的性能对比。

new Array(10000000)量级下,普通遍历递归深拷贝,Array.from()深拷贝,split("")截取,Array.from()数组转化的性能对比。 let String = new Array(10000000).fill(0).join(''); console.time('Array.from'); Array.from(String); console.timeEnd(...

2019-09-11 16:17:36 916

原创 pwa + history 模式 基础vue-cli3项目配置

1.history模式配置(设置mode:为history, base:基路径’nginx上配置的目录’)。 2.开启pwa配置,同时附上vue-cli3脚手架build及dev配置。(vue.config,js) 3.registerServiceWorker.js里面,配置内容更新时刷新页面。 5.附上本地调试nginx配置。 6.http axios拦截器。 7.postcss 使用vw v...

2019-08-26 15:27:17 696

原创 节点增删实现无缝轮播

撸一波,节点增删实现无缝轮播。 同步 github 地址 无缝轮播 代码说话吧

2019-08-22 16:19:27 297

原创 es6中的箭头函数是否可以使用new实例化?与普通函数有什么区别?new的实质是什么?如何手动写一个new?

箭头函数、没有prototype、没有自己的this指向、不可以使用arguments、自然不可以new。 let fun = (a, s) => {}; console.dir(fun); // --- > 从

2019-08-21 10:51:20 7440

原创 简述 Vue的双向数据绑定( MVVM 实现了什么,以及其diff算法所运行的位置 )。

MVVM 实现了什么。 View(dom)

2019-08-16 10:32:30 531

原创 js 深拷贝浅拷贝,以及堆栈存关系。

先引用一篇文章JavaScript中的堆栈,作者写得很好。 如果看完上面推荐的文章还没有理解堆栈存与深拷贝与浅拷贝的关系,请看

2019-08-06 15:42:11 444

原创 对象的广度优先遍历和深度优先遍历,以及递归实现深拷贝。

废话不多说直接上代码,新建一个对象。 let obj = { a: { A: { end: true }, B: 2, C: 3, }, b: 2, c: { c2: { cend: 3 } }, d: 4 }; 广度优先遍历 深度优先遍历,先将obj转化成可迭代对象,在里面执行递归函数,将深层对象作为递归函数的参数传入。 * 对象的深拷贝也可...

2019-08-02 17:20:16 866

无缝轮播.zip

(尝试节点交换方式实现轮播图)操作节点增删来更新轮播位置

2019-08-22

空空如也

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

TA关注的人

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