首頁 > web前端 > js教程 > TIL:標記函數/標記模板文字

TIL:標記函數/標記模板文字

Barbara Streisand
發布: 2025-01-09 08:34:40
原創
939 人瀏覽過

TIL: Tag Function / Tagged Template Literals

概述 ?

標記函數,也稱為標記模板文字,是 ES6(2015)中引入的模板文字的高級功能。它們可以更好地控制模板文字的處理方式,允許自訂格式、解析甚至驗證。

標記模板文字的一個流行用例是在 GraphQL 中動態建立查詢字串。


句法

定義

標記範本文字是「標記函數」和範本文字的組合。標籤函數接收文字的字串和插值作為參數,從而啟用自訂處理。

這是一個基本範例:

const bar = "var bar";

function tag(strings, ...values) {
  console.log(strings); // Array of string literals
  console.log(values);  // Array of interpolated values
}
登入後複製

用法

tag`foo ${bar} baz`;

// Output:
// ['foo ', ' baz']  // Array of strings
// ['var bar']       // Array of values
登入後複製

使用案例

1.國際化(i18n)

標記範本文字可用於動態處理字串以進行本地化。

範例:

function i18n(strings, ...values) {
  const translations = {
    "Hello, ": "Hola, "
  };

  return strings.reduce((acc, str, i) => {
    const translatedStr = translations[str] || str; // Translate if possible
    return acc + translatedStr + (values[i] || '');
  }, '');
}

const name = "Alice";
const result = i18n`Hello, ${name}!`;
console.log(result);
// Output: "Hola, Alice!"
登入後複製

2.GraphQL

在 GraphQL 中,標記模板文字廣泛用於定義和操作查詢字串。

範例:

const query = gql`
  query {
    user(id: 1) {
      name
      age
    }
  }
`;
登入後複製

3. 使用標記範本文字處理參數

標記範本文字也可以透過將附加價值傳遞給標籤函數並在範本文字中應用函數來處理參數。

範例:

function tagged(baseValue) {
  return function(strings, ...functions) {
    return strings.reduce((acc, str, i) => {
      const value = typeof functions[i] === 'function' ? functions[i](baseValue) : '';
      return acc + str + value;
    }, '');
  };
}

const result = tagged(2)`foo${n => n * 0}bar${n => n * 1}baz${n => n * 2}`;
console.log(result);
// Output:
// "foo0bar2baz4"

登入後複製

討論和見解?

標記範本文字支援使用自訂邏輯進行動態字串處理,使其成為查詢建置、國際化和輸入清理等用例的理想選擇。它們提高了程式碼的可讀性和可維護性,特別是在需要高級字串操作的場景中。


參考

  • MDN 網路文件:標記範本
  • ES6 規範
  • GraphQL 官方文件
  • 標記模板文字の TypeScript 推論

以上是TIL:標記函數/標記模板文字的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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