常用指令和字词典

本文涵盖前端技术如Vue和CSS3,深入解析JavaScript垃圾回收机制,探讨WeakMap特性,介绍Node.js内存管理,并分享git高级操作技巧,以及现代JavaScript语法糖,如可选链接运算符和数字分隔符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指令大全

查看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进程的内存使用情况的对象,该对象每个属性值的单位为字节)
heapTotalheapUsed 代表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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值