精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

16 個日常開發必備的 JavaScript 代碼片段

開發 前端
在 Web 開發領域,開發效率是關鍵。為什么每次開始新項目時都要重新發明輪子?今天,本文匯總整理了一些方便日常開發使用的 JavaScript 代碼片段,超越了 Lodash 和 day.js 等常見代碼片段,提升你的開發效率,減少工作時長。

在 Web 開發領域,開發效率是關鍵。為什么每次開始新項目時都要重新發明輪子?今天,本文匯總整理了一些方便日常開發使用的 JavaScript 代碼片段,超越了 Lodash 和 day.js 等常見代碼片段,提升你的開發效率,減少工作時長。

讓我們開始吧!

1. 檢測元素外的點擊 

厭倦了復雜的檢查以查看點擊是否落在目標元素之外?使用 contains 方法簡化事情,以更簡潔的方式隱藏模式或折疊菜單:

document.addEventListener('click', function (evt) {
     // isClickedOutside is true if the clicked element is outside 'ele'
     const isClickedOutside = !ele.contains(evt.target);
   });

2. 快速打開官方網站 

需要查閱第三方庫的文檔或存儲庫?這些命令將快速帶您到達那里:

# Open the homepage
   npm home PACKAGE_NAME
   npm home react


# Open the repository
   npm repo PACKAGE_NAME
   npm repo react

3. 一次性事件監聽器 

對于只想處理一次的事件,可以利用 once 選項,而不是手動刪除監聽器:

const handler = function (e) {};
   ele.addEventListener('event-name', handler, { once: true });

4. 將秒數格式化為 HH:mm:ss 

顯示音頻或視頻的時長時,以用戶友好的 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')

對于相對時間顯示,如“幾秒前”或“5 分鐘前”,請探索 timeago.js 庫!

5. 將 URL 參數轉換為對象 

雖然 query-string 是一個流行的庫,但可以直接使用 URLSearchParams API 實現相同的功能:

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 }),
       {}
     )


// Get query parameters
   getUrlParams(location.query)
   // { a: ['1', '4'], b: '2', c: '3' }
   getUrlParams('?a=1&b=2&c=3&a=4') 
   // Get hash parameters
   getUrlParams(location.hash.split('?')[1])

6. 安全打開新標簽頁 

打開新標簽頁看似微不足道,但需要注意安全。在外部鏈接時,使用 noopener noreferrer 來防止惡意網站通過 window.opener.location 重定向您的網站。這同樣適用于 window.open。

<a target="_blank" rel="noopener noreferrer">...</a>


// window.open defaults rel to 'opener', so set it explicitly
   window.open('https://google.com', 'google', 'noopener,noreferrer')

警告:以下代碼片段存在安全漏洞!

<a target="_blank" rel="opener">
...</a>
window.opener.location = 'http://fake.website.here';

7. 預覽上傳的圖像 

使用 FileReader API 直接在瀏覽器中顯示用戶上傳圖像的預覽:

function readImage() {
     const fileReader = new FileReader()
     const file = document.getElementById('uploaded-file').files[0]


    if (file) {
       fileReader.readAsDataURL(file)
     }


     fileReader.addEventListener(
       'load',
       () => {
         const result = fileReader.result
         const resultContainer = document.getElementById('result')
         const img = document.createElement('img')
         img.src = result
         resultContainer.append(img)
       },
       { once: true }
     )
   }

8. 下載文件 

使用 <a> 標簽的下載屬性觸發下載。請記住,這對于同源文件可靠地起作用,并且在 IE 和移動設備上可能會受到限制:

<a href="/path/to/file" download>Download</a>

或者,使用 JavaScript 生成臨時的 <a> 標簽:

function download(url) {
     const link = document.createElement('a')
     link.download = 'file name'
     link.href = 'url'


     document.body.appendChild(link)
     link.click()
     document.body.removeChild(link)
}

對于靜態文件,在服務器上設置適當的 Content-Disposition 標頭也可以觸發下載:

Content-Disposition: attachment; filename="filename.jpg"

除了文件下載之外,還可以使用 Blob 對象和 createObjectURL 方法創建和下載文本或 JSON 文件:

const data = JSON.stringify({ 'message': 'Hello Word' });


const blob = new Blob([data], { type: 'application/json' });
 // Create a URL for the blob
 const url = window.URL.createObjectURL(blob);
 // Download the URL using the 'download' function above
 ...


 // Release the URL object
 window.URL.revokeObjectURL(url);

