专栏名称: 前端之神
一位前端小菜鸡,写过300多篇原创文章,全网有5w+个前端朋友,梦想是成为”前端之神“~
目录
相关文章推荐
普象工业设计小站  ·  亚朵酒店的控温被,是怎么火起来的? ·  16 小时前  
普象工业设计小站  ·  《哪吒2》里的「$」符号在隐射什么?这样的细 ... ·  20 小时前  
创意铺子  ·  5 秒带走牙缝肉渣,99 ... ·  昨天  
普象工业设计小站  ·  印度女孩称“印度高铁领先中国10年”,直到她 ... ·  昨天  
51好读  ›  专栏  ›  前端之神

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

前端之神  · 公众号  ·  · 2025-01-08 08:40

正文

前言

大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心~

今天给大家分享一些在前端开发中,比较实用的代码片段,希望大家能用得上~

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






请到「今天看啥」查看全文