记录

强制拉取远程分支

git fetch --all     //拉取所有更新,不同步;
git reset --hard origin/master     //本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);
git pull   //再更新一次(其实也可以不用,第二步命令做过了其实)

js

// 遍历对象的key(不包括symbols)
Object.getOwnPropertyNames(obj)
// 遍历对象symbols的key
Object.getOwnPropertySymbols(obj)

vscode快捷键

功能 快捷键
括号跳转 ctrl shift \
折叠所有代码 ctrl k + ctrl 0
展开所有代码 ctrl k + ctrl j
文件预览 ctrl k + enter
// 阻止浏览器默认事件
document.body.addEventListener('touchmove',function(e){
    e.preventDefault()
  },false)

// 实现页面完全不可滚动
document.body.addEventListener('touchmove',function(e){
    e.preventDefault()
  },{ passive:false })

promise

promise有三个状态:
1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
当promise状态发生改变,就会触发then()里的响应函数处理后续步骤;
promise状态一经改变,不会再变。
Promise对象的状态改变,只有两种可能:
从pending变为fulfilled
从pending变为rejected。
这两种情况只要发生,状态就凝固了,不会再变了。

$router
this.$router.push({ name: 'payOrder', params: { addressId: this.radio } })
this.$route.params.addressId

this.$router.push({path: `/pay/editadress`,})

去除小数点后无用的0

parseFloat(value)

p标签显示1行溢出显示省略号

  overflow: hidden;
  text-overflow: ellipsis;
  white-space:nowrap;   

p标签显示2行溢出显示省略号

<p style="-webkit-box-orient: vertical;">text</p>
<style>
p {
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
}
</style>

p标签首行缩进

p {
    text-indent: 30px;
}

p标签保留换行

white-space: pre-wrap;

vue按钮防抖

man.js创建全局指令

Vue.directive('throttle', { 
    inserted(el, binding) { 
        el.addEventListener('click', () => { 
            el.style.pointerEvents = 'none'; 
            if (!el.disabled) { 
                setTimeout(() => { 
                    el.style.pointerEvents = 'auto'; 
                }, binding.value || 2000); 
            } 
        }); 
    } 
});

在vue页面这样用 // 若不设置防抖时间,默认2s v-throttle

<p @click="search" v-throttle="10000">搜索</p>

vue中参数变化的同页面跳转页面不刷新的解决方式

// 全局导航守卫
router.beforeEach((to, from, next) => {
  if(to.name === from.name && to.query.id !== from.query.id) {
    next({ name: 'empty', query: { toName: to.name, toId:to.query.id} })
  }else {
    next()
  }
})

// empty中间路由
    let toName = this.$route.query.toName
    let toId = this.$route.query.toId
    this.$router.push({
      name: toName,
      query: { id: toId },
    })

给组件绑定原生事件

@click.native="fn()"

水平滚动列表

<!DOCTYPE html>
<html>
<head>
    <title>横向滑动</title>
    <style type="text/css">
        .slide-box{
            margin-top: 200px;
            height:35px;
            display: -webkit-box;
            overflow-x: scroll;
            -webkit-overflow-scrolling:touch;
        }
        .slide-item{
            padding:5px 10px;
            height: 35px;
        }
    </style>
</head>
<body>
    <div class="slide-box">
        <div class="slide-item">横向滑动</div>
        <div class="slide-item">横向滑动</div>
        <div class="slide-item">横向滑动</div>
        <div class="slide-item">横向滑动</div>
        <div class="slide-item">横向滑动</div>
    </div>
</body>
</html>

隐藏滚动条

::-webkit-scrollbar {
  /*隐藏滚轮*/
  display: none;
}

清除浮动


    .clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
        content: "";
        display: block;
        height: 0;
        clear:both;
        visibility: hidden;
    }

    .clearfix{
        *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
    }

el-select 设置默认选中后无法切换

解决: 重新赋值form

this.form = {...this.form}

按钮防抖

// 防抖
export const DebounceBy = (fn, t) => {
  let delay = t || 500
  let timer
  return function () {
    let args = arguments;
    if (timer) {
      clearTimeout(timer)
    }
 
    let callNow = !timer
 
    timer = setTimeout(() => {
      timer = null
    }, delay)
 
    if (callNow) fn.apply(this, args)
  }
}

使用:

import { DebounceBy } from '@/common/union.js'

 // 在method的方法里面直接使用
fn:DebounceBy(function(value){
/*写你自己的业务代码*/
},3000)

git代理配置

git config --global http.proxy socks5://127.0.0.1:1080
// 端口号默认1080 具体看vpn监听端口

// 查看配置
git config --global -e

// 取消代理
git config --global --unset http.proxy

正则表达式

 金额 :      /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/

div不设置宽度 按内容宽度自适应

width: max-content;
// max-width: max-content;

el-form-item 自定义label

<el-form-item prop="endTime">
  <label slot="label">
     <el-checkbox v-model="endTimechecked">截止时间</el-checkbox>
  </label>
  <el-date-picker :disabled="endTimechecked?false:true" value-format="yyyy-MM-dd mm:hh:ss" v-model="formInfo.endTime" type="datetime" placeholder="请选择截止时间" style="width: 200px">
  </el-date-picker>
</el-form-item>
图片上传前压缩

npm i image-conversion --save
template

<el-upload action="//up.qiniu.com" :show-file-list="false" :before-upload="beforeUpload" :on-success="(response, file, fileList)=>handleSuccessImg(response, file, fileList,'shareImg')" :data="upPram">
<el-button size="small" icon="el-icon-upload">选择要上传文件的文件</el-button><span style="color:red;">{{ziping?'正在压缩...':''}}</span>
</el-upload>

