国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

webpack(三)loader

這篇具有很好參考價值的文章主要介紹了webpack(三)loader。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

定義

loader用于對模塊的源代碼進行轉換,在imporrt或加載模塊時預處理文件
webpack做的事情,僅僅是分析出各種模塊的依賴關系,然后形成資源列表,最終打包生成到指定文件中。
webpack(三)loader,webpack,webpack,前端,node.js

webpack內部,任何文件都是模塊,不僅僅是js文件
默認情況下,遇到import或者require加載模塊時,webpack只支持對jsjson文件的打包,像css、scss、png等這些類型的文件,webpack則無能為力,這時候就需要配置對應的loader進行文件內容的解析。
webpack碰到不識別的模塊的時候,webpack會在配置當中查找該文件的解析規(guī)則。

使用

配置方式

  • 配置文件配置
    關于loader的配置,我們是寫在module.rules屬性中
    • rules是一個數(shù)組的形式,可以配置多個loader
    • 每一個loader對應一個對象的形式。test:正則表達式匹配規(guī)則;use:針對匹配到文件類型,調用對應的loader進行處理
  module: {
        rules: [
            // {
            //     test: /\.css$/, //正則表達式,用于匹配要處理的文件類型
            //     use: [
            //         {
            //             loader:'css-loader'
            //         }
            //     ]
            // },
            // { //簡寫 一個loader,不需要參數(shù)
            //     test:/\.css$/,
            //     loader:'css-loader'
            // }

            {
                test: /\.css$/,
                //  loader執(zhí)行順序從下往上,從右往左
                // use: ['css-loader','style-loader']
                // css-loader:處理css 由于webpack無法識別
                // style-loader:在頁面上生成一個style標簽 把處理好的樣式添加到頁面上
                use: ['style-loader', 'css-loader']
            }, {
                test: /.\less$/,
                // less-loader 需要less先將文件轉為css
                use: ['style-loader', 'css-loader', 'less-loader']
            }
        ]
    }
  • 內聯(lián)方式配置:在每個 import 語句中顯式指定 loader
 import 'css-loader!../css/login.css'
  • CLI配置:在 shell 命令中指定它們

特性

  • loader支持鏈式調用, 執(zhí)行順序從下往上,從右往左,鏈中的每個loader會處理之前已處理過的資源,最終變?yōu)?code>js代碼。
  • loader 可以是同步的,也可以是異步的
  • loader 運行在 Node.js 中,并且能夠執(zhí)行任何操作
  • 插件(plugin)可以為 loader 帶來更多特性
    可以通過loader的預處理函數(shù),為js生態(tài)系統(tǒng)提供更多能力。用戶現(xiàn)在可以更加靈活的引入細粒度邏輯,例如:打包、壓縮、語言翻譯和其它更多特性。

常見loader

在頁面開發(fā)過程中,加載除了js之外的內容就需要配置loader進行加載

css-loader

分析 css 模塊之間的關系,并合成?個 css

npm install --save-dev css-loader
rules: [
  ...,
 {
  test: /\.css$/,
    use: {
      loader: "css-loader",
      options: {
     // 啟用/禁用 url() 處理
     url: true,
     // 啟用/禁用 @import 處理
     import: true,
        // 啟用/禁用 Sourcemap
        sourceMap: false,
        //css在工作過程中又找到了需要處理的css,就需要往前找一個loader進行處理
        importLoaders:1 
      }
    }
 }
]

如果只通過css-loader加載文件,這時候頁面代碼配置沒生效,因為css-loader只是負責將.css文件進行解析,并不會將解析后的css插入到頁面中,如果我們希望再完成插入style的操作,那么我們還需要另外一個loader,就是style-loader.

style-loader

css-loader 生成的內容,用 style 標簽掛載到頁面的 head

npm install --save-dev style-loader
rules: [
  ...,
 {
  test: /\.css$/,
    use: ["style-loader", "css-loader"]
 }
]

less-loader/scss-loader

npm install less-loader -D
rules: [
  ...,
 {
  test: /\.css$/,
    use: ["style-loader", "css-loader","less-loader"]
 }
]

babel前置工具:browserslist

項目開發(fā)過程中需要考慮瀏覽器的兼容性,browserslist幫助我們請求會數(shù)據
可以從caniuse.com中查看目前瀏覽器的使用狀態(tài)
兩種配置方式:

// 方式一:package.json
"browserslist":[
        ">1%",
        "last 2 version",
        "not dead"
    ]
// 方式二:新建.browserslistrc文件
> 1%
last 2 versions
not dead

項目在安裝webpack之后,會帶有browserslist包,里面引入了caniuse-lite
webpack(三)loader,webpack,webpack,前端,node.js

postcss-loader前置:postcss

postcss是通過js轉換css的工具
樣式測試網站地址:https://autoprefixer.github.io/
如果我們不先試用loader而是利用postcss本身通過命令行進行自動添加前綴

  • npm i postcss-cli -D:能夠在命令行使用
  • npm i autoprefixer -D:自動添加前綴

