【js开发记录笔记】js开发记录笔记

news/2024/5/20 2:47:48

整理的函数以及注意点

css 强制!important

includes 函数

//示例:
Input: [1, 2, 3, 4, 5].includes(2);
Output: true;Input: [1, 2, 3, 4, 5].includes(9);
Output: false;

方法

1.同步方法获取接口返回值:

new Promise((resolve) => {dataList = this.AddtreeDataListLoading(); //调用得接口resolve();
}).then(() => {console.log(dataList); //返回得值
});

2.try throw new Error(‘’):

try throw new Error('')

3. $set 使用:

self.$set(self.tabledata, self.tabledata.indexOf(record), record);

4. catch 使用:

.catch((err) => {this.$message.error(err.message)})

5. git 如何将分支代码合并到主分支 master:

//1.git checkout master 切换到主分支
//2.git merge xx 分支合并
//3.git push 代码全部更新

6. 获取当前 yyyy-MM-dd hh:mm:ss

CurentTime() {var now = new Date()var year = now.getFullYear() //年var month = now.getMonth() + 1 //月var day = now.getDate() //日var hh = now.getHours() //时var mm = now.getMinutes() //分var clock = year + '-'if (month < 10) clock += '0'clock += month + '-'if (day < 10) clock += '0'clock += day + ' 'if (hh < 10) clock += '0'clock += hh + ':'if (mm < 10) clock += '0'clock += mmreturn clock},

7. confirm 的使用:

const that = this;
this.$confirm({title: "您确定删除该文件/文件夹?",content: "删除之后不可撤回!",okText: "确定",okType: "danger",cancelText: "取消",onOk() {designNodeRemove(obj).then((res) => {}).catch((err) => {that.$message.error(err.message);});},onCancel() {console.log("Cancel");},
});

8. CSS 限制宽度

/* 限制宽度 */
.txtOmit {width: 222px;overflow: hidden; /*隐藏 */white-space: nowrap; /*不换行 */text-overflow: ellipsis; /*超出部分省略号 */
}/* 限制高度,如果超过高度出现竖向滚动条 */
.divHeigthOver {max-height: 400px;overflow: auto;white-space: nowrap;text-overflow: ellipsis;
}

9. 合并数组

guids.push.apply(guids, NewGuids);

10.筛选两个数组对象里不重复的数据

this.LabelsForm.lableList.filter((item) => !res.data.some((ele) => ele.key === item.key)
);

11.分页器 a-pagination 加跳转,总计数量记录,居右

class="table-pagination"
show-quick-jumper
:total="!data.length ? 0 : PageData.total"
:show-total="(total) => `共 ${total} 条记录`"
.table-pagination {float: right;bottom: 10px;
}

12.table 增加序号

<div slot="num" slot-scope="text, record, index">{{ (PageData.page - 1) * PageData.size + (index + 1) }}
</div>

13.清空表单校验

this.$refs.ruleForm.resetFields();

14. 返回上级路由并关闭当前路由

this.$closePage(this.$route, "/config/resource/modelManagement");

15. 定义递归方法,接收一个数组

    deepFilter(list, ModelList) {// 使用 filter 过滤当前层的数组return list.filter((item) => {!ModelList.some((ele) => {if (item.id === ele.id && ele.type != '-1') item.disabled = true// filter 其实也是遍历// 把当前遍历的节点的 children 也调用一次 deepFilter 函数,返回过滤后的数组重新赋值item.subList = this.deepFilter(item.subList, ModelList)})// 最后判断当前节点是否符合过滤要求if (!item.disabled) return item})},

16. 树形数据转为一维数组

    getOneArrchildren(tree) {var arr = []const expanded = (datas) => {if (datas && datas) {datas.forEach((e) => {arr.push(e)expanded(e.children)})}}expanded(tree)return arr},

17.css 选择器

css 第一个元素 :first-child :nth-child(odd) 奇数 :nth-child(even) 偶数

18.forEach 跳出循环

function getItemById(arr, id) {var item = null;try {arr.forEach(function (curItem, i) {if (curItem.id == id) {item = curItem;throw Error();}});} catch (e) {}return item;
}

19.formData 存 json 需要给 json 对象放在 JSON.stringfly()

formData 存 json 需要给 json 对象放在 JSON.stringfly()

20.vue 重置 data()中的数据

Object.assign(this.$data, this.$options.data());

21.递归查找某个子级的所有父级

  findParents(treeData, id) {if (treeData.length == 0) returnfor (let i = 0; i < treeData.length; i++) {if (treeData[i].id == id) {return []} else {if (treeData[i].subList) {var res = this.findParents(treeData[i].subList, id)if (res !== undefined) {return res.concat(treeData[i].id)}}}}}

22. 树形数据转为一维数组

    getOneArrchildren(tree) {var arr = []const expanded = (datas) => {if (datas && datas) {datas.forEach((e) => {arr.push(e)expanded(e.subList)})}}expanded(tree)return arr}

23. H5 禁止浏览器下拉刷新以及左右滑动

// #ifdef H5 H5 禁止浏览器下拉
document.body.addEventListener("touchmove",function (e) {e.preventDefault();},{ passive: false }
);
// #endif

24. css 禁止文字选中变蓝(放在 div 里) onselectstart=“return false”

 css 禁止文字选中变蓝(放在 div 里) onselectstart="return false"

25. div 平铺类似 model 弹窗的效果

.ShowCustomPage {position: fixed;left: 0;top: 0;right: 0;bottom: 0;z-index: 99;
}

26. input 定义 ref 为 queryDataName,然后通过如下获取焦点

this.$nextTick(() => {this.$refs.queryDataName.focus();
});

27. 失去焦点并鼠标点击外部 dom 元素一次触发事件@blur=“blur”

失去焦点并鼠标点击外部 dom 元素一次触发事件@blur="blur"

28. 在 table 的列表名旁边插入 icon 标签 1.注释 title 2.插入 span 标签 slot=“role_slot”

  {// title: '用户角色',dataIndex: 'role',key: 'role',align: 'center',width: 150,scopedSlots: { title: 'role_slot', customRender: 'role' },},
<span slot="role_slot" class="roleColumns"><div>用户角色</div><div><a-tooltip title="用户角色说明"><a-icontype="exclamation-circle"@mouseover="isRoleModel = true"@mouseout="isRoleModel = false"/></a-tooltip></div>
</span>

29. activated():在 vue 对象存活的情况下,进入当前存在 activated()函数的页面时,一进入页面就触发;可用于初始化页面数据等

 activated():在 vue 对象存活的情况下,进入当前存在 activated()函数的页面时,一进入页面就触发;可用于初始化页面数据等

30. 判断输入框不为空 (value??‘’) !== ‘’ 相当于 value !== null && value !== undefined && value !== ‘’

判断输入框不为空 (value??'') !== '' 相当于 value !== null && value !== undefined && value !== ''

31. 修改 url 拼接参数的值

var obj = JSON.parse(JSON.stringify(this.$router.currentRoute.query)); // 这里我们需要的应该是值,因此必须转为深拷贝
Object.assign(obj, { vk: res.data });
this.$router.push({query: obj,
});

32. package.json 参数

  要向您 package.json 的 dependencies 中添加: --save要向您 package.json 的 devDependencies 中添加: --save-dev

33. 返回时间格式

//返回时间格式
export const getTimeData = (date, format) => {//isTime 是否显示时分秒var d = date ? new Date(date) : new Date();var year = d.getFullYear();var month = d.getMonth() + 1;var day = d.getDate();var hours = d.getHours();var min = d.getMinutes();var seconds = d.getSeconds();if (month < 10) month = "0" + month;if (day < 10) day = "0" + day;if (hours < 10) hours = "0" + hours;if (min < 10) min = "0" + min;if (seconds < 10) seconds = "0" + seconds;if (format == "YYYY") return JSON.stringify(year);if (format == "YYYY-MM") return year + "-" + month;if (format == "YYYY.MM") return year + "." + month;if (format == "YYYY-MM-DD") return year + "-" + month + "-" + day;if (format == "HH") return JSON.stringify(hours);if (format == "HH:mm") return hours + ":" + min;if (format == "HH:mm:ss") return hours + ":" + min + ":" + seconds;if (format == "YYYY-MM-DD HH:mm:ss")return (year + "-" + month + "-" + day + " " + hours + ":" + min + ":" + seconds);
};

34. 获取指定范围内的所有月份

 //获取指定范围内的所有月份 start: 2020.04 ,end: 2021.03
export const getMonthBetween = (start, end) => {//传入的格式 YYYY-MMvar result = [];var s = start.split(".");var e = end.split(".");var min = new Date();var max = new Date();min.setFullYear(s[0], s[1] \* 1 - 1, 1); //开始日期max.setFullYear(e[0], e[1] \* 1 - 1, 1); //结束日期var curr = min;while (curr <= max) {var month = curr.getMonth();result.push(getTimeData(curr, "YYYY.MM"));curr.setMonth(month + 1);}return result;
};

35. 去掉 iframe 里网站的的样式

<div id="ercodeShow" class="ercode-box"></div>const frame = document.createElement('iframe')frame.src = originUrlframe.className = 'qr-frame'frame.width = '180px'frame.height = '180px'const el = document.getElementById('ercodeShow') as HTMLIFrameElementel.innerHTML = ''el.appendChild(frame)frame.onload = (): void => {if (frame.contentWindow?.postMessage && window.addEventListener) {// 设置样式 去除 title 和 info,设置 qrcode 的 width,清除 wrp_code 的 margin-topconst frameDocument = frame.contentWindow.documentframeDocument.getElementsByClassName('title')[0].setAttribute('style', 'display: none;')frameDocument.getElementsByClassName('info')[0].setAttribute('style', 'display: none;')frameDocument.getElementsByClassName('qrcode')[0].setAttribute('style', 'width: 180px;')frameDocument.getElementsByClassName('wrp_code')[0].setAttribute('style', 'margin-top: 0;')frame.contentWindow?.postMessage('ask_usePostMessage', '\*')}
}

36. div 补缺占位的,class 使用正常 div 方块的,但页面设置成 background: transparent;

<divclass="downloaderPage-right-body-cardEmpty"v-for="(item, index) in 4 - (toolList.length % 4)"v-if="toolList.length % 4 > 0":key="index"
></div>

37. vue3 使用依赖注入传值

父传子孙:父:provide('handProductNoAction', true);子:inject('handProductNoAction')子孙传父级子孙:const handTableDetails = inject('handTableDetails', Function, false);handTableDetails(true);父级:const handTableDetails = (e: boolean) => {};provide('handTableDetails', handTableDetails);

38. 清空 pinia

import { useUserStore } from "@/store";
const store = useUserStore();
store.$reset();

39. 通过代码编辑器的text文本转js函数

 this.dataFilterFnStr =dataFilterFnStr || "function filter(data){\n   return data\n}";let dataFilterFn;try {dataFilterFn = eval(`(${this.dataFilterFnStr})`);} catch (error) {message.message("数据过滤函数格式错误", "warning");return;}if ( typeof dataFilterFn === "function") {try {data = dataFilterFn(data);} catch (error) {message.message("数据过滤函数格式错误,请及时修改", "warning");}}

40. 深拷贝

    clone: function(target) {if (typeof target == 'object') {let result = Array.isArray(target) ? [] : {};for (let key in target) {if (typeof target[key] == 'object') {result[key] = this.clone(target[key]);} else {result[key] = target[key];}}return result;}return target;},

39. base64 图片旋转 src 是 base64 edg 是旋转的角度需要是 90 的倍数

rotateBase64Img(src, edg) {
return new Promise((resolve) => {
var canvas = document.createElement("canvas");
var ctx = canvas.getContext("2d");var imgW; //图片宽度var imgH; //图片高度var size; //canvas初始大小if (edg % 90 != 0) {console.error("旋转角度必须是90的倍数!");throw "旋转角度必须是90的倍数!";}edg < 0 && (edg = (edg % 360) + 360);const quadrant = (edg / 90) % 4; //旋转象限const cutCoor = { sx: 0, sy: 0, ex: 0, ey: 0 }; //裁剪坐标var image = new Image();image.crossOrigin = "anonymous";image.src = src;image.onload = function () {imgW = image.width;imgH = image.height;size = imgW > imgH ? imgW : imgH;canvas.width = size * 2;canvas.height = size * 2;switch (quadrant) {case 0:cutCoor.sx = size;cutCoor.sy = size;cutCoor.ex = size + imgW;cutCoor.ey = size + imgH;break;case 1:cutCoor.sx = size - imgH;cutCoor.sy = size;cutCoor.ex = size;cutCoor.ey = size + imgW;break;case 2:cutCoor.sx = size - imgW;cutCoor.sy = size - imgH;cutCoor.ex = size;cutCoor.ey = size;break;case 3:cutCoor.sx = size;cutCoor.sy = size - imgW;cutCoor.ex = size + imgH;cutCoor.ey = size + imgW;break;}ctx.translate(size, size);ctx.rotate((edg * Math.PI) / 180);ctx.drawImage(image, 0, 0);var imgData = ctx.getImageData(cutCoor.sx,cutCoor.sy,cutCoor.ex,cutCoor.ey);if (quadrant % 2 == 0) {canvas.width = imgW;canvas.height = imgH;} else {canvas.width = imgH;canvas.height = imgW;}ctx.putImageData(imgData, 0, 0);resolve({ data: canvas.toDataURL() });};});},

40.nvm命令

//1、版本管理
nvm on //开启 node.js 版本管理。
nvm off //关闭 node.js 版本管理。//2、常用命令
nvm list available //显示所有可以下载的版本
nvm install node 版本号 //安装对应版本的 node
nvm ls //查看已安装的 node 版本列表
nvm use node 版本号 //切换到对应版本的 nodejs
nvm uninstall node 版本号 //卸载到对应版本的 node//3、按钮查看
nvm --help //显示命令行帮助信息然后需要使用低版本需要加环境变量 path 加入如下的路径
node_global
node_global\node_modules\yarn\bin

41.数字每三位加逗号的方法

    formatNumber(num) {return Number(num).toLocaleString()},//中文,保留小数点后五位formatNumber(num) {return Number(num).toLocaleString('zh', { maximumFractionDigits: 5 });},

http://www.mrgr.cn/p/04737757

相关文章

PDF批量编辑技巧:高效PDF转txt批量处理,轻松管理大量文档

随着信息技术的飞速发展&#xff0c;文档管理已成为日常工作中不可或缺的一部分。特别是当我们需要处理大量的PDF文件时&#xff0c;如何高效地进行编辑、转换和管理成为了一个重要的问题。本文将介绍一些PDF批量编辑的技巧&#xff0c;特别是如何将PDF批量转换为txt格式&#…

Redis单机安装

1.编译 cd redis安装目录 makemake install2.修改配置文件redis.conf #端口修改 port 6379 #后台进程启动 yes daemonize yes # daemonize no #注释掉 为了可以远程连接 #bind 127.0.0.1 #设置密码 requirepass pwd3.启动 ./redis-server ../redis.conf查看进程 [rootlocal…

『ZJUBCA Collaboration』WTF Academy 赞助支持

非常荣幸宣布&#xff0c;浙江大学区块链协会收到WTF Academy的赞助与支持&#xff0c;未来将共同开展更多深度合作。 WTF Academy是开发者的Web3开源大学&#xff0c;旨在通过开源教育让100,000名开发者进入到Web3。截止目前&#xff0c;WTF开源教程在GitHub收获超15,000 ⭐&a…

【GPT调用】本地使用python调用GPT接口

python调用GPT接口 环境变量设置主调用方法执行结果 环境变量设置 .env文件中配置GPT环境变量 api_key"你的GPT-API-KEY" urlhttps://ai-proxy.ksord.com/wps.openai.azure.com/openai/deployments/gpt-4-32k/chat/completions?api-version2023-09-01-preview主调…

Jmeter-线程组下篇

线程组 线程组作为JMeter测试计划的核心组件之一,对于模拟并发用户的行为至关重要。线程组元件是整个测试计划的入口,所有的取样器和控制器必须放置在线程组下。 可以将线程组视为一个虚拟用户池,其中每个线程可被理解为一个虚拟用户,多个虚拟用户同时执行相同的一批任务。…

stable diffusion 之云端部署攻略

本文主要介绍stable diffusion云端产品以及使用步骤 ℹ️整合安装包、模型资源见文末~ megaease cloud&#xff08;强烈推荐&#xff09; 优点&#xff1a; 集成了常用大模型和插件、VAE3080显卡配置&#xff0c;费用大概0.48元/小时&#xff0c;可随时暂停&#xff0c;暂停…

【自然语言处理】seq2seq模型——机器翻译

seq2seq模型——机器翻译 1 任务目标 1.1 案例简介 seq2seq是神经机器翻译的主流框架&#xff0c;如今的商用机器翻译系统大多都基于其构建&#xff0c;在本案例中&#xff0c;我们将使用由NIST提供的中英文本数据训练一个简单的中英翻译系统&#xff0c;在实践中学习seq2se…

腾讯游戏海外扩张,增持芬兰游戏开发商股份持股比例增至14.8%

易采游戏网5月8日消息&#xff0c;近日腾讯再次出手&#xff0c;大幅增持了芬兰知名游戏开发商Remedy Entertainment的股份&#xff0c;持股比例猛增至14.8%。这一举动引起了业界和投资者的广泛关注。 据了解&#xff0c;腾讯此次增持是在2024年4月24日完成的。根据芬兰法律规…

Ubuntu下halcon软件的下载安装

由于工作需求&#xff0c;点云配准需要使用halcon进行实现&#xff0c;并且将该功能放入QT界面中 1.下载halcon 进入halcon官网进行下载 官网链接&#xff1a;https://www.mvtec.com/products/halcon/ 注意&#xff1a;要注册登陆之后才能进行下载 接着点击Downloads->H…

Axure实现菜单抽屉效果

Axure是怎么实现如下效果的&#xff1f; 菜单打开和收起侧边栏菜单抽屉效果 实现效果 两级菜单&#xff0c;点击菜单收起其他菜单&#xff0c;打开当前菜单。 实现原理 单击一级菜单时&#xff0c;1&#xff09;切换当下二季菜单的显示/隐藏状态 2&#xff09;隐藏其他菜单…

网络安全之ACL

ACL&#xff1a;访问控制列表——控制列表&#xff08;策略列表&#xff09;&#xff0c;是一个控制工具。 功能&#xff1a;&#xff01;、定义感兴趣路由&#xff08;控制层面&#xff09;。2、定义感兴趣流量&#xff08;数据层面&#xff09;。 例如&#xff1a; 假设在该…

【MsSQL】数据库基础 库的基本操作

目录 一&#xff0c;数据库基础 1&#xff0c;什么是数据库 2&#xff0c;主流的数据库 3&#xff0c;连接服务器 4&#xff0c;服务器&#xff0c;数据库&#xff0c;表关系 5&#xff0c;使用案例 二&#xff0c;库的操作 1&#xff0c;创建数据库 2&#xff0c;创建…

【攻防技术系列+Python】-- 用 Python 控制系统进程

用 Python 控制系统进程 由于注册表几乎可以决定整个操作系统的运行,因此它成为安全工具与恶意软件对抗的主要战场之一。除了注册表之外,对系统进程的控制也是安全工具和恶意软件的必争之地。这里我们首先要了解程序和进程的区别。程序是静态的,进程是动态的。进程可以分为系…

两个手机在一起ip地址一样吗?两个手机是不是两个ip地址

在数字时代的浩瀚海洋中&#xff0c;手机已经成为我们生活中不可或缺的一部分。随着移动互联网的飞速发展&#xff0c;IP地址成为了连接手机与互联网的桥梁。那么&#xff0c;两个手机在一起IP地址一样吗&#xff1f;两个手机是不是两个IP地址&#xff1f;本文将带您一探究竟&a…

【快速入门Linux】10_Linux命令—Vi编辑器

文章目录 一、vi 简介1.1 vi1.2 vim1.3查询软连接命令&#xff08;知道&#xff09; 二、打开和新建文件&#xff08;重点&#xff09;2.1 打开文件并且定位行2.2 异常处理 三、vi三种工作模式&#xff08;重点&#xff09;3.1 末行模式-命令 四、常用命令4.0 命令线路图4.1 移…

图像涂哪就动哪!Gen-2新功能“神笔马良”爆火,网友:急急急

AI搞视频生成&#xff0c;已经进化到这个程度了&#xff1f;&#xff01; 对着一张照片随手一刷&#xff0c;就能让被选中的目标动起来&#xff01; 明明是一辆静止的卡车&#xff0c;一刷就跑了起来&#xff0c;连光影都完美还原&#xff1a; 原本只是一张火灾照片&#xff0…

STM32快速入门(串口传输之USART)

STM32快速入门&#xff08;串口传输之USART&#xff09; 前言 USART串口传输能实现信息在设备之间的点对点传输&#xff0c;支持单工、半双工、全全双工&#xff0c;一般是有三个引脚&#xff1a;TX、RX、SW_RX&#xff08;共地&#xff09;。不需要一根线来同步时钟。最大优…

Hadoop3:集群搭建及常用命令与shell脚本整理(入门篇,从零开始搭建)

一、集群环境说明 1、用VMware安装3台Centos7.9虚拟机 2、虚拟机配置&#xff1a;2C&#xff0c;2G内存&#xff0c;50G存储 3、集群架构设计 从表格中&#xff0c;可以看出&#xff0c;Hadoop集群&#xff0c;主要有2个模块服务&#xff0c;一个是HDFS服务&#xff0c;一个是…

基于web的物流管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

特斯拉CEO马斯克访华,或加速FSD技术在中国的落地

特斯拉首席执行官埃隆马斯克于4月底进行了中国之旅&#xff0c;这一访问被业内人士认为可能加速特斯拉FSD&#xff08;Full Self-Drive&#xff0c;完全自动驾驶&#xff09;技术在中国的应用。业内专家指出&#xff0c;马斯克的此番到访可能会对中国自动驾驶市场产生深远影响&…