site infoHacknerd | Tech Blog
blog cover

🎑 [Webpack实战: 入门、进阶与调优] 4. 预处理器

JavaScriptWebpack

一切皆模块

webpack可以实现在js中导入html,css,图片、字体、JS等静态资源。

loader概述

  • 1.loader本身是一个函数,输入输出为字符串、sourcemap或者AST(抽象语法树,在webpack4之后支持)
  • 2.loader可以进行链式调用如:style标签=-style-loader(css-loader(sass-loader(SASS)))
  • 3.loader源码架构
  • javascriptCopy
    module.exports = function loader( content, map, meta ) {
    	const callback = this.async()
    	const result = handler(content, map ,meta)
    	callback(
    		null,             // error
    		result.content,   // 转换后的内容
    		result.map,       // source-map
    		result.meta       // AST
    	)
    }

    Loader配置

  • 1.引入
  • 已处理CSS为例

    javascriptCopy
    // app.js
    import 'index.css'

    webpack.config.js

    javascriptCopy
    module.exports = {
    	...,
    	module: {
    		rules: [{ 
    			test: /\.css$/,
    			use: [
    				'style-loader', // 将css插入到界面中
    				'css-loader'    // 处理样式各种加载语法 @import url() 并将结果作为js返回
    			]
    		}]
    	}
    }

    配置参数:

  • test: 正则表达式或者正则表达式数组,匹配上的模块会使用条规则。
  • use: 接受数组或字符串。loader是从后往前处理的比如: use: ['style-loader', 'css-loader'] 会先使用css-loader再加载style-loader
  • 1.loader-options
  • 2.更多配置
  • exclude include
  • resource issuer
  • enforce
  • 常用loader

  • 1.babel-loader。用于将ES6+编译成ES5。使用户可以在开发中使用最新语言特性,同时不用特别关心兼容性问题
  • 2.ts-loader
  • 3.html-loader
  • 4.handlebars-loader
  • 5.file-loader
  • 6.url-loader
  • 7.vue-loader
  • 自定义loader

  • 1.初始化
  • 2.启用缓存
  • 3.获取options
  • 4.source-map
  • Contents

    • 一切皆模块
    • loader概述
    • Loader配置
    • 常用loader
    • 自定义loader

    2024/05/28 07:08