javascript
javascript
填了个大空
这个人不懒,但是他什么都不想留下
展开
-
前端(Vue、React)导出blob文件(excel、zip等)
导出文件原创 2024-04-15 15:13:23 · 234 阅读 · 0 评论 -
微信小程序连接标签打印机,打印标签
【代码】微信小程序连接标签打印机,打印标签。原创 2023-09-06 14:04:02 · 2694 阅读 · 2 评论 -
Vue全局emit on实现
export default class Bus { constructor() { this.PubSubCache = { $uid: 0 }; } on(type, handler) { let cache = this.PubSubCache[type] || (this.PubSubCache[type] = {}); handler.$uid = handler.$uid || thi原创 2022-01-19 09:35:02 · 1114 阅读 · 0 评论 -
微信小程序自定义头部导航,以及ios中wx.getMenuButtonBoundingClientRect()方法有时候获取返回0的解决方案
微信小程序自定义导航栏 wx.getMenuButtonBoundingClientRect() 有时候在ios会返回所有信息都是0globalData: { navBarHeight: 0, // 导航栏高度 menuTop: 0, // 胶囊距导航栏间距 menuBottom: 0, // 胶囊距底部间距(保持底部间距一致) menuRight: 0, // 胶囊距右方间距(方保持左、右间距一致) menuWidth: 0, // 胶囊长度 menuHeight:原创 2021-11-01 15:18:13 · 1151 阅读 · 0 评论 -
html2canvas插件将一块div转换成图片并下载
若是toDataURL方法报错,是因为图片路径不对,本地图片要转换成base64function dataURLToBlob(dataurl) { let arr = dataurl.split(','); let mime = arr[0].match(/:(.*?);/)[1]; let bstr = atob(arr[1]); let n = bstr.length; let u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bs原创 2021-07-06 15:56:01 · 410 阅读 · 0 评论 -
MQTT的QoS有什么用
MQTT根据QoS定义的等级来传输消息。等级描述如下:level 0:最多一次的传输消息是基于TCP/IP网络传输的。没有回应,在协议中也没有定义重传的语义。消息可能到达服务器1次,也可能根本不会到达。level 1:至少一次的传输服务器接收到消息会被确认,通过传输一个PUBACK信息。如果有一个可以辨认的传输失败,无论是通讯连接还是发送设备,还是过了一段时间确认信息没有收到,发送方都会将消息头的DUP位置1,然后再次发送消息。消息最少一次到达服务器。SUBSCRIBE和UNSUBSCRIBE都使用原创 2021-06-09 09:36:55 · 840 阅读 · 0 评论 -
VUE中一个修改商品数量的组件
商品数量修改VUE中使用<counting :disabled="" // 是否禁用 :numbers="" // 商品数量 :stockNum="" // 商品库存 :maxNum="" // 最大购买值 :minNum="" // 最小购买值 @changeNumber="changeNumber($event, v1.id)" // 改变数量后的方法/>组件<template> <div :class="{ counting: true,原创 2021-05-25 09:17:10 · 542 阅读 · 0 评论 -
vue 数字滚动增加
下载npm install vue-count-to -S直接使用<template><countTo :startVal='startVal' :endVal='endVal' :duration='2000'></countTo></template><script>import countTo from 'vue-count-to';export default { components: { countTo }, d转载 2020-12-10 15:50:35 · 275 阅读 · 0 评论 -
基于vue的一个红包雨h5活动页面
<template> <div id="redEnvelopeRain"> <div class="box" ref="box"></div> </div></template><script>import { random } from "@/utils/index.js";export default { name: "redEnvelopeRain", data() { return {};原创 2020-12-03 15:06:26 · 1315 阅读 · 0 评论 -
Vue 点击复制到粘贴板
// main.js 中// 点击复制import VueClipboard from "vue-clipboard2";Vue.use(VueClipboard);项目中this.$copyText("阿大撒大撒").then(() => {// 复制成功后操作});原创 2020-11-02 10:49:52 · 331 阅读 · 0 评论 -
js实现复制粘贴(兼容IOS 9.3)以上版本
/* HTML */<!-- 复制按钮 --><div class="copyBtn" onclick="copyContent('adas1165465165');">复制淘口令</div><input id="copy_content" type="text" value="" style="position: fixed;top: -100px;z-index: -10;" /> /*js*/// 点击复制function copyCon原创 2020-09-16 09:45:44 · 369 阅读 · 0 评论 -
React上传头像并且裁剪
React React上传头像并且裁剪使用一个插件 react-avatar-editor文档地址: https://www.npmjs.com/package/react-avatar-editornpm 下载 npm i react-avatar-editor -S版本最好是10.0.7,新版可能会报错文件不能使用http图片,否则canvas导出会报错跨域,只能从本地上传图片然后转换成base64传给裁剪组件代码和效果(使用antd - ui)import AvatarEditor原创 2020-08-21 10:50:17 · 1022 阅读 · 0 评论 -
js将域名?后拼接的参数格式化成对象
// 获取url域名后拼接的参数,并且转换成对象const getLocationSearchQUery = () => { let str = location.search.slice(1); let strArr = str.split('&'); let sendData = {}; strArr.forEach(v => { let newInfo = v.split('='); sendData[newInfo[0]] = newInfo[1]; })原创 2020-08-10 10:42:49 · 430 阅读 · 0 评论 -
react万能改变表单项
// 改变表单项export const changeForm = (key, value, formData) => { let cloneFormData = { ...formData } return new Promise((resolve) => { if (typeof key == 'object' && typeof key.length == 'number' && typeof value.length != 'number原创 2020-07-06 10:37:45 · 551 阅读 · 0 评论 -
React&antd表格合并列
合并表格中连续的相同的列// antd表格合并列/*key: 键值row:当前行index:当前行索引listData:表格全部数据*/export const rowSpanTable = (key, row, index, listData) => { let rowSpan = 1 let arrIndex = 0 listData.forEach((item, Dindex) => { if (item.id === row.id) { a原创 2020-06-30 09:57:44 · 1332 阅读 · 2 评论 -
React中使用echarts(折线图)
组件代码import React, { Component } from 'react'import echarts from 'echarts'class Echart extends Component { constructor(props) { super(props) this.state = { } } // 挂载完成之后,因为React初始化echarts时长宽可能会获取到顶层,所以延迟200去生成,不影响视觉效果 componentDidMo原创 2020-06-28 20:00:13 · 4168 阅读 · 2 评论 -
eslint自己习惯的的规则
{ "rules": { "eqeqeq":["off"], "guard-for-in": 0, "max-len" : ["error", {"code" : 300}], "comma-spacing": ["error", { "before": false, "after": true }], "no-mixed-spaces-and-tabs": ["error", "smart-tabs"], "comma-dangle": ["error"原创 2020-06-12 11:45:42 · 247 阅读 · 0 评论 -
element-ui中el-image组件打开预览功能后,点击当前的图片,预览出来的不是当前,是切换后关闭之前的那一张
el-image组件它是先渲染好浏览图片的div,当点击图片时直接把隐藏的div显示出来。当关闭时就直接隐藏div,下次点击又是直接显示div,并没有处理图片顺序。所以再次打开就是展示关闭前的图片。//如果想每次点击都显示第一张。目前一个方法就是监听图片添加一个点击事件,对this.srcList重新赋值就可以了mounted() { document.addEventListener('click', (e) => { if (e.target.classList.contains('el原创 2020-06-09 10:56:13 · 8359 阅读 · 6 评论 -
js-cookie库方法
封装js-cookie库import Cookies from 'js-cookie'export const setCookie = (name, value, days) => { return Cookies.set(name, value, { domain: domain, expires: days })}export const getCookie (name) => { return Cookies.get(name, { domain: domain })}原创 2020-06-04 15:19:04 · 479 阅读 · 0 评论 -
vue中ios13/安卓10以下浏览器使用axios请求状态码为0
因为有自定义请求头userId和token,所以先会进行options,options后服务端返回了,但是前端浏览器没有进行post,因为后台设置的headers为*,可能ios13/安卓10一下浏览器识别不出来后台允许有自定义请求头的存在所以后台将Access-Control-Allow-Headers: *修改为Access-Control-Allow-Headers: accept, content-type, origin, userid, token将自定义请求头和默认请求头全原创 2020-06-03 10:54:04 · 4832 阅读 · 0 评论 -
常用工具库
表单// 邮箱验证export const isEmail = (s) => { return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)}// 手机号码export const isMobile = (s) => { return /^1[0-9]{10}$/.test(s)}// 电话号码export const isPhone = (s) => {原创 2020-06-01 14:06:42 · 551 阅读 · 0 评论 -
原生js动态生成表格,隔行变色,双击修改表格内容并且同步修改二维数组,将数组打印
嘤嘤嘤<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> table tbody tr原创 2020-05-13 16:57:15 · 406 阅读 · 0 评论 -
js实现浏览器页面返回上一页
window.location.href = document.referrer;window.history.back(-1);原创 2020-05-06 18:19:53 · 845 阅读 · 0 评论 -
Vue常见报错
1.@click=“xxx”,xxx方法没有在methods中定义Cannot read property ‘_wrapper’ of undefined原创 2020-05-06 14:45:24 · 276 阅读 · 0 评论 -
Vue项目接入腾讯滑动验证
首先在html中引入sdk,位于head和body之间<!DOCTYPE html><html lang="en" style="font-size: 20px;"> <head></head> <!-- 验证码 --> <script src="https://ssl.captcha.qq.com/TCaptcha...原创 2020-04-22 16:11:58 · 1238 阅读 · 0 评论 -
vue等框架和传统多页面的区别
单页面和多页面的优缺点比较转载 2020-03-13 17:45:38 · 877 阅读 · 0 评论 -
js数字或者字符串,位数不够往前/后补0或者其他
js 的 padStart() 和 padEnd() 方法将一个 字符串 的长度规定,如果达不到这个长度,则向前/后补充一个值方法参数说明padStart(num, val)规定一个字符串长度为 num,如果长度不够,往 前 补 val(可选)padEnd(num, val)规定一个字符串长度为 num,如果长度不够,往 后 补 val(可选)co...原创 2020-01-02 11:45:24 · 8015 阅读 · 0 评论 -
前端在线预览office文件
使用office官方提供的方法let url = ''window.location.href = `https://view.officeapps.live.com/op/view.aspx?src=${encodeURIComponent(url)}`其中url是要打开的文件,要求必须在公网中可以访问的到,然后直接打开链接就可以在线预览...原创 2019-12-20 17:52:13 · 1043 阅读 · 0 评论 -
Vue内部管理系统项目,接入钉钉扫码登录
无理的新需求。。公司自己内部系统,接入钉钉扫码登录。。。https://ding-doc.dingtalk.com/doc#/serverapi2/etaarr钉钉开发文档注意,上面这一步得联系管理员去操作,因为只有管理员可以登录钉钉开发者平台这里使用方式有 两种第一种是跳转连接到一个页面,扫码登录之后返回第二种是直接在页面上显示扫码这里我用的第二种方式,代码如下首先引入需...原创 2019-12-16 13:04:23 · 4593 阅读 · 2 评论 -
用 .sync 方法实现 Vue 父子组件传值双向绑定
父子组件传值,在父组件中传入,子组件中 props 接收举个例子:// 父组件中引用子组件,并将 addUserInfo 传入子组件<add-user :addUserInfo="addUserInfo" />// 子组件中接收 addUserInfo props: { addUserInfo: { type: Boolean, de...原创 2019-12-09 14:10:33 · 638 阅读 · 0 评论 -
Vue.use() 的使用和基本原理
Vue.use() 在 vue 中使用很多,比如 ElementUI,Router,Vuex 等组件在引用后都会使用 Vue.use 将他们传入作为参数使用,今天记录一下 Vue.use 的用法先看一下官方给的文档说明安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作...原创 2019-12-04 13:05:01 · 9585 阅读 · 3 评论 -
将人民币数值转换为三位以“,”隔开的数,并且保留两位小数
项目中一个简单的方法,传入人民币数值后将数值改变成格式化的人民币格式,代码如下:dealNumber(money){if(money && money!=null){ money = String(money); var left=money.split('.')[0],right=money.split('.')[1]; right = right ? (r...原创 2019-11-27 16:11:14 · 307 阅读 · 0 评论