指令大全
查看vue-cli版本: vue -V
vue-cli4 全面配置
Nginx配置跨域
CSS3 filter(滤镜) 属性
qiankun 微前端方案实践及总结
JavaScript垃圾回收机制
作者:一萧烟雨任平生 链接:https://www.jianshu.com/p/c99dd69a8f2c 来源:简书
完全是出于技术因素。如果一个对象没有任何引用,WeakMap/WeakSet也不会阻止对象从内存移除,但是垃圾回收器并没有指定什么时候移除,可能马上移除,也可能等待更多时批量移除,所以WeakMap元素的个数并不确定。出于该原因,允许访问 WeakMap 整体的方法并不支持。
参数 --expose-gc 表示允许手动执行垃圾回收机制:node --expose-gc
手动执行一次垃圾回收:global.gc()
process.memoryUsage()
查看内存占用状态 heapUsed 内存占用(Node.js进程的内存使用情况的对象,该对象每个属性值的单位为字节)
heapTotal
和 heapUsed
代表V8的内存使用情况。 external
代表V8管理的,绑定到Javascript的C++对象的内存使用情况。 rss
, 驻留集大小, 是给这个进程分配了多少物理内存(占总分配内存的一部分) 这些物理内存中包含堆,栈,和代码段。
应用:
// 1、注册监听事件:
const listener = new WeakMap()
listener
.set(ele1, func1)
.set(ele2, func2)
ele1.addEventListener('click', listener.get(ele1), false)
ele2.addEventListener('click', listener.get(ele2), false)
// 2、记录访问次数
let jack = { name: "jack" };
const vistedCount = new WeakMap();
vistedCount.set(jack, 123);
// 当 jack 离开,就不需要保存其访问记录
john = null;
// 除了 vistedCount 没有其他引用了
// 所以这个对象会自动的从内存和 vistedCount 中删除,不会造成内存泄漏
对象,字符串,闭包等存于堆内存。 变量存于栈内存。 实际的JavaScript源代码存于代码段内存。
查看mac的node版本:n
提高js代码的质量
可选的链接运算符(将多个函数链接在一起时,该运算符可提高可读性):
const val = anObj.anArray[0]?.someProp ?? 'someDefaultValue'
管道运算符,
const reverseWords =
str => str
|> splitBySpace
|> reverseArray
|> joinWithSpace;
// more:
const double = (n) => n * 2;
const increment = (n) => n + 1;
// 没有用管道操作符
double(increment(double(5))); // 22
// 用上管道操作符之后
5 |> double |> increment |> double; // 22
数字分隔符(语法构造,通过在数字组之间创建视觉分隔,使数字文字更易读):
const longNum = 1_000_000_000_000; //1000000000000
do表达式(执行一个可以在其中包含多个语句的块之后得出的。类似三元运算符)
const res = isCold( color ) ? 'light-blue' : 'orange';
const res = do {
if ( isCold( color ) ) {
'light-blue';
} else if ( isHot( color ) ) {
'orange';
} else if ( isRain( color ) ) {
'purple';
} else {
'green';
}
};
git:
git config --global user.name “Sam Smith”
git config --global user.email
git config --local user.email “Sam Smith”
git log --branches --not --remotes
git revert
Git pull —rebase
git push origin XXPD-1216
git pull origin XXPD-1605 --rebase
git push origin HEAD:refs/for/XXPD-1391
git pull upstream test_br (增加主仓库的源后pull gitlab的最新的代码)
git reset HEAD xxx/xxx/xx.c 将你不想提交的文件进行撤回
git reset --soft HEAD^ ,则意味着将HEAD从顶端的commit往下移动到上一个commit
合master:
git pull upstream master --rebase
git pull origin develop --rebase
git push origin XXPD-1602
合完需要gerrit过一下
git push upstream develop-merge 随送到develop失效的方案
git stash --include-untracked
git stash save
git stash list
git stash pop //取出最近一次暂存并删除记录列表中对应记录
git stash apply stash@{X} //取出相应的暂存
git stash drop stash@{X} //将记录列表中取出的对应暂存记录删除
创建一个新分支并切换到它: git checkout -b <branchname>
要将其他分支合并到活动分支中:git merge <branchname>
合并前预览更改:git diff <sourcebranch> <targetbranch>
在工作目录中搜索foo():git grep "foo()"
一道题看懂js执行机制(promise,setTimeout执行顺序)
console.log('1');
setTimeout(function() {
console.log('2');
process.nextTick(function() {
console.log('3');
})
new Promise(function(resolve) {
console.log('4');
resolve();
}).then(function() {
console.log('5')
})
})
process.nextTick(function() {
console.log('6');
})
new Promise(function(resolve) {
console.log('7');
resolve();
}).then(function() {
console.log('8')
})
setTimeout(function() {
console.log('9');
process.nextTick(function() {
console.log('10');
})
new Promise(function(resolve) {
console.log('11');
resolve();
}).then(function() {
console.log('12')
})
})
// 1,7,6,8,2,4,3,5,9,11,10,12