跳至主要內容
this

1.this的指向

1.在函数执行的时候会在函数内部创建两个变量,arguments、this
a. arguments 储存着实参的一个类数组对象。
b. this 指向函数执行的上下文 (通俗点:谁调用这个函数this就指向谁)

function test() {
    console.log(this)
}

const objA = {
    a: test,
    b: {
        c: test
    }
}

test() // window
objA.a() // objA
objA.b.c() // objA.b


Mr.Ding小于 1 分钟javascriptthis
hooks

hooks的使用

为什么要用Hook?

1.在组件之间复用状态逻辑很难

  • Hook 使你在无需修改组件结构的情况下复用状态逻辑。

2.复杂组件变得难以理解

  • Hook 将组件中相互关联的部分拆分成更小的函数(比如设置订阅或请求数据),而并非强制按照生命周期划分。你还可以使用 reducer 来管理组件的内部状态,使其更加可预测。

Mr.Ding大约 4 分钟ReactHooksuseStateuseEffect
Volta

node版本管理工具

  • 可以指定项目使用的node版本,控制同一个机器上多个项目使用不同的node版本

安装

Unix 安装

curl https://get.volta.sh | bash

Mr.Ding小于 1 分钟toolnodeVersion volta
软考

Mr.Ding大约 1 分钟软考
VPN

VPN 命令

# powershell命令
$env:HTTP_PROXY="http://127.0.0.1:7897"; $env:HTTPS_PROXY="http://127.0.0.1:7897"
# 测试命令行vpn是否通
curl https://www.google.com

Mr.Ding大约 1 分钟toolvpn
jenkins

PipeLine 任务配置

  • 安装jenkins, 登录,下载所需插件
  • 登录账号,新增Pipeline 任务

部署node express 应用 gitee push 自动发布

  • 配置node 环境, 下载node, gitee插件
  • 配置系统配置
  • 项目配置

私有项目git发布配置

  • 添加全局凭据

  • 添加凭据id

  • 流水线命令


Mr.Ding小于 1 分钟jenkins
pm2

使用pm2发布node项目 pm2文档

安装pm2

yarn add --dev pm2

Mr.Ding小于 1 分钟pm2
面试题

清除掉源码中没有使用的方法和css样式

  1. 删除无用js代码 使用 Tree Shaking 树摇优化 限制: js ESM 模块
  2. 删除无用css样式 使用 PurgeCSS (CSS 原子化)

项目更新提示

let lastSrcs;

const scriptReg = /\<script.*src=["'](?<src>[^"']+)/gm;

async function getSrcs() {
  const html = await fetch(`/?_timestamp=${Date.now()}`).then(res => res.text());

  scriptReg.lastIndex = 0;
  const srcs = [];
  let match;
  while ((match = scriptReg.exec(html))) {
    srcs.push(match.groups.src);
  }

  return srcs;
}
async function checkUpdate() {
  const srcs = await getSrcs();
  if (lastSrcs) {
    const diff = srcs.filter(src => !lastSrcs.includes(src));
    if (diff.length) {
      console.log('有新的脚本更新了', diff);
      return true;
    } else {
      return false;
    }
  }
}

const time = 2000;
function check() {
  setTimeout(async () => {
    const hasUpdate = await checkUpdate();
    if (hasUpdate) {
      const res = comfirm('有新的脚本更新了,是否刷新页面?');
      if (res) {
       location.reload();
      }
    } else {
      check();
    }
  }, time);
}


Mr.Ding小于 1 分钟vuevue面试题
js 原生小效果

录屏

调用摄像头

选中朗读


Mr.Ding小于 1 分钟javascript