当前位置: 首页 > wzjs >正文

自己建设网站郑州网络公司排名

自己建设网站,郑州网络公司排名,win7局域网网站开发,创客贴做网站吗目录 一、webpack中loader和plugin的区别1. Loader(每个 Loader 是一个函数或对象)2.plugin(每个 Plugin 是一个实例)3.自定义loader和plugin 二、Babel的功能三、Plugin中的compiler和compilation对象1. compiler对象2. compilat…

目录

  • 一、webpack中loader和plugin的区别
    • 1. Loader(每个 Loader 是一个函数或对象)
    • 2.plugin(每个 Plugin 是一个实例)
    • 3.自定义loader和plugin
  • 二、Babel的功能
  • 三、Plugin中的compiler和compilation对象
    • 1. compiler对象
    • 2. compilation对象

一、webpack中loader和plugin的区别

1. Loader(每个 Loader 是一个函数或对象)

  • 功能:文件转换 --> 将源文件转换为webpack可以处理的模块
  • 处理单位:单个文件(.js,.css,.png)
  • 执行顺序:链式调用,按配置顺序依次执行(源文件 -> Loader1 -> Loader2 -> … -> Webpack可用模块)
// webpack.config.js
module: {rules: [{test: /\.css$/,use: [ // 执行顺序从后到前'style-loader',  // 将CSS注入DOM'css-loader',    // 解析CSS中的@import和url(),支持css modules'postcss-loader' // 添加浏览器前缀]}]
}
  • 常用Loader
    代码转换:Babel(.js),TypeScript(.ts)
    样式处理:css-loader,sass-loader,postcss-loader
    文件处理:file-loader,url-loader(小图转为Base64),svg-loader
    模版编译:pug-loader,handlebard-loader

2.plugin(每个 Plugin 是一个实例)

  • 功能:扩展功能 --> 在Webpack构建流程的特定阶段执行自定义逻辑
  • 处理单位:整个构建过程(如打包完成后生成HTML文件)
  • 执行顺序:基于事件钩子,可在特定阶段多次触发(Webpack启动 -> 触发各种事件钩子 -> Plugin监听特定钩子并执行逻辑)
// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');plugins: [new HtmlWebpackPlugin({template: './src/index.html' // 基于模板生成HTML})
]
  • 常用Plugins
    CleanWebpackPlugin(),// 每次构建前清空dist目录
    MiniCssExtractPlugin(), // 提取CSS到单独文件,通常生产环境中,替代style-loader
    TerserPlugin(), // 压缩JS
    HtmlWebpackPlugin(), // 生成 HTML

3.自定义loader和plugin

  1. 极简的loader
module.exports = function(source) {// source: 输入的文件内容(字符串或Buffer)// 获取loader配置参数,this.getOptions 是 Webpack 提供的标准化参数获取方式const options = this.getOptions() || {};// 处理逻辑...return source; // 返回处理后的内容
};
  1. 极简的plugin
class MyPlugin {constructor(options) {this.options = options; // 接收配置参数}apply(compiler) { // compiler见下// 注册钩子监听编译过程compiler.hooks.someHook.tap('MyPlugin', (compilation) => { // compilation见下// 处理逻辑...});}
}module.exports = MyPlugin;

二、Babel的功能

一句话概括:Babel的功能是JavaScript代码转换

  • 可处理:ES6+语法转为ES5兼容形式、API补全(Promise,Array.includes)、适配不同浏览器|node版本等
  • Babel 的核心是插件系统,每个转换功能由独立插件实现
// babel.config.js
module.exports = {plugins: ["@babel/plugin-transform-arrow-functions", // 转换箭头函数"@babel/plugin-transform-classes", // 转换 class 语法"@babel/plugin-proposal-object-rest-spread" // 转换展开运算符]
};
  • Presets(预设):预设是一组插件的集合,避免手动配置大量插件
// babel.config.js
module.exports = {presets: ["@babel/preset-env", // 智能转换 ES6+ 代码"@babel/preset-react", // 转换 JSX"@babel/preset-typescript" // 转换 TypeScript]
};
  • Babel 的工作流程:解析代码 → 转换 AST → 生成新代码。
  • Babel常和webpack协作,通过babel-loader作为桥梁
// webpack.config.js
module.exports = {module: {rules: [{test: /\.js$/,use: {loader: 'babel-loader', // 调用Babel编译JS文件options: {presets: ['@babel/preset-env']}}}]}
};

三、Plugin中的compiler和compilation对象

1. compiler对象

全局单例,代表整个webpack编译过程,包含所有配置信息,监听编译全过程(compile、emit、done)

  • compile:当 Webpack 开始新的一轮编译时触发(在读取配置后,真正编译前) —> 获取编译配置、修改默认行为
  • emit:在文件输出到磁盘前触发(所有模块已编译,资源已生成)。 —> 修改输出资源(如重命名文件、添加额外内容)。
  • done:整个编译过程完成时触发(文件已写入磁盘)。 —> 执行编译后的操作(如通知构建完成、生成报告)。

2. compilation对象

每次构建创建,代表一次具体的编译过程,包含当前构建的所有模块、资源和依赖关系,可修改、添加或删除构建产物

http://www.dtcms.com/wzjs/145077.html

相关文章:

  • 越秀重点场所百色seo外包
  • 360安全浏览器做网站测试减少缓存设置西安疫情最新数据消息5分钟前
  • 临沂市兰山区建设局网站郑州seo公司哪家好
  • 网站程序下载湖南平台网站建设制作
  • 中式建筑网站网站的推广
  • 自己网站免费网络推广网站
  • 现代网站建设厦门百度竞价
  • wordpress 云备份数据库好用的seo软件
  • 用javaweb做购物网站济南网站优化
  • 网站开发合作合同范本东莞网络推广培训
  • 网站开发路径企业网络营销方案
  • 生日网站在线制作免费长春网站建设技术支持
  • wordpress文章自动更新seo排名方案
  • 松江品划做企业网站sem代运营托管公司
  • 网站一年的 运营费用友情链接交易购买
  • 男女做暖暖的网站大全谷歌seo和百度seo区别
  • 大庆商城网站建设杭州网站建设书生商友
  • 网站建设的公司做销售百度小说排行榜第一名
  • 建设银行卡办理网站百度有几个总部
  • 网站建设诚信服务网络推广外包公司排名
  • 网站策划做营销推广seo最新优化技术
  • 宜昌平台网站建设南宁seo关键词排名
  • 怎么建网站教程视频北京网站营销seo方案
  • 网站和域名都注册怎么连接成网址国内推广平台
  • 大理州住房和城乡建设局官方网站关键词推广系统
  • 给小孩做辅食的网站长沙疫情最新情况
  • 石家庄的电商网站建设产品推广网站
  • 案例学网页设计和网站建设百度百科词条
  • 网站开发支付模块seo综合查询是什么
  • 网站开发项目需求小吃培训2000元学6项