分类
javascript

去除当前所有setTimeout

const t=setTimeout(()=>{})
for(let i=t; i>0;i-=0) {
  clearTimeout(i)
}
分类
javascript

算法基础知识

这里会收集一些提高算法性能的小技巧

内容互换的时间复杂度与空间复杂度最低算法

两个下标互换

image - 算法基础知识

时间复杂度n(1),空间复杂度n(1),无需算法

swap(a,b)

求逆

image 1 - 算法基础知识

reverse()

部分求逆

image 2 - 算法基础知识

reverse(1,4)

同数量相邻块互换

image 3 - 算法基础知识

swap(1,3),swap(2,4)

同数量不相邻块互换

image 4 - 算法基础知识

swap(0,3),swap(1,4)

不同数量相邻块互换

image 5 - 算法基础知识

reverse(0,5)-> reserve(0,3),reserve(3,5)

不同数量非相邻块互换

image 6 - 算法基础知识

reverse() -> reverse(0,3) ,reverse(4,6)

分类
插件

Homebrew下载脚本

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

分类
vue

vue 自定义modal框

先写一个正常的vue组件

写一个创建组件的方法

import Vue from 'vue'

/**
 * 创建一个根组件
 * @param Component 组件
 * @param props 组件属性
 */
const createComponent = (Component, props) => {
  // vue.extend()获取创建实例
  const Ctor = Vue.extend(Component)
  // 创建组件实例,这时得到的是虚拟dom,如何转化为真实dom
  const comp = new Ctor({
    // propsData: props
  })
  // 前面说到$mount就是这个作用
  comp.$mount()
  // 挂在在body上,这时是comp的dom
  document.body.appendChild(comp.$el)
  comp.remove = () => {
    // 移除本身
    document.body.removeChild(comp.$el)
    // 释放自己所占资源
    comp.$destroy()
  }
  return comp
}

export default createComponent

定义打开弹窗方法

import CandyBox from './CandyBox'
import createComponent from './createComponent'

const Modal = {}
// 弹窗组件实例
const modalInstance = {}
const openModal = (name, Component, options) => {
  if (!modalInstance[name]) {
    modalInstance[name] = createComponent(Component)
  }
  // 在渲染完成打开,否则首次动画播放有问题
  setTimeout(() => {
    modalInstance[name].open(options)
  })
}
Modal.candyBox = (options = {}) => {
  openModal('candyBox', CandyBox, options)
}
export default Modal

如果需要预加载定义预加载方法

// 弹窗预加载 (可在项目入口调用该函数,实现弹窗预加载)
Modal.prefetch = () => {
  modalInstance.candyBox = createComponent(CandyBox)
}
/**

在项目入口执行预加载

import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
import Modal from './components/Modal'

new Vue({
  el: '#app',
  store,
  router,
  render: h => h(App)
})
Modal.prefetch()