JavaScript
-Dayer-
只想搞钱
展开
-
使用express生成配置json文件
项目结构如下app.js 创建node后端服务saveConfig.jsvar fs = require("fs"); // 引入fs模块function saveData(info) { return new Promise(async (resolve, reject) => { try { let ret = { type: -1, msg: "暂无信息", }; var TemplateData原创 2022-05-09 15:57:59 · 688 阅读 · 0 评论 -
遍历所有树形数据的路径,并查找某个节点出现路径
function recurTree(root) { let result = []; let path = []; path.push(root.posId); function findPath(result, node, path) { if (node.children.length == 0) { result.push(path); return; } for (.原创 2021-06-30 16:01:15 · 1058 阅读 · 1 评论 -
JS Web API(W3C标准)
主要涉及DOM BOM 事件绑定 Ajax 存储原创 2021-03-08 00:00:07 · 349 阅读 · 0 评论 -
js异步进阶
1、event loop2、promise进阶3、async/await4、微任务宏任务引入上述问题先看几个题目1、请描述event loop(时间循环/事件轮询)的机制,最好画个图2、什么是宏任务和微任务,两者有什么区别?3、promise由哪三种状态,如何变化?4、promise then 和catch的链接看如下代码 Promise.resolve() .then(() => { console.log(1);原创 2021-03-07 16:21:42 · 223 阅读 · 0 评论 -
js需要掌握手写的方法
1、手写深拷贝 function deepClone(obj = {}) { if (typeof obj != "object" || obj == null) { return obj; } let result; if (obj instanceof Array) { result = []; } else { result = {}; } for (let .原创 2021-03-06 23:00:24 · 694 阅读 · 0 评论 -
vue-cropper 裁剪图片
先展示一下效果如何使用:1、安装npm install vue-cropper (如果安装不上,用cnpm)2、直接贴代码爽快人就是这样<template> <el-dialog title="裁剪图片" :visible.sync="visible" @close="onCallback(false)" class="handleDialog" width="1000px" > <div...原创 2021-01-22 17:33:50 · 3439 阅读 · 12 评论 -
动态创建弹框el-dialog
相信大家在页面中写了很多基于el-dialog的弹框,尤其是弹框比较多时,显得很臃肿,不利于后期维护,还有一些相似的弹框功能让你复制粘贴感觉很麻烦还要换个名字,下面我有个还行的方法动态创建,只需要传数据,然后返回数据就可以了,下面直接贴代码哈哈dialog.jsimport Vue from 'vue'function snake2Camel(str, capLower) { let s = str.replace(/[-_](\w)/g, function (x) {原创 2020-10-16 16:36:21 · 4926 阅读 · 4 评论 -
动态更改svg图片的颜色
因为要做uni-app换肤,所以有一些icon使用svg,然后根据主题色进行着色,所以有这个需求下面我说一下解决方法首先准备一张svg图如下<?xml version="1.0" encoding="utf-8"?><!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --><!DOCTYPE svg PUBLIC "-//W3C//原创 2020-08-04 14:23:59 · 4760 阅读 · 1 评论 -
列表进入详情返回列表时保存搜索条件
别问,问就是不会1、写几个函数,写好后列表页面中引用sStore就是封装后的sessionStorage,this.params是搜索条件,isFrom配置在列表,isDetail配置在详情列表中这样引入使用如下图import { searchParamsSave } from "js/common.js";function searchParamsSave() { return { created() { let key = 's原创 2020-06-11 09:43:05 · 1677 阅读 · 0 评论 -
js身份证号校验方法(转载我的请注明哈哈)
const idCardNo = { citys: { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 5.原创 2020-05-26 15:45:07 · 1208 阅读 · 0 评论 -
防抖节流test
使用场景:onresize,scroll,mousemove,mousehover等,会被频繁触发(短时间内多次触发),需要防抖处理防抖函数如下:function debounce(fn, waitTime){ let timer = null return function(){ if(timer !== null){ cle...原创 2020-05-08 15:35:19 · 261 阅读 · 0 评论 -
vue指令复制
cnpm install clipboard --save-devimport clipboard from 'clipboard';Vue.prototype.clipboard = clipboard; <el-button @click="copy(categoryCode)" id="getCategoryCode">复制</el-b...原创 2020-04-08 15:19:52 · 279 阅读 · 0 评论 -
elementUi中checkbox的属性indeterminate 状态和v-model的关系
<el-checkbox :indeterminate="hdIsIndeterminate" v-model="hdCheckAll" @change="handleCheckAllChange($event, 'hd')">华东</el-checkbox>对于indeterminate和v-model绑定的hdIsIndeterminate和hdCheckAll的...原创 2020-03-20 17:11:27 · 3521 阅读 · 2 评论 -
call、apply的使用和bind的区别
call 的使用var person = { printStr: function(a, b) { return this.name + " " + this.age + "," + a + "," + b; }}var person1 = { name:"小王", age: "18"}person.printStr.call(person1, "身体", "...原创 2020-03-06 16:27:32 · 218 阅读 · 0 评论 -
vue blob excel导出数据
downloadFile (res, fileName) { let data = res.data let url = window.URL.createObjectURL(new Blob([data], { type: "application/vnd.ms-excel" })) if ("do...原创 2020-01-09 10:56:08 · 815 阅读 · 0 评论 -
el-dialog字体模糊,使用flex布局,垂直居中
/*element组件库样式修改*/ /deep/ .el-dialog { display: flex; flex-direction: column; margin:0 !important; position:absolute; top:50%; left:50%; t...原创 2020-01-07 14:31:26 · 1885 阅读 · 0 评论 -
常用的location对象
document.location.host //表示当前域名 + 端口号document.location.hostname //表示域名document.location.href //表示完整的URLdocument.location.port //表示端口号document.location.protocol //表示当前的网络协议document.loca...原创 2018-07-17 15:03:19 · 358 阅读 · 0 评论 -
使用 element-ui 的 el-progress 写的进度条
<template> <div class="scaleProgress"> <el-progress :text-inside="true" :stroke-width="18" :percentage="progressNum"></el-progress> </div></template&...原创 2019-04-19 10:50:05 · 30743 阅读 · 8 评论 -
如何解决移动端遮罩层上面滑动穿透事件
不是原创,只是觉得可以解决问题原文链接:https://www.cnblogs.com/bride/p/10114240.html1 使用vue的阻止默认事件@touchmove.prevent 给遮罩层一个阻止默认事件2 用一个div把你想不能让他滑动的内容包裹起来,div的样式设置为.hidden{overflow: hidden;position:fixed...转载 2019-05-30 17:03:40 · 1659 阅读 · 0 评论 -
element el-date-picker 限制范围90天,当天不可选
<template> <div class="table"> <div class="crumbs"> <el-row class="search_con" :gutter="24" style="margin-bottom:20px;display: flex;align-items: center;"&...原创 2019-09-09 14:52:43 · 2706 阅读 · 3 评论 -
el-table 自定义表头 使用方法 :render-header
因为维护了element ui 1.3.7 版的项目,要自定义表头和提示使用:render-header效果:代码:<template> <div class="promptMessage"> <el-tooltip effect="dark" placement="bottom"> <d...原创 2019-09-09 15:06:18 · 4000 阅读 · 0 评论 -
正则(慢慢会增加)
金额正则:let moneyReg = /^(([1-9]\d{0,3})|(0))(\.\d{1,2})?$/let intReg = /^[1-9]\d*$/let phoneReg = /^1[3-9]{1}\d{9}$/let numberReg = /^(([1-9]\d{0,3}(\.\d{1,2})?)|((0)\.\d{1,2}))$/ //不包含0letnewPw...原创 2019-01-03 17:57:24 · 259 阅读 · 0 评论 -
vue 项目 api 统一管理
因为项目迁移所以进行api统一管理api 文件夹下index.jsimport request from '@/lib/request.js'import product from './product.js'function ajax (params, options = {}) { if (params) { if (options.method === 'po...原创 2019-03-22 20:46:09 · 2386 阅读 · 0 评论 -
v-model原理
<input v-model="floorTitle"> 相当于通过oninput(用户输入时触发)把表单值给到变量<input v-bind:value="floorTitle" v-on:input="floorTitle=$event.target.value"> ...原创 2019-03-13 16:45:24 · 1646 阅读 · 0 评论 -
使用js判断数据类型
出去溜达的时候,也会有人问如何判断js数据类型,我当时回答是使用typeof 判断各种数据类型,有两种写法:typeof xxx ,typeof(xxx)console.log(typeof 1 , typeof null, typeof {}, typeof [], typeof (function(){}) ,typeof undefined, typeof '222', t...原创 2018-09-04 18:17:50 · 217 阅读 · 0 评论 -
省市区三级联动jq
html:<!DOCTYPE html><html><head> <title>省市区三级联动</title></head><body> <select id="province"> <option valu原创 2018-08-07 11:37:15 · 1028 阅读 · 1 评论 -
rem.js
(function () { let rootEl = document.documentElement let getSize = function () { let clientWidth = rootEl.getBoundingClientRect().width rootEl.style.fontSize = (100 / 750) * (clientWidth ...原创 2018-08-14 15:09:30 · 216 阅读 · 0 评论 -
百分比瀑布流自适应
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="keywords" content="装修,出租房装修,出租屋装修,杭州出租房装修"> <meta n原创 2018-08-10 10:01:25 · 355 阅读 · 0 评论 -
for...of为什么不能遍历Object对象
因为能够被for...of正常遍历的,都需要实现一个遍历器Iterator。而数组、字符串、Set、Map结构,早就内置好了Iterator(迭代器),它们的原型中都有一个Symbol.iterator方法,而Object对象并没有实现这个接口,使得它无法被for...of遍历。例如:Array.prototype[Symbol.iterator];// ƒ values(...原创 2018-07-17 10:13:15 · 13501 阅读 · 2 评论 -
es6 数组去重
let arr1 = [1,2,2,3,4,4,4];let s = new Set(arr1); let arr2 = Array.from(s);//结果:[1,2,3,4],完成去重原创 2018-07-16 16:59:37 · 1113 阅读 · 0 评论 -
对象和数组的深拷贝问题
第一种方法、通过递归解决: code:function objCopy(a,b){ var b = b || {} for(var i in a){ if(typeof a[i] === 'object'){ if(a[i].constructor === Array){ b[i] =[] }else{...原创 2018-07-09 11:58:33 · 277 阅读 · 0 评论 -
使用promise封装ajax
function getPromiseData(url,dataParams,isAsync,methodType) { return new Promise(function(resolve, reject) { var type = methodType || "POST"; $.ajax({ url: url, ...原创 2018-07-09 11:35:18 · 643 阅读 · 0 评论 -
从url获取参数,存取cookie
function getUrlStringArgs(){ var args={},item=null,name=null,value=null; var qs=location.search.length>0?location.search.substring(1):""; var items=qs.length?qs.split("&"):[]; v...原创 2018-07-09 11:04:42 · 1792 阅读 · 0 评论 -
关于上移下移,一行代码完成数据交换
onMoveUp (index) { if (index !== 0) { this.swapArray(this.dataList, index, index - 1) } else { this.$message({message: '已经处于置顶,无法上移', type: 'warning'}) ...原创 2018-12-04 18:19:38 · 2085 阅读 · 0 评论 -
js 转树结构
function toTree(arr, menuPid, type) { let temp = [] let treeArr = arr treeArr.forEach((item) => { if (item.menuPid == menuPid) { item.children = toTree(treeArr, ite...原创 2018-12-04 18:22:30 · 923 阅读 · 0 评论 -
...和map组数据的实用方法
this.items = ret.map((v, i) => { v.name = decodeURIComponent(v.name) return { no: i + 1, ...v ...原创 2018-12-04 18:27:19 · 478 阅读 · 0 评论 -
vue使用wangeditor自定义表情替换QQ表情
wangEditor的使用手册https://www.kancloud.cn/wangfupeng/wangeditor3/342612npm 安装就不说了,不指定版本就是最新的,现在是3ps: 每个版本的使用都不太一样,我现在用的是3,这款编辑器主要是用了这个属性contenteditable="true",不懂得话自行百度效果图:vue 页面:<template...原创 2019-03-02 16:32:27 · 3386 阅读 · 6 评论 -
解决此图片来自微信公众平台,未经允许不可引用
防盗链:'http://img01.store.sogou.com/net/a/04/link?appid=100520029&url='在图片url上加反盗链同时别忘了加 head<meta name="referrer" content="no-referrer"/>原创 2019-03-05 14:22:41 · 3944 阅读 · 0 评论 -
微信qq表情输入文本 vue
效果图:父组件<template> <div style="padding:20px;width:90%;"> <div class="textBox"> <textarea :maxlength="maxNum" placeholder="请添加回复文字" v-model="shareT原创 2019-02-27 21:20:24 · 1703 阅读 · 3 评论 -
vue 拖拽 (使用vue-slicksort)
<template> <div class="root1"> <SlickList :lockToContainerEdges="true" axis="x" lockAxis="x" v-model="items" class="SortableList" @input="getChangeLi原创 2019-02-23 11:52:46 · 7628 阅读 · 6 评论