首頁 > web前端 > css教學 > 值得檢查的前端程式碼片段

值得檢查的前端程式碼片段

Patricia Arquette
發布: 2025-01-26 10:06:10
原創
819 人瀏覽過

Front-End Code Snippets Worth Checking Out

日常開發中,我們都會累積一些常用的程式碼片段,可以直接複製貼上到各種專案中使用,非常方便。如果你接手過別人的項目,可能會注意到一些專案中存在相同的工具方法,這些就是先前開發者累積的常用程式碼片段。

如今前端社群發展成熟,lodash、dayjs 等優秀函式庫能滿足我們處理陣列、日期等的需求,本文不會重複這些常見的片段。

  1. 偵測元素外部點擊

隱藏彈出框或收起下拉式功能表時,使用 contains 方法取代逐層檢查。

<code class="language-javascript">// 代码示例 (此处省略)</code>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
  1. 快速開啟官方網站

查看第三方函式庫的首頁或程式碼倉庫,可以使用這些 npm 指令:

開啟首頁

npm home PACKAGE_NAME

例如,對於 React

npm home react

開啟代碼倉庫

npm repo PACKAGE_NAME

例如,對於 React

npm repo react

  1. 一次性事件監聽器

除了在事件函數中移除監聽器,還可以使用 once 參數。

<code class="language-javascript">// 代码示例 (此处省略)</code>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
  1. 將秒格式化為 HH:mm:ss

在顯示音訊/視訊時長等場景下,可以這樣格式化秒數:

<code class="language-javascript">const formatSeconds = (s) =>
  [parseInt(s / 60 / 60), parseInt((s / 60) % 60), parseInt(s % 60)].join(":").replace(/\b(\d)\b/g, "0");
const seconds = 3661;
console.log(formatSeconds(seconds));</code>
登入後複製
登入後複製

要顯示類似「剛剛」的相對時間,可以嘗試 timeago.js 函式庫。

  1. 將 URL 參數轉換為物件

無需使用 query-string 函式庫,直接使用 URLSearchParams API:

<code class="language-javascript">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 }),
    {}
  );
const query = "?a=1&b=2&a=3";
console.log(getUrlParams(query));</code>
登入後複製
登入後複製
  1. 開啟新分頁

開啟外部連結時,設定 rel="noopener noreferrer" 以避免安全風險。

<code class="language-html"><a href="https://example.com" rel="noopener noreferrer" target="_blank">打开</a></code>
登入後複製
登入後複製
<code class="language-javascript">function openNewTab() {
  window.open("https://example.com", "newTab", "noopener,noreferrer");
}</code>
登入後複製
  1. 顯示上傳的圖片

使用 FileReader API 的 readAsDataURL 方法顯示上傳的圖片。

<code class="language-javascript">// 代码示例 (此处省略)</code>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
  1. 檔案下載

使用 標籤的 download 屬性可以觸發下載,但它有一些限制。

<code class="language-html"><a download="" href="https://www.php.cn/link/8b89afaf8e00e0a46ea4d76ac473b1a2">下载</a></code>
登入後複製
<code class="language-javascript">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);
}</code>
登入後複製

你也可以在伺服器端設定回應頭,或是在瀏覽器端使用 Blob 和 createObjectURL。

<code class="language-javascript">const data = JSON.stringify({ message: "Hello" });
const blob = new Blob([data], { type: "application/json" });
const url = window.URL.createObjectURL(blob);
download(url);
window.URL.revokeObjectURL(url);</code>
登入後複製
  1. 快取結果

為複雜的計算快取函數結果。

<code class="language-javascript">const memoize = (fn) =>
  (
    (cache = Object.create(null)) =>
    (arg) =>
      cache[arg] || (cache[arg] = fn(arg))
  )();
// 代码示例 (此处省略)</code>
登入後複製
  1. 多行省略號

使用 CSS 將文字截斷為省略號,適用於單行或多行。

<code class="language-css">.truncate-single {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.truncate-multi {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}</code>
登入後複製
  1. 選最後幾個元素

使用 CSS 選擇器定位特定元素。

<code class="language-css">li:nth-child(-n + 3) {
  text-decoration: underline;
}
// 代码示例 (此处省略)</code>
登入後複製
  1. 捲軸樣式

使用 CSS 或 better-scroll 等第三方函式庫自訂捲軸樣式。

<code class="language-javascript">// 代码示例 (此处省略)</code>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
  1. 百分比計算-最大餘數法

使用最大餘數法確保百分比總和等於 1。

<code class="language-javascript">// 代码示例 (此处省略)</code>
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
  1. 限制並發

在進行大量請求時,限制並發請求數。

<code class="language-javascript">const formatSeconds = (s) =>
  [parseInt(s / 60 / 60), parseInt((s / 60) % 60), parseInt(s % 60)].join(":").replace(/\b(\d)\b/g, "0");
const seconds = 3661;
console.log(formatSeconds(seconds));</code>
登入後複製
登入後複製
  1. UUID 生成

使用此代碼生成唯一標識符。

<code class="language-javascript">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 }),
    {}
  );
const query = "?a=1&b=2&a=3";
console.log(getUrlParams(query));</code>
登入後複製
登入後複製
  1. 打開模態框並阻止 body 滾動

打開模態框時阻止 body 滾動。

<code class="language-html"><a href="https://example.com" rel="noopener noreferrer" target="_blank">打开</a></code>
登入後複製
登入後複製

原文鏈接:https://www.php.cn/link/d9d838896ca0a5e16e7efa2439943fbd

以上是值得檢查的前端程式碼片段的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板