自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

八個(gè)超級(jí)實(shí)用的前端代碼片段,總要用得上的!

開(kāi)發(fā) 前端
相信大家都用過(guò)?addEventListener吧?你監(jiān)聽(tīng)后想要解除需要用到?removeEventListener,但是如果你只是想要一次性監(jiān)聽(tīng)的話,可以傳入第三個(gè)參數(shù)。

今天給大家分享一些在前端開(kāi)發(fā)中,比較實(shí)用的代碼片段,希望大家能用得上!

1、檢測(cè)點(diǎn)擊元素外部

比如你想要點(diǎn)擊彈窗外部去關(guān)閉彈窗,或者 Vue 的自定義指令 clickoutside,都是利用了下面這個(gè)代碼片段。

圖片圖片

2、一次性事件監(jiān)聽(tīng)

相信大家都用過(guò) addEventListener吧?你監(jiān)聽(tīng)后想要解除需要用到 removeEventListener,但是如果你只是想要一次性監(jiān)聽(tīng)的話,可以傳入第三個(gè)參數(shù)。

圖片圖片

3、手動(dòng)解除事件監(jiān)聽(tīng)

還是 addEventListener,如果你不想使用 removeEventListener 去解除監(jiān)聽(tīng)的話,你也可以使用 AbortController + signal 去進(jìn)行手動(dòng)解除監(jiān)聽(tīng)。

圖片圖片

4、控制并發(fā)數(shù)

現(xiàn)在前端中使用異步操作已經(jīng)是常態(tài),更別說(shuō)異步請(qǐng)求了,而當(dāng)異步請(qǐng)求并發(fā)量比較高的時(shí)候,為了節(jié)約網(wǎng)絡(luò)資源提高用戶體驗(yàn),我們需要控制并發(fā)數(shù)。

圖片圖片

limitFn 的具體實(shí)現(xiàn)我放在下面了。

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

也就是生成一個(gè)唯一的 uuid,其實(shí)現(xiàn)在很多庫(kù)都可以做,比如 lodash,當(dāng)然你也可以自己寫一個(gè)。

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

6、格式化時(shí)分秒

如果你想要把時(shí)間格式化成 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 的參數(shù)

可以將 URL 上的參數(shù)提取出來(lái),變成一個(gè)對(duì)象。

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、打開(kāi)彈窗時(shí)禁止頁(yè)面滾動(dòng)

當(dāng)我們打開(kāi)彈窗時(shí),我們不希望整個(gè)頁(yè)面還能滾動(dòng),那么可以在打開(kāi)彈窗時(shí)去設(shè)置頁(yè)面的滾動(dòng)樣式。

圖片 圖片

責(zé)任編輯:武曉燕 來(lái)源: 前端之神
相關(guān)推薦

2011-07-14 10:07:19

PHP

2024-04-09 00:00:00

Java代碼片段

2024-10-29 10:02:12

圖片自動(dòng)化腳本

2022-03-18 21:27:36

Python無(wú)代碼

2022-12-01 16:53:27

NPM技巧

2024-03-27 14:06:58

Python代碼開(kāi)發(fā)

2015-10-08 08:53:46

PHP代碼片段

2011-07-07 10:35:53

htaccess

2015-11-02 09:25:07

jQuery代碼片段

2021-10-29 11:05:34

JavaScript代碼字符串

2012-01-17 13:54:02

PHP

2021-10-31 07:36:17

前端JavaScript編程

2024-08-27 12:18:23

函數(shù)Python

2023-11-13 10:11:49

開(kāi)源前端

2023-06-16 16:34:25

JavaScripWeb 開(kāi)發(fā)

2023-11-03 16:02:00

JavaScript開(kāi)發(fā)

2024-01-04 16:46:58

JavaScript開(kāi)發(fā)

2020-11-16 16:04:42

CSS設(shè)計(jì)代碼

2022-07-25 15:21:50

Java編程語(yǔ)言開(kāi)發(fā)

2022-12-16 17:01:15

Web API開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)