js

  // 引入image-conversion
// import imageConversion from 'image-conversion'
import * as imageConversion from 'image-conversion';
 methods: { 
// 第一种,不考虑图片长宽,只考虑图片大小的情况,图片超过4M就压缩
 beforeUpload (file) { return new Promise((resolve, reject) => {
        let isLt2M = file.size / 1024 / 1024 < 4 // 判定图片大小是否小于4MB
        if (isLt2M) {
          resolve(file)
        }
        console.log(file) // 压缩到400KB,这里的400就是要压缩的大小,可自定义
        imageConversion.compressAccurately(file, 400).then(res => { // console.log(res)
         resolve(res)
        })
      })
    }, 
//第二种,图片大小超过4M,长度超过2000就压缩
 beforeUpload2 (file) { // 图片不大于4m,宽度不大于2000
      return new Promise((resolve, reject) => {
        let _URL = window.URL || window.webkitURL
        let isLt2M = file.size / 1024 / 1024 > 4 // 判定图片大小是否小于4MB
        // 这里需要计算出图片的长宽
        let img = new Image()
        img.onload = function () {
          file.width = img.width // 获取到width放在了file属性上
          file.height = img.height // 获取到height放在了file属性上
          let valid = img.width > 2000 // 图片宽度大于2000
          // console.log(11, file)
          // 这里我只判断了图片的宽度,compressAccurately有多个参数时传入对象
          if (valid || isLt2M) {
            imageConversion.compressAccurately(file, {
              size: 400,
              width: 2000 }).then(res => { // console.log(33, res)
               resolve(res)
            })
          } else resolve(file)
        } // 需要把图片赋值
        img.src = _URL.createObjectURL(file)
      })
    },
  } </script>

系统日期格式化

    getNowFormatDate() {
      var date = new Date()  // Tue May 25 2021 14:17:32 GMT+0800 (中国标准时间)
      var seperator1 = '-'
      var year = date.getFullYear()
      var month = date.getMonth() + 1
      var strDate = date.getDate()
      if (month >= 1 && month <= 9) {
        month = '0' + month
      }
      if (strDate >= 0 && strDate <= 9) {
        strDate = '0' + strDate
      }
      var currentdate = year + seperator1 + month + seperator1 + strDate
      return currentdate   // 2021-05-25
    },

//长按禁止选择文字

* {
  -webkit-touch-callout:none;
  -webkit-user-select:none;
  -khtml-user-select:none;
  -moz-user-select:none;
  -ms-user-select:none;
  user-select:none;
}

图片裁剪

object-fit: cover;

vue3中给Vue绑定原型

const app = createApp(App);

import axios from "axios";
app.config.globalProperties.$axios = axios;

app.use(store).use(router).mount("#app");

在Vue 3组合式API中使用

1.在setup周期中,先在顶部定义一个变量:let { proxy } = getCurrentInstance();

2.在onMounted周期中使用,方式是:proxy.$axios......

公众号H5 隐藏/显示右上角菜单(分享 复制链接等)

隐藏右上角菜单接口
wx.hideOptionMenu();

显示右上角菜单接口
wx.showOptionMenu();

关闭当前网页窗口接口
wx.closeWindow();

swiper 左右漏部分
image.png

  .swiper-box .swiper-slide {
    width: 80vw !important;
    background-color: yellowgreen;
    margin: 0 10vw;
  }
  .swiper-slide-prev {
    right: -14.8vw;
  }
  .swiper-slide-next {
    left: -14.8vw;
  }

视频进度条操作

document.querySelect('video').currentTime = document.querySelect('video').duration;

JavaScript对象多层属性获取方法

function getProperty(obj, keyStr){
  // let reg=new RegExp(/\[(\w+)\]/g);
  // keyStr = keyStr.replace(reg, '.$1');
  keyStr = keyStr.replace(/\[(\w+)\]/g, '.$1');
  let keyArray = keyStr.split(".");
  for (let i in keyArray) {
    obj = obj[keyArray[i]] || null;
  }
  return obj;

// 调用
let obj = {
  a: {
    b: {
      c: '12345',
      d: [{name: '孙红雷', 
      '/e-f$_*g/': (name) => name + ':\n这瓜保熟吗?', 
      h: (param) => param}]
    }
  }
};
let temp =getProperty(obj, 'a.b.d.0./e-f$_*g/');
let temp1=getProperty(obj, 'a.b.d[0].h');
console.log(temp(temp1('阿强')));


vue 中 v-html 通过正则表达式清除富文本标签中的style样式等

<div id="details-article" v-html="removeHtmlStyle(detailsData.content)"></div>
 removeHtmlStyle(html) {
      let rel = /style\s*?=\s*?([‘"])[\s\S]*?\1/g;
      let newHtml = "";
      if (html) {
        newHtml = html.replace(rel, "");
      }
      // 清除类名
      // let relClass = /class\s*?=\s*?([‘"])[\s\S]*?\1/g;
      // let newClassHtml = "";
      // if (newHtml) {
      //   newClassHtml = newHtml.replace(relClass, "");
      // }
      return newHtml;
    },

富文本换行问题

{
word-wrap: break-word;
white-space: normal;
word-break: break-all;
}

自定义组件挂载原型

https://www.jb51.net/article/258579.htm

富文本图片绑定点击事件

image.png

docx模板

DocxTemplater

excel插件

luckysheet

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容