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

yumo6662周前 (04-23)技术文章10

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、打开弹窗时禁止页面滚动

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

相关文章

最好用的滚动条美化插件——jQuery.NiceScroll

nicescroll 滚动条插件是一个非常强大的基于 jQuery 的滚动条插件,不需要增加额外的css,几乎全浏览器兼容。ie6+,实现只需要一段代码,侵入性非常小,样式可完全自定义,支持触摸事件,...

20 个让人惊叹的 JavaScript 单行代码技巧,效率瞬间提升

掌握一些简洁有力的单行代码技巧可以大幅提高编码效率,让JavaScript代码更加优雅。分享 20 个实用且令人惊叹的 JavaScript 单行代码,可能为你的工作带来便利。1. 数组去重const...

CSS view():JavaScript 滚动动画的终结

前言CSS view () 方法可能会标志着 JavaScript 在制作滚动动画方面的衰落。如何用 5 行 CSS 代码取代 50 多行繁琐的 JavaScript,彻底改变网页动画每次和 UI/U...

小程序学习日志7:可滚动的视图区域组件(滚动条)

导读经过这段日子的学习,大家对小程序的了解多了多少呢?我们这段时间学了很多组件的用法,以及这些组件的属性和属性的合法值,图片、文字、块,还了解了不少的样式代码和小程序的基本知识。我们今天来讲一个可滚动...

WINCC如何制作滚动播放的文字

首先,我们先看一下文字播放的效果。如视频所示,文字呈跑马灯的形式进来左右来回滚动,那么在wincc中,如果制作这样的效果呢?带着赖工,学会它!第一步:首先在页面合适的位置,新建一个,静态文本,属性见图...

Selenium 滚动页面至元素可见的方法,看完直接可上手了!

今天为大家带来的内容是:Selenium 滚动页面至元素可见的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧!滚动页面  在...