history.push
hisory.push(path) : 这是我们常用的方式, 其实hisory.push还可以支持对象的方式传递参数
比如 :
history.push({ pathname:'path' , query:{}, search:', ...)
这里面的所有参数都会透传到路由的 location 里面,当然window.location 是无法获取到我们这里自定义的参数的。
浏览器控制台验证第三方工具包
- 找到第三方工具包的cdn 地址(cdnjs.com/libraries?q…
- 在浏览器控制台输入:
await import('https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js')
dayjs().format('YYYY-MM-DD')
npm 安装github模块
比如:
npm install git+https://github.com/sindresorhus/slash.git
// 安装git仓库特定的分支 '#'后面是对应的分支
npm install git+https://github.com/pillarjs/path-to-regexp.git#0.1.x
package.json :
{
"dependencies": {
"path-to-regexp": "git+https://github.com/pillarjs/path-to-regexp.git#0.1.x",
"slash": "git+https://github.com/sindresorhus/slash.git",
}
}
npm 使用别名同时安装一个包的两个版本
npm install vue2@npm:vue@^2.6.14
npm install vue3@npm:vue@^3.2.37
package.json
{
"dependencies": {
"vue2": "npm:vue@^2.6.14",
"vue3": "npm:vue@^3.2.37"
}
}
structuredClone
structuredClone js内置的深度克隆函数, 相比JSON.stringfy 能够克隆日期对象, 但是也有一些限制, 不能克隆函数和原型链上面的一些属性和方法。chrome98 才支持。
移除事件监听器有多种选择
常用方式
let onClick = () => {}
document.addEventListener('click', onClick)
document.removeEventListener('click', onClick)
匿名函数
// 第二种方式(匿名函数)
document.addEventListener('click', function onClick() {
// ...
this.removeEventLisener('click', onClick)
})
AbortController
// 第三种(AbortController) 可以移除多个
const controller = new AbortController()
const { signal } = controller
document.addEventListener('click', ()=> {}, { signal})
document.addEventListener('click', ()=> {}, {signal})
// 移除所有的时间监听
controller.abort()
cloneNode
// 第四种 (克隆dom 节点,清除出事件, <button onclick='console.log('')'/> 这种绑定的事件无法清除)
// 老版本浏览器
button.parentNode.replaceChild(button.cloneNode(true), button)
// 现代浏览器
button.replaceWith(button.cloneNode(true))
初始化一次的几种方式
// useMemo (不推荐,官方文档说useMemo 只能用作代码优化, 不保证将来API 会变更导致多次执行)
const resource = useMemo(()=> new Resource(), [])
// useState (推荐)
const [resource] = useState(()=> new Resource())
// useRef (代码量稍多)
const resource = useRef(null)
if (!resource.current) {
resource.current = new Resource()
}
使用 useReducer 切换状态
const [value, toggleValue] = useReducer((previous)=>!previous, true)
toggleValue() // value:false
toggleValue() // value:true
ssh-keygen 生成密钥对
# ssh-keygen -t rsa -C "123456@qq.com" -f ~/.ssh/test/crm-git
-t 表示密钥的类型 rsa/dsa
-b 表示密钥的长度
对于RSA密钥,最小要求768位,默认是2048位。4096指的是RSA密钥长度为4096位
DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。
-f 表示密钥的存放位置路径
-C 用于识别这个密钥的注释 ,这个注释你可以输入任何内容(邮箱),很多网站和软件用这个注释作为密钥的名字