9. 記憶函數結果 

使用記憶法緩存計算量大的函數的結果:

const memoize = (fn) =>
     (
       (cache = Object.create(null)) =>
       (arg) =>
         cache[arg] || (cache[arg] = fn(arg))
     )()

10. 多行省略號...

使用 CSS 用省略號截斷文本內容,無論是單行還是多行:

.truncate {
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
   }


.truncate-multi {
     display: -webkit-box;
     -webkit-box-orient: vertical;
     -webkit-line-clamp: 2; 
     overflow: hidden;
   }

11. 使用 CSS 選擇最后 N 個元素 

使用 CSS 選擇器定位列表中的最后幾個元素:

// First three items
   li:nth-child(-n + 3) {
     text-decoration: underline;
   }


// Items 2 through 5
   li:nth-child(n + 2):nth-child(-n + 5) {
     color: #2563eb; 
   } 
   // Last two items
   li:nth-last-child(-n + 2) {
     text-decoration: line-through; 
   }

12. 自定義滾動條樣式 

增強滾動條的外觀和感覺:

::-webkit-scrollbar {
   width: 8px;
   height: 8px; 
}


::-webkit-scrollbar-track {
   border-radius: 10px;
   background-color: #fafafa; 
}


::-webkit-scrollbar-thumb {
   border-radius: 10px;
   background: rgb(191, 191, 191); 
}
/* Modern scrollbar API */
body {
   scrollbar-width: thin; 
   scrollbar-color: #718096 #edf2f7; 
}

請記住,滾動條樣式也可以使用 better-scroll 等庫來實現更高級的自定義。

13. 使用最大余數法精確計算百分比 

使用百分比時,四舍五入有時會導致總數不完全等于 100%。使用最大余數法進行準確分配:

// Outputs:  ['32.56%', '6.97%', '27.91%', '32.56%'] 
  getPercentWithPrecision([56, 12, 48, 56], 2)


function getPercentWithPrecision(valueList, precision) {
    const digits = Math.pow(10, precision)
    const sum = valueList.reduce((total, cur) => total + cur, 0)


    const votesPerQuota = valueList.map((val) => {
        return val / sum * 100 * digits
    })
    const seats = votesPerQuota.map((val) => {
      return Math.floor(val);
    });
    const remainder = votesPerQuota.map((val) => {
      return val - Math.floor(val)
    })


    let totalSeats = 100 * digits
    let currentSeats = votesPerQuota.reduce((total, cur) => total + Math.floor(cur), 0)


    while(totalSeats - currentSeats > 0) {
      let maxIdx = -1 
      let maxValue = Number.NEGATIVE_INFINITY 
      for(let i = 0; i < remainder.length; i++) {
        if (maxValue < remainder[i]) {
          maxValue = remainder[i]
          maxIdx = i
        }
      }


      seats[maxIdx]++
      remainder[maxIdx] = 0
      currentSeats++
    }


    return seats.map((val) => `${val / totalSeats * 100}%`)
  }

14. 限制并發請求 

處理大量請求時,管理并發以防止服務器不堪重負:

async function asyncPool(poolLimit, iterable, iteratorFn) {
    const ret = [];
    const executing = new Set();
    for (const item of iterable) {
      const p = Promise.resolve().then(() => iteratorFn(item, iterable));
      ret.push(p);
      executing.add(p);
      const clean = () => executing.delete(p);
      p.then(clean).catch(clean);
      if (executing.size >= poolLimit) {
        await Promise.race(executing);
      }
    }
    return Promise.all(ret);
  }


// Example usage 
  const timeout = i => new Promise(resolve => setTimeout(() => resolve(i), i));
  asyncPool(2, [1000, 5000, 3000, 2000], timeout).then(results => {
    console.log(results)
  })

15. 生成 UUID 

創建通用唯一標識符:

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

16. 在模態框打開時禁用正文滾動 

在模態框打開時防止背景內容滾動:

// Disable body scrolling 
  document.body.style.overflow = 'hidden';


// Re-enable scrolling
  document.body.style.removeProperty('overflow');

總結

以上就是我今天想與你分享的16個日常開發中會經常遇到的一些功能需求,希望通過閱讀本文內容能夠對你有所幫助,如果你還有其他問題,請在留言區給我留言,我們一起交流學習進步。

責任編輯:華軒 來源: web前端開發
相關推薦

2022-06-26 09:56:50

HttpUtil工具類模式

2021-09-03 10:08:53

JavaScript開發 代碼

