禁止用户调试网站

禁止用户调试网站

web想禁止调试,没有绝对安全的方式

妙用1 debugger

示例

setInterval执行debugger,打开控制台就会暂停代码

1
2
3
4
5
6
7
8
(() => {
function ban() {
setInterval(() => {
debugger;
}, 50);
}
ban();
})();

水塘抽样算法

目的

水塘抽样的目标是从一个很大的或未知大小的数据集中随机选取k个样本。

特点:不要求一次性读取所有数据,也不需要知道数据总量,能保证每个元素被选中的概率相等


npm script

串行 or 并行

并行跑命令:&,在命令结尾加& wait,可以使用ctrl c关闭命令行来结束进程
串行跑命令:&&

控制日志输出

  • –silent(-s):输出尽可能少的日志
  • –verbose:显示尽可能多的状态,日志级别的输出,用于调试

Vueuse源码解读

本文不会放api的用法,建议先看看是怎么用的

写本篇文章时间间隔较长,所以代码版本不一

项目架构

采用monorepo的形式,项目目录下有多个子项目,下面放了资料链接和几处用法,其他本文不多赘述。

现代前端工程为什么越来越离不开 Monorepo?
为什么使用pnpm可以光速建立好用的monorepo(比yarn/lerna效率高)
pnpm workspace文档


【源码解读】模块懒加载(在使用时)

在看为什么vue文档能做到新内容可用更新(利用service worker)的时候,顺便看到了update-notifier(提示版本更新的库,实现方式:定时检查npm上的版本和本地package.json的版本对比,有差异就提示用户更新),看update-notifier源码的时候发现有很多lazyImport,觉得挺新奇,于是有了这篇文章

思想

为了提高应用的启动时间,在没有用到仓库的额外功能时不加载模块,所以将模块加载延迟到使用之前


跨平台的拖拽

crossvent:封装跨平台事件绑定的库

跨平台的触摸事件

利用crossvent封装绑定跨平台拖拽事件的方法touchy,以便支持移动端和pc端

根据环境获取的触摸事件名,用懒加载的方式替换掉touchy函数,之后绑定事件不需要再判断