執(zhí)行npx postcss --use autoprefixer -o ret.css ./src/css/test.css
webpack(三)loader,webpack,webpack,前端,node.js

postcss-preset-env:多css處理

如果我們的代碼中還需要進行其它樣式的處理,還需要單獨配置,比如color:#12345678支持8位數(shù),后面兩位為rgba中的透明度,針對多css處理情況可以使用postcss-preset-env其中包含多個css處理,并且包含autoprefixer

{
                test: /\.css$/,
                //  loader執(zhí)行順序從下往上,從右往左
                // use: ['css-loader','style-loader']
                // css-loader:處理css 由于webpack無法識別
                // style-loader:在頁面上生成一個style標簽 把處理好的樣式添加到頁面上
                use: ['style-loader', 'css-loader', {
                    loader: 'postcss-loader',
                    options: {
                        postcssOptions: {
                            // plugins: [require('autoprefixer'),require('postcss-preset-env')]
                            plugins: ['postcss-preset-env']
                        }
                    }
                }]
            },

我們項目中,less文件也可能需要用到這個配置,就可以抽離出來

//  postcss.config.js
module.exports = {
    plugins: [
        require('postcss-preset-env')
        // require('autoprefixer')
    ]
}

webpack.config.js

use: ['style-loader', 'css-loader',
                    'postcss-loader',
                    'less-loader']

file-loader

rules: [
  ...,
 {
  test: /\.(png|jpe?g|gif)$/,
    use: {
      loader: "file-loader",
      options: {
      	// esModule:false,  不轉為esModule
        // placeholder 占位符 [name] 源資源模塊的名稱
        // [ext] 源資源模塊的后綴
        name: "[name]_[hash].[ext]",
        //打包后的存放位置
        outputPath: "./images",
        // 打包后文件的 url
        publicPath: './images',
      }
    }
 }
]

url-loader

可以處理理 file-loader 所有的事情,但是遇到圖片格式的模塊,可以選擇性的把圖片轉成 base64 格式的字符串,并打包到 js 中,對小體積的圖片比較合適,大圖片不合適。

rules: [
  ...,
 {
  test: /\.(png|jpe?g|gif)$/,
    use: {
      loader: "url-loader",
      options: {
        // placeholder 占位符 [name] 源資源模塊的名稱
        // [ext] 源資源模塊的后綴
        name: "[name]_[hash].[ext]",
        //打包后的存放位置
        outputPath: "./images"
        // 打包后文件的 url
        publicPath: './images',
        // 小于 100 字節(jié)轉成 base64 格式
        limit: 100
      }
    }
 }
]

asset module type

webpack5中內置了,不需要安裝。在webpack5之前采用file-loader或者url-loader處理圖片,在webpack5直接采用aeest進行處理即可。

asset/resource -->file-loader:發(fā)送一個單獨的文件并導出 URL

output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist'),
+   assetModuleFilename: 'images/[hash][ext][query]' //導出文件名
  },
module: {
    rules: [
      {
        test: /\.png$/,
        type: 'asset/resource'
      }
    ]
  }
// src/index.js
import icon from './assets/icon.png'
const iconImg = document.createElement('img')
iconImg.style.cssText = 'width: 200px;'
iconImg.src = icon
document.body.appendChild(iconImg)

執(zhí)行webpack可以在dist中可以看到有一個.png文件出現(xiàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-694554.html

asset/inline–>url-loader:導出一個資源的 data URI

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.png$/,
        type: 'asset/resource',
        generator: {
          filename: 'images/[hash][ext][query]'
        }
      },
+     {
+       test: /\.svg$/,
+       type: 'asset/inline'
+     }
    ]
  }
}

asset/source–>raw-loader:導出資源的源代碼

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.png$/,
        type: 'asset/resource',
        generator: {
          filename: 'images/[hash][ext][query]'
        }
      },
      {
        test: /\.svg$/,
        type: 'asset/inline'
      },
+     {
+       test: /\.txt$/,
+       type: 'asset/source'
+     }
    ]
  }
}