2023-05-17 08:34:27

開發技術應用

2021-08-03 15:26:56

代碼智能阿里云

2011-09-06 15:16:42

PHP

2023-03-26 07:58:04

開發工具開源

2017-09-06 12:42:45

AndroidGradle開發技巧

2011-07-11 10:16:07

JavaScript

2023-05-22 15:53:06

JavaScrip代碼素材

2023-10-10 16:16:05

JavaScrip開發

2023-10-09 14:48:06

2022-07-06 08:39:33

Python代碼

2021-10-29 11:05:34

JavaScript代碼字符串

2024-06-21 11:02:16

2023-12-26 14:28:08

JavaScript開發

2023-06-16 16:34:25

JavaScripWeb 開發

2023-11-03 16:02:00

JavaScript開發

2024-01-04 16:46:58

JavaScript開發

2017-01-10 19:06:39

Android日常開發技術經驗

2022-06-08 08:55:15

JavaScript代碼前端
點贊
收藏

51CTO技術棧公眾號

国内精品久久久久久久影视蜜臀| 国产日韩欧美中文在线| 久久久国产综合精品女国产盗摄| 国产91色在线免费| 美国一级片在线观看| 秋霞午夜一区二区三区视频| 午夜精品一区二区三区免费视频| 欧美日韩成人一区二区三区 | 婷婷国产在线综合| 日韩av电影免费在线| 国产青青草视频| 一本色道久久综合亚洲精品不| 亚洲欧美日韩网| 精品国产乱码久久久久久1区二区| 538在线观看| 国产精品电影一区二区三区| 国产欧美一区二区三区另类精品| 在线观看免费视频a| 亚洲性色视频| 色偷偷噜噜噜亚洲男人| 黄色网址在线视频| 91成人福利社区| 色综合色综合色综合色综合色综合 | 国产剧情久久久| 母乳一区在线观看| 欧美激情亚洲自拍| 精品在线观看一区| 在线成人动漫av| 精品国产青草久久久久福利| 亚洲欧美视频二区| 裤袜国产欧美精品一区| 亚洲永久免费av| 国产精品美女在线播放| 免费一级在线观看播放网址| 成人av中文字幕| 亚洲自拍偷拍视频| 亚洲手机在线观看| 日韩成人一级大片| 日本欧美爱爱爱| 日韩久久久久久久久| 午夜精品电影| 欧美精品免费看| 日韩一级片av| 亚洲老妇激情| 久久精品国亚洲| 亚洲综合久久av一区二区三区| 精品久久国产| 亚洲香蕉成视频在线观看 | 国内老熟妇对白hdxxxx| 韩国av一区二区三区在线观看| 国产精品啪视频| 中文字幕在线日亚洲9| 喷白浆一区二区| 国产精品老女人视频| 国产无遮挡又黄又爽又色视频| 亚洲影院在线| 国产成人精品久久二区二区91| 成人公开免费视频| 日韩精品1区2区3区| 国产精品精品久久久| 青青艹在线观看| 欧美96一区二区免费视频| 国产日本欧美在线观看| 国产精品久久久久精| 国产二区国产一区在线观看| 成人资源av| 午夜av免费在线观看| 久久久久国色av免费看影院| 日韩欧美一区二区三区久久婷婷| 午夜在线小视频| 亚洲精品视频免费看| 女同性恋一区二区| av手机免费在线观看| 欧美性猛交xxxx乱大交3| 国产自偷自偷免费一区| 伊人久久一区| 欧美成人精品福利| 爱爱的免费视频| 不卡中文字幕| 欧美日韩爱爱视频| 激情五月色婷婷| 日本大胆欧美人术艺术动态| 成人免费在线视频网址| 亚洲AV午夜精品| 91香蕉视频在线| 亚洲精品在线视频观看| 青春草在线视频| 一本一道久久a久久精品 | 秋霞在线一区二区| av资源一区| 欧美性色综合网| 麻豆精品国产传媒| 国产剧情在线观看一区| 久热99视频在线观看| 日本一级黄色录像| 免费欧美日韩国产三级电影| 国产69精品久久久久9999apgf| 亚洲欧美日韩免费| 亚洲天天做日日做天天谢日日欢| av免费看网址| 久久久久伊人| 亚洲国产天堂久久综合| 精品在线观看一区| 国产精品亚洲欧美| 91色p视频在线| 久久电影中文字幕| 艳妇臀荡乳欲伦亚洲一区| 国产精品少妇在线视频| 97se亚洲| 最好看的2019的中文字幕视频| 日韩免费一二三区| 久久精品国产一区二区三| 国产欧美韩日| h片在线免费| 在线观看成人小视频| 亚洲无人区码一码二码三码| 日韩久久久久| 日韩av电影国产| 东京干手机福利视频| 国产精品传媒视频| 日韩毛片在线免费看| youjizz欧美| 久久中文字幕在线视频| 波多野结衣网站| 91丨国产丨九色丨pron| 女人被男人躁得好爽免费视频| 成人一区视频| 亚洲天堂男人天堂| 国产www在线| 成人午夜激情视频| 91嫩草国产丨精品入口麻豆| 成人精品高清在线视频| 亚洲男人天堂九九视频| 久久精品国产亚洲av香蕉| 黑人巨大精品欧美黑白配亚洲 | 久久久久午夜电影| 国产成人一区二区在线| 亚洲人妻一区二区三区| 亚洲国产视频直播| 黑人无套内谢中国美女| 欧美1区2区3区| 1卡2卡3卡精品视频| 麻豆视频在线观看免费| 欧美精品自拍偷拍| 成人做爰视频网站| 激情综合一区二区三区| 亚洲一区三区电影在线观看| 视频精品导航| 少妇高潮久久77777| 中文字幕黄色av| 国产精品国产三级国产普通话蜜臀 | 国产乱码精品1区2区3区| www.午夜色| 99视频有精品高清视频| 日韩视频免费在线观看| 91久久国语露脸精品国产高跟| 国产精品久久久久久久久免费樱桃 | 自拍偷拍视频在线| 精品99re| 久久全球大尺度高清视频| 男人天堂网在线视频| 午夜电影一区二区| 欧美另类z0zx974| 全国精品久久少妇| 国产91av视频在线观看| 国产美女视频一区二区| 欧美精品video| 天天干视频在线| 色综合久久88色综合天天6 | 一区二区高清免费观看影视大全| 三级网站免费看| 1024成人| 日韩亚洲不卡在线| 电影一区中文字幕| 性视频1819p久久| 成年人视频网站在线| 在线电影一区二区三区| 久青草免费视频| 久久久久久电影| 天堂在线一区二区三区| 亚洲午夜在线| 日本亚洲自拍| 久久久久久久久成人| 97在线看福利| 在线毛片网站| 精品欧美一区二区在线观看| 特级毛片www| 亚洲天堂2016| 成年人在线观看av| 国产精一区二区三区| 人妻精品无码一区二区三区 | 91免费看视频| 国产精品自拍视频在线| 尹人成人综合网| 日韩欧美手机在线| 电影一区二区在线观看| 国产精品成人一区二区三区吃奶| av免费看在线| 亚洲午夜久久久影院| 亚洲成人第一区| 欧洲精品中文字幕| 精品在线视频观看| 国产精品乱码人人做人人爱| 中国免费黄色片| 精品一区二区三区在线播放| 免费看国产曰批40分钟| 天天综合国产| 欧美日韩一区在线观看视频| 中文字幕一区二区三区四区久久| 国产精品九九九| 蜜桃视频m3u8在线观看| 另类天堂视频在线观看| 国产剧情在线观看| 亚洲电影av在线| 国产乱人乱偷精品视频a人人澡| 欧美日在线观看| 国产在线综合网| 亚洲人xxxx| 亚洲欧美另类日本| 国产婷婷色一区二区三区在线| 亚洲熟女乱综合一区二区| 久久精品噜噜噜成人av农村| 国产91在线免费| 极品少妇一区二区三区| 8x8x华人在线| 99热精品久久| 午夜精品一区二区在线观看| 亚洲欧洲av| 久久爱av电影| 久久婷婷国产| 国产精品初高中精品久久| 成人在线日韩| 成人免费激情视频| 久久久免费人体| 国产精品综合不卡av| 蜜桃成人精品| 国产成人精品综合| 成人香蕉视频| 琪琪第一精品导航| 亚洲黄色网址| 日本久久久a级免费| 精品91久久| 国产99久久久欧美黑人| 26uuu亚洲电影| 热re99久久精品国产66热| 欧美巨大丰满猛性社交| 久久久亚洲精选| h片在线观看视频免费| 久久久久久久999| av在线不卡免费| 69久久夜色精品国产7777| 国产一二三在线| 91超碰caoporn97人人| 麻豆网站免费在线观看| 69久久夜色精品国产69乱青草| 久久青草伊人| 国产99久久精品一区二区 夜夜躁日日躁| 性爽视频在线| 国产精品欧美一区二区| 亚洲人成777| 91蜜桃网站免费观看| jizz性欧美23| 牛人盗摄一区二区三区视频| 欧美丝袜一区| 男女激烈动态图| 日韩视频二区| wwwwww.色| 国产一区二区三区黄视频| 久久久无码人妻精品无码| 不卡一区二区中文字幕| 青青草福利视频| 国产精品电影院| 精品无码m3u8在线观看| 婷婷开心激情综合| 探花国产精品一区二区| 在线成人免费视频| 蜜桃视频在线观看www| 亚洲美女激情视频| 在线激情网站| 国精产品一区一区三区有限在线| 美女18一级毛片一品久道久久综合| 国产精品高清在线| 精品国产一区二区三区2021| 国产乱子伦精品| 欧美先锋资源| 天堂8在线天堂资源bt| 亚洲欧美网站| 精品亚洲视频在线| aaa亚洲精品| 韩国一级黄色录像| 精品国产999| 国产精品久久久久久无人区| 亚洲国产精品电影| 亚洲xxxxxx| 欧美一性一乱一交一视频| 日韩午夜电影免费看| 精品国产一区二区三区久久久久久| 精品国产精品国产偷麻豆| 少妇一晚三次一区二区三区| 美女黄色成人网| 91丨porny丨九色| 国产亚洲一二三区| 久久伊人成人网| 欧美日韩精品一区二区| 亚洲 美腿 欧美 偷拍| 久久精品在线视频| 香蕉视频亚洲一级| 国产精品国产三级欧美二区| 日韩欧美综合| av天堂永久资源网| 国产99精品在线观看| 99久久99久久精品免费| 欧美日韩国产精品一区二区三区四区| 91丨九色丨蝌蚪丨对白| 亚洲片av在线| 国产污视频在线播放| 97人人模人人爽视频一区二区| 日韩黄色大片| 欧美一级黄色片视频| 99热在这里有精品免费| a级黄色片免费看| 欧美日韩国产一级二级| 春暖花开成人亚洲区| 欧美做受高潮1| 国产精品黄网站| 亚洲熟妇无码av在线播放| 狠狠狠色丁香婷婷综合激情| 老司机深夜福利网站| 在线观看91精品国产入口| 婷婷国产在线| 6080yy精品一区二区三区| 国产无遮挡裸体免费久久| 日本a级片在线播放| 国产一区二区成人久久免费影院| 欧美一区二区三区粗大| 一本色道久久综合狠狠躁的推荐| 天堂av资源网| 91精品国产色综合| 国产一区二区三区不卡av| 国产欧美精品aaaaaa片| 国产成人精品三级麻豆| 天天看片中文字幕| 欧美一级国产精品| 尤物在线网址| 国产经品一区二区| 亚洲精品激情| 成人无码www在线看免费| 天天色图综合网| 日本电影一区二区在线观看| 欧美在线一级视频| 国内成人精品| 青青草原国产在线视频| 17c精品麻豆一区二区免费| 国产精品无码在线播放| 色综合久久悠悠| 北条麻妃一区二区三区在线| 成人网站免费观看入口| 97精品久久久午夜一区二区三区 | 黄色激情小视频| 91精品国产一区二区三区蜜臀| 成人日韩欧美| 高清视频一区二区三区| 99在线热播精品免费99热| av直播在线观看| 欧美在线|欧美| 免费黄色网页在线观看| av在线不卡一区| 国产欧美午夜| 最新中文字幕av| 91精品啪在线观看国产60岁| 久色国产在线| 欧美久久久久久一卡四| 麻豆精品久久久| 免费中文字幕在线观看| 日韩大片免费观看视频播放| 欧美暴力调教| 超碰人人爱人人| 久久久久久久精| jizz中国少妇| 欧美孕妇与黑人孕交| 日韩欧美午夜| 丰满岳乱妇一区二区| 91福利社在线观看| caoporn免费在线| 久久婷婷开心| 国产一区二区三区免费观看| 伊人手机在线视频| 久久在线视频在线| 亚洲精品播放| gogo亚洲国模私拍人体| 色久优优欧美色久优优| 日本小视频在线免费观看| 日本一区二区三区视频免费看| 国产精品1区二区.| 精人妻无码一区二区三区| 久99九色视频在线观看| 久久91麻豆精品一区| 性猛交╳xxx乱大交| 欧美日韩精品二区第二页| av在线播放资源|