
JavaScript
文章平均质量分 57
wangshang1320
曾梦想仗剑走天涯,看一看世界的繁华,后来bug太多,项目经理不让走
展开
-
关于回调函数闭包陷阱,导致上下文内容变量值不一致的情况(react-hook)
匿名回调函数 闭包上下文。值 的问题原创 2022-10-21 11:40:58 · 460 阅读 · 0 评论 -
umi-request 上传二进制binary文件流 formData格式问题
formData.格式数据流 上传文件原创 2022-10-21 10:41:33 · 2020 阅读 · 0 评论 -
echarts+DateV.GeoAtlas 绘制地图
echarts+DateV.GeoAtlas 的 json格式 渲染绘制 地图原创 2022-09-29 15:40:47 · 3399 阅读 · 0 评论 -
history路由和hash路由
前端路由转载 2022-06-16 15:39:29 · 3967 阅读 · 0 评论 -
关于在微信浏览器里面拉起微信app原生支付的问题(前端)
例子:比如我在微信浏览器里面访问https://www.xxx123.com 网站的 https://www.xxx123.com/pay 页面,此时我需要在里面拉起微信原生支付方便直接使用微信支付配置:1.微信公众号授权目录配置成 访问域名:https://www.xxx123.com2.jsApi授权配置地址:https://www.xxx123.com。以及https://www.xxx123.com/pay3.微信首次绑定支付需要有个认证的文件 ‘xxx.mp’ 文件 放在...原创 2021-11-11 14:24:06 · 3277 阅读 · 0 评论 -
请求二进制文件流如何获取后端设置的 文件名称
1.首先后端需要放开header访问限制(如下配置):response.setHeader("Access-Control-Expose-Headers", "Content-Disposition")response.setHeader("Content-Disposition", ...)具体参考这篇文章:JavaScript 无法获取响应 header 的 Content-Disposition 字段_明天也要努力的博客-优快云博客2.前端请求加参数getResponse:tru.原创 2021-09-13 16:08:44 · 2999 阅读 · 0 评论 -
前端重构和优化的思考
前端工程化 如何进行高效的多人协作? 如何保证项目的可维护性? 如何提高项目的开发质量? 如何降低项目生产的风险? * 为了提高效率和降低成本,即提高开发过程中的开发效率,减少不必要的重复工作时间*模块化、组件化、规范化、自动化为什么要重构 原来的项目漏洞(bug)太多,或者稳定性太差,当前的框架很难彻底根治。 新的项目需求,原有的程序框架已经无法满足。 测试如果原来的代码没有单元测试、集成测试,有条件的话一定要补充上。为什么测试如此重原创 2021-06-01 15:02:07 · 698 阅读 · 2 评论 -
“husky run“ not found
关于git提交的时候提示错误, 检查了一下git 代码eslint 也是对的node 包删了重新安装也不行最后发现需要删除git的隐藏文件 ,执行下面命令rm -rf .git/hooksnpm install原创 2021-04-09 16:48:11 · 3033 阅读 · 0 评论 -
跨域简单理解
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域跨域解决方案1.postmessage页面和其打开的新窗口的数据传递 多窗口之间消息传递 页面与嵌套的iframe消息传递 上面三个场景的跨域数据传递文档:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage2.jsonpJSONP 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好(兼容低版本..转载 2021-03-19 13:55:20 · 145 阅读 · 0 评论 -
react hooks usestate 异步同步问题
const [musicData, setMusicData] = useState({ songs:[], isLoading:false});if(a===1){ setMusicData({songs:[],isLoading:true});}setMusicData({songs:[],isLoading:false});这个时候最后得到的isLoading值可能是false 也有可能是true 这个判断会让本来同步的队列变的不同步,...原创 2021-03-05 11:17:30 · 6661 阅读 · 0 评论 -
根据身份证号码获取出生日期
const getBirthdayByIdNO=(IdNO:string)=>{ let birthday = ""; if (IdNO.length===18) { birthday = IdNO.substr(6,8); return birthday.replace(/(.{4})(.{2})/,"$1-$2-"); }; if(IdNO.length===15){ birthday = "19"+IdNO.substr(6,6); retur.原创 2020-12-16 10:12:45 · 672 阅读 · 0 评论 -
正则校验各种基础表单验证规则
1.校验是否有特殊字符new RegExp("[`~!@#$^&*()=|{}':;%_'+\-,\\[\\].<>《》/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]").test(value);2.细节校验// 是否为全部为中文字符isCNValue(value: string): boolean { return new RegExp('^[\u4E00-\u9FA5]+$').test(value);}// 是否全部为英文字符isE原创 2020-11-04 16:46:50 · 662 阅读 · 1 评论 -
taro 环境问题 错误引导
taro原创 2020-10-19 14:32:06 · 729 阅读 · 0 评论 -
react map循环多出来了逗号!!!!
关于map循环多处了逗号的问题利用map插入到DOM时map最终返回的数组因为拼接+=调用了toString方法. 数组结构[1, 2, 3]里面居然是这个逗号,转换的时候把它带上了!就会变成 1,2,3 这样循环输出成为dom我们知道了原因之后就非常方便解决了。我们可以巧妙地利用join方法:join()可以切开一个数组,指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。...原创 2020-07-31 15:12:03 · 947 阅读 · 0 评论 -
js无法读取httponly属性的cookie
httponly属性的cookie只能在服务器进行操作,前端js是没法获取和修改的原创 2020-07-14 16:55:47 · 3197 阅读 · 3 评论 -
Promise all 特性(只要失败一个就不会走then)的解决方案
Promise all 打包几个接口一起请求。但是其中如果有一个接口失败了那么就不会继续走下去了 会影响到其他接口操作,关联性太强了,需求: 前面打包的的几个接口操作无论失败或者成功几个都需要走后面的接口,就会有点麻烦了,解决:const p1 = new Promise(resolve => { const a =b; resolve(a);}).catch(()=>{ return Promise.resolve('aaab')});...原创 2020-06-08 16:42:07 · 10044 阅读 · 0 评论 -
react-js 创建pdf 下载并打印
1.下载npm install jspdf --savenpm install html2canvas --save2.使用index.jsimport JsPDF from 'jspdf';import React, {createRef} from 'react';import JsPDF from 'jspdf';import html2Canvas from 'html2canvas';import dayjs from 'dayjs';import {Butt原创 2020-05-12 16:29:18 · 2701 阅读 · 0 评论 -
正则表达式匹配并且 密码匹配,密码8位以上并且由数字,字母和符号三种组成
password(value: string): void | string { if (!value) return '请填写密码'; //?=.* 断言 const is: boolean = (/^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$])(.{8,20})$/).test(value); return is ? undefined : '密...原创 2020-05-06 15:43:59 · 3370 阅读 · 0 评论 -
js 下载文件、音频、视频
最近做一个音乐下载的,用a标签下载会跳转到音频的url那边(无法直接在当前页面下载),找了好久,终于找到了这篇文章:https://www.jianshu.com/p/c31c199e1d5e 使用fetch下载解决的 ,收藏一波,感谢老哥!下载文件可以直接通过a标签的href属性直接下载,也可以通过Blob对象转换为文件流进行下载。如果要对大数据量或者需要分片下载、上传等操作...转载 2020-01-19 10:36:18 · 7045 阅读 · 2 评论 -
js碰撞检测(原生)
将数据初始化成rect矩形类型 let rect = new Rect({ x:startX, y:startY },rectSize); let rect1 = new Rect({ x:startX, y:startY ...原创 2019-11-11 16:28:33 · 366 阅读 · 0 评论 -
export default 和 export 说明
export default:单个 主体 例子:let state = { popIsShow: false};const login = () => { return state};export default loginimport login from './login/reduce';export :多个 ...原创 2019-03-08 11:19:09 · 688 阅读 · 0 评论 -
JS中this指向问题
this在任何一门语言中都是常用的,this通常我们会说是指当前对象,那么问题来啦,谁是当前对象?简单粗暴点就是:谁调用那么this就是指向谁的!1.全局中的thisvar x = 1;console.log(this.x);这里的this指的是window对象,2.函数中的this函数里的this我们可能会错误理解成当前这个函数对象(以前我也是这样理解的),后来经过实践测...原创 2019-03-04 13:32:53 · 130 阅读 · 0 评论 -
获取url中的参数
var url ="http://www.travelSky.com/item.htm?a=1&b=2&c=&d=xxx&e";通过字符串截取来获取参数function getKeyValue(url) { //所有 包括空的 和undefined var paramObj = {}; var index = url.lastIndex...原创 2019-01-04 11:03:12 · 1705 阅读 · 0 评论 -
js时间戳转换成指定格式的字符串
function formatDate(time, formatStr) { let date = new Date(time); let Y = date.getFullYear(); let M = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);...原创 2019-01-08 16:43:09 · 1996 阅读 · 0 评论 -
js运算符优先级和~~运算符
下表按从最高到最低的优先级列出JavaScript运算符。具有相同优先级的运算符按从左至右的顺序求值。运算符 描述 . [] () 字段访问、数组下标、函数调用以及表达式分组 ++ -- - ~ ! delete new typeof void 一元运算符、返回数据类型、对象创建、未定义值 * / % 乘法、除法、取模 + - + 加法、减法...转载 2019-01-21 11:24:33 · 1382 阅读 · 0 评论 -
JavaScript性能优化
最初的 JavaScript 是一种解释型的语言,所以在执行速度上比编译型语言慢得多。后面有了 Chrome,它内置了优化引擎,把 JavaScript 编译为本地代码再执行,很多浏览器纷纷效仿,所以现在的 JavaScript 已经是编译型的语言咯O(∩_∩)O~1 注意作用域1.1 for 循环中的全局变量使用全局变量或函数的查找开销比局部变量或函数大得多,因为这会涉及到作用域链上的查...转载 2019-02-11 15:23:50 · 253 阅读 · 0 评论 -
JavaScript引用传递问题(深拷贝,浅拷贝)
基本数据类型都是值传递 不会存在引用问题,数组和对象会存在问题(例:某个地方某个对象的属性改变后,之前使用这个对象的地方的这个值会改变),有时候就会莫名其妙的不知道怎么值变啦(针对没遇到过这种问题的,遇到过的后面写就尽量避免,怎么避免?那就用深拷贝咯),这里就需要用深拷贝啦,可以理解成新开一个地址来存储这个对象。jQuery: jQuery.extend() 函数用于将一个或多个对象的...原创 2019-02-12 10:41:28 · 584 阅读 · 0 评论 -
js中几种循环方式和性能分析
1.普通for循环for (let i = 0; i < arr.length; i++) { let obj = arr[i]; }优化:for (let i = 0,len = arr.length-1; i < len; i++) { let obj = arr[i];}2.foreach 数组方法arr.forEach(f...原创 2019-02-20 10:06:21 · 1472 阅读 · 0 评论 -
特殊字符存数据库问题
插入含有特殊字符的文本到数据库会出错,刚开始我是打算直接替换掉,后来发现替换的是拆东墙补西墙,有很大的问题,然后我了解到 可以使用编码来转换 之后存,读取展示的时候再反编码一下。encodeURI:将特殊字符转码,存数据库之前操作一下desc = encodeURI(desc);content = encodeURI (content);decodeURI:将特殊字符反编码,...原创 2019-04-10 15:09:58 · 1779 阅读 · 0 评论 -
十大经典排序算法(动图演示)
十大经典排序算法(动图演示)0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相...转载 2019-04-03 10:05:07 · 126 阅读 · 0 评论 -
js中的with 语句
with (m = Math) {//Math里面的是他的属性 C = cos, S = sin, P = pow, R = random;}这样Math.cos() 就可以直接写成 C()啦,其他的同理原创 2019-07-22 15:27:04 · 415 阅读 · 0 评论 -
jquery自定义事件 并触发使用
1.给document 绑定自定义事件//注册自定义jquery刷新事件$(document).on('customEvent', function (event, params) { doSomeThing(params);});2.触发事件$(document).trigger('customEvent', params);//触发自定义trigger事件...原创 2019-06-26 09:25:52 · 1330 阅读 · 0 评论 -
Hexo图片部署和展示问题
1.安装插件npm install hexo-asset-image --save2.配置在 _config.yml 配置文件中修改 post_asset_folder 属性为 true3.在文章中插入图片4.生成并调试 hexo g hexo s --debug...原创 2019-05-29 16:40:29 · 626 阅读 · 0 评论 -
canvas 文字灯光环绕粒子闪烁效果 简单实例
利用canvas 的putImageData和getImageData 写了个文字环绕跑马灯效果效果:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style>...原创 2019-06-01 17:08:12 · 1424 阅读 · 0 评论 -
async 和await 理解
async和await 是es7的特性,是从promise 里面延伸出来的新语法糖 他会将异步操作修改成同步操作,并且代码看起来更优雅直接看例子:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</t...原创 2019-05-27 14:38:32 · 376 阅读 · 0 评论 -
Vue双向绑定原理理解
现在的三大框架都是由双向绑定的,所谓双向绑定就是:数据变更,界面视图变更,视图变更,数据变更的实时更新Vue的话 是用的 Object.defineProperty()方法来实现属性的监听的。直接看例子吧:html:<!DOCTYPE html><html lang="en"><head> <meta charset="UT...原创 2019-04-30 09:22:11 · 477 阅读 · 0 评论 -
websocket双工通信
后端:node socketServer.jslet server = require('ws').Server;let ws = new server({ port: 8003},function (e) { if(!e){ console.log('ws服务器开启,监听8003端口'); }else{ console.log...原创 2019-05-08 14:14:47 · 306 阅读 · 0 评论 -
正则表达式基础文档
表达式全集字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“\n”匹配一个换行符。串行“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置...转载 2019-04-18 15:01:52 · 107 阅读 · 0 评论 -
es6,es7中的同步异步的使用
同步,异步?js是同步阻塞单线程运行的,so?需要等待,然后就出现了很多异步的操作需要同步等待执行,比如请求数据是异步的(这个是都会遇到的),这个时候就需要我们异步转同步。Promise将异步的操作转换成同步,解决了回调地狱的问题,看起来更优雅三种状态:reject: 拒绝,后面的将不会执行resove: 成功,会执行后面的,可以传参 参数会传入下一个链式调用的方法里面...原创 2019-03-01 15:16:52 · 2314 阅读 · 0 评论