工具类页面最怕的是「你输入的内容被上传」。这条路可以直接堵死:能本地算的,全部本地算。

为什么坚持纯前端

  • 用户粘贴的是接口返回、密钥、日志,上传即泄露;
  • 本地计算没有网络往返,体验更快;
  • 服务端零压力,也不存在被刷接口的问题。

实现上的几个小坑

Base64 处理中文要先用 TextEncoder 转字节,直接 btoa('中文') 会抛异常:

const bytes = new TextEncoder().encode(text);
let binary = '';
bytes.forEach(b => binary += String.fromCharCode(b));
return btoa(binary);

二维码生成用纯 JS 实现,不需要任何外链图片接口,断网也能用。