百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

分享 8 个超级实用的前端代码片段,总要用得上的!

qiyuwang 2025-04-06 20:33 6 浏览 0 评论

1、检测点击元素外部

比如你想要点击弹窗外部去关闭弹窗,或者 Vue 的自定义指令 clickoutside,都是利用了下面这个代码片段

2、一次性事件监听

相信大家都用过 addEventListener吧?你监听后想要解除需要用到 removeEventListener,但是如果你只是想要一次性监听的话,可以传入第三个参数

3、手动解除事件监听

还是 addEventListener,如果你不想使用 removeEventListener 去解除监听的话,你也可以使用 AbortController + signal 去进行手动解除监听

4、控制并发数

现在前端中使用异步操作已经是常态,更别说异步请求了,而当异步请求并发量比较高的时候,为了节约网络资源提高用户体验,我们需要控制并发数

limitFn 的具体实现我放在下面了

const limitFn = (limit) => {
  const queue = [];
  let activeCount = 0;

  const next = () => {
    activeCount--;

    if (queue.length > 0) {
      queue.shift()();
    }
  };

  const run = async (fn, resolve, ...args) => {
    activeCount++;

    const result = (async () => fn(...args))();


    try {
      const res = await result;
      resolve(res);
    } catch { }

    next();
  };

  const enqueue = (fn, resolve, ...args) => {
    queue.push(run.bind(null, fn, resolve, ...args));

    if (activeCount < limit queue.length> 0) {
      queue.shift()();
    }
  };

  const generator = (fn, ...args) =>
    new Promise((resolve) => {
      enqueue(fn, resolve, ...args);
    });

  return generator;
};

5、生成唯一ID

也就是生成一个唯一的 uuid,其实现在很多库都可以做,比如 lodash,当然你也可以自己写一个

const uuid = (a) =>
  a
    ? (a ^ ((Math.random() * 16) >> (a / 4))).toString(16)
    : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, uuid)

6、格式化时分秒

如果你想要把时间格式化成 HH:mm:ss 这样的话

const formatSeconds = (s) =>
  [parseInt(s / 60 / 60), parseInt((s / 60) % 60), parseInt(s % 60)]
    .join(':')
    .replace(/\b(\d)\b/g, '0$1')

7、提取 URL 的参数

可以将 URL 上的参数提取出来,变成一个对象

const getUrlParams = (query) =>
  Array.from(new URLSearchParams(query)).reduce(
    (p, [k, v]) =>
      Object.assign({}, p, { [k]: p[k] ? (Array.isArray(p[k]) ? p[k] : [p[k]]).concat(v) : v }),
    {}
  )

8、打开弹窗时禁止页面滚动

当我们打开弹窗时,我们不希望整个页面还能滚动,那么可以在打开弹窗时去设置页面的滚动样式

相关推荐

微软宣布将于10月份关闭OneDrive组功能

【巴士数码】微软已经宣布将在今年10月关闭OneDrive的组功能。一年多之前,微软已经关闭了用户在OneDrive当中创建组的功能。大大多数用户会发现共享文件夹是一种合适的替代品,而且由于这一点,O...

玩转Win10任务栏:从基础设置到效率神器的全攻略

一、基础操作:解锁任务栏的「隐藏布局」...

文档以只读模式打开的原因及解决方法

当文档以只读模式打开时,可能由多种原因导致。以下是详细的原因分析与对应解决方法,您可根据实际情况灵活选择操作。一、文件属性设置问题(一)Windows系统在Windows系统中,若文件属性被标记...

Windows系统的优化(windows优化设置)

今天给大家讲一讲系统的图标和一些基本的优化。安装了原版系统之后有很多地方需要优化比如桌面图标小箭头,盾牌,休眠占用内存,关闭通知栏。首先我们打开软件这款软件以前就讲到过就是dism++软件,他可以清理...

Win 10偷偷传送用户隐私至微软(win10设备隐私)

自推出以来Win10不断被揭发盗取用户带宽、泄漏WiFi密码等各式各样的私隐问题,令不少网络专家开始留意Win10还隐藏了多少类似的私隐漏洞。最近再有人发现Win10部分功能静静...

OneDrive逆势下调存储空间,不限量存储被取消

日前,微软在周一晚发布的博客文章中表示,由于部分用户存滥用储存功能,所以该公司将取消不限量OneDrive存储服务。不限量用户的最大存储空间将被下调至1TB,定价为6.99美元,对于已存储较多文件和内...

Win10中那些被微软取消的功能(微软公司从9日起停止对windows8的主流服务支持)

很多用户在使用Win10的时候,都会发现一些在Win7系统中的功能被取消了,有的时候想找也找不到。那么到底是那些过去的功能在Win10中被取消了呢?下面我们就简单梳理一下,并且告诉大家解决的办法。Wi...

微软推Win11 Dev 26200.5570预览版:语音打字上线脏话过滤选项

IT之家4月26日消息,微软公司昨日(4月25日)发布博文,邀请Dev频道的WindowsInsider项目成员,测试适用于Windows1124H2的KB50556...

微软VSCode商店发现9款挖矿恶意插件,已安装超30万次

IT之家4月8日消息,科技媒体bleepingcomputer昨日(4月7日)发布博文,报道称安全专家在微软VSCode扩展商店中,发现了9款伪装成开发工具的恶意插件。这些插...

微软Windows 11开始菜单大改版!(windows 11 开始菜单)

根据最新消息,微软正在对Windows11的开始菜单进行重大改版,这一更新将彻底改变其布局和功能。Windows11的开始菜单将从现有的多栏布局改为单栏可滚动视图,所有固定图标和已安装应用都将集中...

OneDrive无限存储空间取消 免费降至5GB

2015-11-0313:35:06作者:徐鹏北京时间11月3日消息,微软在一篇博客文章中称,将取消OneDrive存储服务的不限量空间,原因是部分用户有滥用问题。OneDrive无限存储空间取消...

省出电脑C盘空间!微软悄悄更新:OneDrive终于能卸载了

快科技3月12日消息,近日,微软悄悄地在官方更新了关闭、禁用、卸载Windows自带软件OneDrive的方法。微软Windows系统自带了很多软件和功能,其中有很多我们可能永远都用不上。但这些软件还...

微软关闭OneDrive新建组群功能(windows关闭onedrive)

微软的OneDrive云端储存服务能够让你创建组群(Group),这样当你和团队成员共同从事一个项目的时候能够通过云端协作提升效率,并且组群的文档储存空间还将同你标准的OneDrive分割独立开来。不...

微软为何取消OneDrive无限制容量存储?被75TB占用吓坏

那么为什么微软会取消Office365的无限OneDrive存储呢?“自推出Office365订阅无限制存储服务以来,一小部分用户开始备份多台PC设备,存储众多电影收藏合集和DVR录像。在某些情况下...

Win11必关的5个设置!关闭后电脑流畅到起飞,操作简单不藏私!

Windows11虽然界面炫酷,但默认设置中隐藏了不少“拖慢电脑”的坑!尤其是老电脑用户,用久了卡顿、开机慢、反应迟钝……其实只需关闭几个鸡肋功能,就能让电脑提速50%以上!...

取消回复欢迎 发表评论: