深入淺出browserlist

一、什麼是browserlist

在開發中,為了讓代碼能夠在不同的瀏覽器中運行,程序員們需要寫很多瀏覽器兼容代碼。而browserlist提供一種簡單的方式來管理和自動化處理不同瀏覽器的需求。

Browserlist 是一種工具,它是一份定義 browser targets 的字符串列表。這些列表可以支持的瀏覽器名稱(Chrome),版本(70.2),或我想要支持的特定平台(iOS >= 7)。

二、browserlist的安裝和使用

通過 npm 將 browserlist 安裝到項目中:

npm install --save-dev browserlist

或者全局安裝:

npm install --global browserlist

安裝完成後,在項目根目錄新建一個 .browserlistrc 文件,裏面包含了需要兼容的瀏覽器列表信息。例如:

last 2 versions
not dead

以上的設置表明需要兼容最新的兩個版本的瀏覽器,但不包括已經停止維護的瀏覽器。

在 gulpfile.js 或者 webpack.config.js 或者其他構建工具的配置文件中,通過引用 browserlist-config 插件來獲取瀏覽器列表。例如:

const config = require('browserlist-config')();

這個插件可以自動查找 .browserlistrc 文件並返回一個對象數組。然後,你可以使用這個 config 數組來配置其他依賴 browser 的工具(例如 Autoprefix)等等。

三、browserlist的語法和規則

Browserlist 定義了一些規則和關鍵字來方便你控制瀏覽器列表。以下是其基本的使用方法:

1. 瀏覽器名稱

瀏覽器名詞需要是一個能被辨認的瀏覽器名稱。例如:

amp
and_chr
and_ff
and_qq
and_uc
android
baidu
bb
bb 10
chrome
chrome_android
edge
edge_mob
firefox
firefox_android
ie
ie_mob
ios_saf
kaios
op_mini
op_mob
opera
opera_android
safari
samsung
vivaldi

2. 版本號

可以指定瀏覽器的版本號,例如:

chrome > 80        //支持80版本以上的chrome瀏覽器
ios_saf <= 12.0     //不支持iOS 12.0以上版本的 Safari 瀏覽器

3. 邏輯運算符

可以使用邏輯運算符 and 和 or 來組合多個瀏覽器:

opera > 30 and firefox >= 20   //要求 Opera 在 30 版本以上且 Firefox 至少在 20 版本以上
chrome >= 70 or safari >= 11.1 //要求 Chrome 在 70 版本以上或 Safari 在 11.1 版本以上

4. Mixins

除了使用指定具體的瀏覽器和版本號,可以使用 mixins 來方便地指定更多範圍:

defaults   //默認值,支持所有瀏覽器
not ie <= 8 //除了IE8及以下版本之外的所有瀏覽器
last 2 versions   //最近兩個版本的瀏覽器

四、如何在相關工具中使用browserlist

通過browserlist,你可以在很多構建工具中進行瀏覽器兼容性處理,例如 gulp、grunt、Webpack、Babel、PostCSS、Autoprefixer等等。

以Webpack為例,當你引入babel-loader和@babel/preset-env 插件後,根據你的瀏覽器列表,js代碼會被自動轉化成可以被目標瀏覽器正確解析的代碼:

module.exports = {
  module: {
    rules: [
      {
        test: /\.js$/,
        exclude: /node_modules/,
        use: {
          loader: 'babel-loader',
          options: {
            presets: [
              [
                '@babel/preset-env',
                {
                  targets: {
                    browsers: [
                      '> 1%',
                      'last 2 versions',
                      'not ie <= 8'
                    ]
                  }
                }
              ]
            ]
          }
        }
      }
    ]
  }
};

五、小結

Browserlist給前端開發帶來了很多便捷性。通過可讀性高、簡單的語法規則,能夠很好地維護和管理不同瀏覽器的需求。在實際項目中,推薦將 .browserlistrc 文件納入版本管理中,以便於團隊合作和持續維護。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/183535.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-25 05:47
下一篇 2024-11-25 05:47

相關推薦

  • 深入淺出統計學

    統計學是一門關於收集、分析、解釋和呈現數據的學科。它在各行各業都有廣泛應用,包括社會科學、醫學、自然科學、商業、經濟學、政治學等等。深入淺出統計學是指想要學習統計學的人能夠理解統計…

    編程 2025-04-25
  • 深入淺出torch.autograd

    一、介紹autograd torch.autograd 模塊是 PyTorch 中的自動微分引擎。它支持任意數量的計算圖,可以自動執行前向傳遞、後向傳遞和計算梯度,同時提供很多有用…

    編程 2025-04-24
  • 深入淺出SQL佔位符

    一、什麼是SQL佔位符 SQL佔位符是一種佔用SQL語句中某些值的標記或佔位符。當執行SQL時,將使用該標記替換為實際的值,並將這些值傳遞給查詢。SQL佔位符使查詢更加安全,防止S…

    編程 2025-04-24
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web服務器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24
  • 深入淺出ThinkPHP框架

    一、簡介 ThinkPHP是一款開源的PHP框架,它遵循Apache2開源協議發佈。ThinkPHP具有快速的開發速度、簡便的使用方式、良好的擴展性和豐富的功能特性。它的核心思想是…

    編程 2025-04-24
  • 深入淺出arthas火焰圖

    arthas是一個非常方便的Java診斷工具,包括很多功能,例如JVM診斷、應用診斷、Spring應用診斷等。arthas使診斷問題變得更加容易和準確,因此被廣泛地使用。artha…

    編程 2025-04-24
  • 深入淺出AWK -v參數

    一、功能介紹 AWK是一種強大的文本處理工具,它可以用於數據分析、報告生成、日誌分析等多個領域。其中,-v參數是AWK中一個非常有用的參數,它用於定義一個變量並賦值。下面讓我們詳細…

    編程 2025-04-24
  • 深入淺出Markdown文字顏色

    一、Markdown文字顏色的背景 Markdown是一種輕量級標記語言,由於其簡單易學、易讀易寫,被廣泛應用於博客、文檔、代碼注釋等場景。Markdown支持使用HTML標籤,因…

    編程 2025-04-23
  • 深入淺出runafter——異步任務調度器的實現

    一、runafter是什麼? runafter是一個基於JavaScript實現的異步任務調度器,可以幫助開發人員高效地管理異步任務。利用runafter,開發人員可以輕鬆地定義和…

    編程 2025-04-23
  • 深入淺出TermQuery

    一、TermQuery概述 TermQuery是Lucene中最基本、最簡單、最常見的查詢方法之一。它完全符合其名字,意味着只能對一個單詞進行查詢。 TermQuery可以用於搜索…

    編程 2025-04-23

發表回復

登錄後才能評論