到了這里,關于webpack(三)loader的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 前端10年進化 Node.js、模塊化、CommonJS、AMD、CMD、Webpack、Vue-cli、Electron-vue

    模塊化的概念在軟件開發(fā)領域已經存在很長時間,但在?JavaScript?中的模塊化發(fā)展相對較晚。以下是對您提出的問題的回答: 提出時間:JavaScript?中的模塊化概念相對較早地提出于?CommonJS?規(guī)范。CommonJS?是一種?JavaScript?模塊化規(guī)范,最早在?2009?年由?Ryan?Dahl?和其他社區(qū)成

    2024年02月11日
    瀏覽(25)
  • Webpack5 core-js和babel-loader區(qū)別和用法

    core-js是一個流行的JavaScript庫,它提供了對新的JavaScript特性、API和方法的兼容性支持。它通過模擬缺失的功能,并提供 polyfill 來使這些功能可以在舊版瀏覽器中正常運行 polyfill 翻譯過來叫做墊片/補丁。就是用社區(qū)上提供的一段代碼,讓我們在不兼容某些新特性的瀏覽器上,

    2024年02月13日
    瀏覽(17)
  • ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!

    ./node_modules/cache-loader/dist/cjs.js??ref--13-0!./node_modules/thread-loader/dist/cjs.js!

    Vue項目中執(zhí)行打包命令 npm run build,出現(xiàn)以下報錯 刪除node_modules包后,重新裝包,發(fā)現(xiàn)還是無法打包。 原因: 在原來鏡像源的地址上,已經找不到這個插件了,沒有裝上,導致打包報錯了。 解決方法: 1、更換鏡像源 換成淘寶鏡像源或者其他源,刪除node_modules包后,再重新

    2024年02月15日
    瀏覽(50)
  • 在uniapp開發(fā)編譯成小程序時,模板編譯錯誤Module build failed (from ./node_modules/@dcloudio/webpack-uni-mp-loader/lib/

    在uniapp開發(fā)編譯成小程序時,模板編譯錯誤Module build failed (from ./node_modules/@dcloudio/webpack-uni-mp-loader/lib/

    解決方案:應該是你的ifdef 和 endif不匹配。你自己看看你的代碼,是不是有的地方只有一個endif或者只有ifdef,或者說寫錯了,檢查下。我的就是少了endif. 希望我的解決方案能幫到你

    2024年02月16日
    瀏覽(26)
  • Node.js與Webpack筆記(二)

    Node.js與Webpack筆記(二)

    上一篇:Node.js與Webpack筆記(一)-CSDN博客 1.Webpack簡介以及體驗 webpack是一個靜態(tài)模塊打包工具,從入口構建依賴圖,打包有關的模塊,最后用于展示你的內容 靜態(tài)模塊:編寫代碼過程中,html,css,js,圖片等固定內容的文件 打包過程,注意:只有和入口有直接/間接引入關系

    2024年03月10日
    瀏覽(27)
  • 第三節(jié):Node.js 之 Webpack 打包

    第三節(jié):Node.js 之 Webpack 打包

    官網網址:https://webpack.docschina.org/ 減少文件數(shù)量,縮減代碼體積,提高瀏覽器打開速度。 用于分析、并打包代碼。支持所有類型文件的打包,其本質是一個第三方模塊包。 初始化包環(huán)境 安裝依賴包 配置package.json 的 scripts(自定義命令) 在根目錄下新建 src 文件夾, 所有要

    2024年02月15日
    瀏覽(29)
  • swc-loader Segmentation fault “$NODE_EXE“ “$NPM_CLI_JS“ “$@“

    webpack + swc swc還不是很穩(wěn)定。 在swcrc 中有配置plugins 時,swc 轉換?/node_modules/ 會報錯。 @swc/cor@1.3.62 swc-loader@0.2.3 swc-plugin-vue-jsx@0.2.5 配兩套rule,一套處理項目代碼,一套處理node_modules webpack.config.js swcrc mode: entry 穩(wěn)定一點。用usage會出問題。 果然是experimental.plugin, 實驗性featur

    2024年02月11日
    瀏覽(16)
  • Node.js入門與 Webpack模塊打包工具

    Node.js入門與 Webpack模塊打包工具

    目錄 Node.js入門 fs模塊-讀寫文件 path模塊-路徑處理? 壓縮前端html 認識URL中的端口號 http模塊-創(chuàng)建Web服務 體驗 Web 服務除了接口數(shù)據以外,還能返回網頁資源等? Node.js模塊化? ECMAScript標準-默認導出和導入 ECMAScript標準-命名導出和導入? 包的概念 npm軟件包管理器 npm安裝所有依

    2024年02月11日
    瀏覽(25)
  • 【Module build failed (from ./node_modules/sass-loader/dist/cjs.js):】

    【Module build failed (from ./node_modules/sass-loader/dist/cjs.js):】

    @[TOC](Module build failed (from ./node_modules/sass-loader/dist/cjs.js):) 跑新項目的時候報錯,研究了半天,主要報Module build failed (from ./node_modules/sass-loader/dist/cjs.js): 可以npm uninstall sass-loader和npm uninstall node-sass,在安裝npm install sass-loader 和node-sass原因是sass-loader的版本問題,只適應相對的

    2024年01月19日
    瀏覽(48)
  • Module build failed (from ./node_modules/postcss-loader/src/index.js):

    Module build failed (from ./node_modules/postcss-loader/src/index.js):

    出現(xiàn)該錯誤是你可能沒認真看官網的安裝配置,可直接看該目錄3,一個字一個字看 先安裝uview 如果選擇v1版本,建議使用npm下載,下面以v1版本為例,使用的是npm下載,導入uview時該文件也在node_modules文件夾里面,未移動。 然后就是配置 在項目根目錄中的main.js中,引入并使

    2024年02月05日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包