长沙网站设计公司推荐wordpress相关网站

news/2025/10/3 15:09:32/文章来源:
长沙网站设计公司推荐,wordpress相关网站,phpcms模板,医院网站推广渠道在 webpack 中#xff0c;专注于处理 webpack 在编译过程中的某个特定的任务的功能模块#xff0c;可以称为插件。它和 loader 有以下区别#xff1a; 1loader 是一个转换器#xff0c;将 A 文件进行编译成 B 文件#xff0c;比如#xff1a;将 A.less 转换为 A.css… 在 webpack 中专注于处理 webpack 在编译过程中的某个特定的任务的功能模块可以称为插件。它和 loader 有以下区别 1loader 是一个转换器将 A 文件进行编译成 B 文件比如将 A.less 转换为 A.css单纯的文件转换过程。webpack 自身只支持 js 和 json 这两种格式的文件对于其他文件需要通过 loader 将其转换为 commonJS 规范的文件后webpack 才能解析到。 2plugin 是一个扩展器它丰富了 webpack 本身针对是 loader 结束后webpack 打包的整个过程它并不直接操作文件而是基于事件机制工作会监听 webpack 打包过程中的某些节点执行广泛的任务。 loader 的特征 loader是一个export出来的function。来自官网的翻译 loader 的作用以及使用 对于网页组成基础都是htmljscss但是vue使用loader才能对代码进行转化成为基本的网页而且loader可以对象项目起来优化作用避免了以下的情况 常用的loader也有 样式 1css-loader : 解析css文件中代码 2style-loader : 将css模块作为样式导出到DOM中 3less-loader : 加载和转义less文件 4sass-loader : 加载和转义sass/scss文件 脚本转换编译 1script-loader : 在全局上下文中执行一次javascript文件不需要解析 2babel-loader : 加载ES6 代码后使用Babel转义为ES5后浏览器才能解析 Files文件 1url-loader : 多数用于加载图片资源,超过文件大小显示则返回data URL 2raw-loader : 加载文件原始内容(utf-8格式) 图片文件 1image-webpack-loader 对于图片的压缩加载 加载框架 1vue-loader : 加载和转义vue组件 plugin 的特征 webpack 插件有以下特征 ●是一个独立的模块。 ●模块对外暴露一个 js 函数。 ●函数的原型 (prototype) 上定义了一个注入 compiler 对象的 apply 方法。 ●apply 函数中需要有通过 compiler 对象挂载的 webpack 事件钩子钩子的回调中能拿到当前编译的 compilation 对象如果是异步编译插件的话可以拿到回调 callback。 ●完成自定义子编译流程并处理 complition 对象的内部数据。 ●如果异步编译插件的话数据处理完成后执行 callback 回调。 1webpack 读取配置的过程中会先执行 new HelloPlugin(options) 初始化一个 HelloPlugin 获得其实例。 2初始化 compiler 对象后调用 HelloPlugin.apply(compiler) 给插件实例传入 compiler 对象。 3插件实例在获取到 compiler 对象后就可以通过 compiler.plugin (事件名称, 回调函数) 监听到 Webpack 广播出来的事件。并且可以通过 compiler 对象去操作 Webpack。 事件流机制 webpack 本质上是一种事件流的机制它的工作流程就是将各个插件串联起来而实现这一切的核心就是 Tapable。 Webpack 的 Tapable 事件流机制保证了插件的有序性将各个插件串联起来 Webpack 在运行过程中会广播事件插件只需要监听它所关心的事件就能加入到这条 webapck 机制中去改变 webapck 的运作使得整个系统扩展性良好。 Tapable 也是一个小型的 library是 Webpack 的一个核心工具。类似于 node 中的 events 库核心原理就是一个订阅发布模式。作用是提供类似的插件接口。方法如下 我们来看下 Tapable Tapable 为 webpack 提供了统一的插件接口钩子类型定义它是 webpack 的核心功能库。webpack 中目前有十种 hooks在 Tapable 源码中可以看到他们是 Tapable 还统一暴露了三个方法给插件用于注入不同类型的自定义构建行为 ●tap可以注册同步钩子和异步钩子。 ●tapAsync回调方式注册异步钩子。 ●tapPromisePromise 方式注册异步钩子。 webpack 里的几个非常重要的对象Compiler, Compilation 和 JavascriptParser 都继承了 Tapable 类它们身上挂着丰富的钩子。 编写一个插件 一个 webpack 插件由以下组成 ●一个 JavaScript 命名函数。 ●在插件函数的 prototype 上定义一个 apply 方法。 ●指定一个绑定到 webpack 自身的事件钩子。 ●处理 webpack 内部实例的特定数据。 ●功能完成后调用 webpack 提供的回调。 下面实现一个最简单的插件 然后在 webpack 的配置中注册使用就行只需要在 webpack.config.js 里引入并实例化就可以了 此时我们执行一下 npm run build 就能看到效果了 Compiler 对象 负责编译 Compiler 对象是webpack的编译对象。包含了当前运行 Webpack 的配置包括 entry、output、loaders 等配置这个对象在启动 Webpack 时被实例化而且是全局唯一的。Plugin 可以通过该对象获取到 Webpack 的配置信息进行处理。 compiler 上暴露的一些常用的钩子 更多 下面来举个例子 此时我们执行一下 npm run build 就能看到效果了 有一些编译插件中的步骤是异步的这样就需要额外传入一个 callback 回调函数并且在插件运行结束时执行这个回调函数 Compilation 对象 Compilation 对象代表了一次资源版本构建。当运行 webpack 开发环境中间件时每当检测到一个文件变化就会创建一个新的 compilation从而生成一组新的编译资源。一个 Compilation 对象表现了当前的模块资源、编译生成资源、变化的文件、以及被跟踪依赖的状态信息简单来讲就是把本次打包编译的内容存到内存里。Compilation 对象也提供了插件需要自定义功能的回调以供插件做自定义处理时选择使用拓展。 简单来说Compilation 的职责就是构建模块和 Chunk并利用插件优化构建过程。 Compiler 代表了整个 Webpack 从启动到关闭的生命周期而 Compilation 只是代表了一次新的编译只要文件有改动compilation 就会被重新创建。 Compilation 上暴露的一些常用的钩子 更多 Compiler 和 Compilation 的区别 ●Compiler 代表了整个 Webpack 从启动到关闭的生命周期 ●Compilation 只是代表了一次新的编译只要文件有改动compilation 就会被重新创建。 手写插件 1文件清单 在每次 webpack 打包之后自动产生一个一个 markdown 文件清单记录打包之后的文件夹 dist 里所有的文件的一些信息。 思路 1.通过 compiler.hooks.emit.tapAsync() 来触发生成资源到 output 目录之前的钩子 2.通过 compilation.assets 获取文件数量 3.定义 markdown 文件的内容将文件信息写入 markdown 文件内 4.给 dist 文件夹里添加一个资源名称为 fileListName 的变量 5.写入资源的内容和文件大小 6.执行回调让 webpack 继续执行 手写插件 2去除注释 思路 1.通过 compiler.hooks.emit.tap() 来触发生成文件后的钩子 2.通过 compilation.assets 拿到生产后的文件然后去遍历各个文件 3.通过 .source() 获取构建产物的文本然后用正则去 replace 调注释的代码 4.更新构建产物对象 5.执行回调让 webpack 继续执行 Plain Text复制代码 class RemoveCommentPlugin { constructor(options) { this.options options } apply(compiler) { compiler.hooks.emit.tap(RemoveComment, compilation { for (const name in compilation.assets) { if (name.endsWith(.js)) { const contents compilation.assets[name].source(); const reg /(([^\\\]*(\\.)?)*)|(([^\\\]*(\\.)?)*)|(\/{2,}.*?(\r|\n))|(\/\*(\n|.)*?\*\/)|(\/\*\*\*\*\*\*\/)/g; const noComments contents.replace(reg, function(word) { // 去除注释后的文本 return /^\/{2,}/.test(word) || /^\/\*!/.test(word) || /^\/\*{3,}\//.test(word) ? : word }) compilation.assets[name] { source: () noComments, size: () noComments.length, }; } } }); } } module.exports RemoveCommentPlugin 手写插件 3去除不用的代码 思路 1.通过 compiler.hooks.emit.tap() 来触发生成文件后的钩子 2.通过 compilation.assets 拿到生产后的文件然后去遍历各个文件 3.通过 .source() 获取构建产物的文本然后用正则去 replace 调注释的代码 4.更新构建产物对象 5.执行回调让 webpack 继续执行 Plain Text复制代码 class RemoveCommentPlugin { constructor(options) { this.options options } apply(compiler) { compiler.hooks.emit.tap(RemoveComment, compilation { //去除/*environment*/开启以/*end environment*/结束的代码 // 例如/*environment*/ console.log(hello world);/*end environment*/ for (const name in compilation.assets) { if (name.endsWith(.js)) { const contents compilation.assets[name].source(); const reg /\/\*environment\*\/([\s\S]*)\/\*end environment\*\//g; const noComments contents.replace(reg, ); compilation.assets[name] { source: () noComments, size: () noComments.length, }; } } }); } } module.exports RemoveCommentPlugin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查网站排名wordpress 站群

在上一篇文章中,我们介绍了,对于安全技术开发者,如何快速的基于 Rosetta 等隐私 AI 框架所提供的一系列接口,将自己的安全协议集成落地到上层的 AI 应用中来。在这一篇文章中,我们将介绍为了保护用户的隐私数据&#x…

抚顺网站开发招聘wordpress更改主题

文章目录1. html 部分2. js部分3. 拦截器部分4. 认证授权部分5. 控制层部分6. 工具类实现流程: 1.从reqest域中获取现在登陆的新sessionId 2.根据登陆的用户名从reqest域中获取已经登陆的老sessionId 3.判断老sessionId是否存在和新旧sessionId是否是否一致 如果一直返回当前用…

和水导学习的第二篇笔记

操作系统 操作系统的作用 将外部指令传给CPU 操作系统有什么 计算机有什么组成: 应用程序:便利生活,具体干活,和操作系统,人交互 操作系统:接收外部指令,控制硬件,和人,硬件,应用程序交互 硬件:操作数据,和…

微信公众号推文添加附件方法,1分钟学会!支持word,excel,pdf等适合招聘,公告,申请表等

微信公众号图文文章时,总会遇到带有附件的文章,但微信公众号本身并不具备直接上传附件的功能,那编辑者们是如何快速在微信公众号中添加office、pdf和word等附件,以供用户快速预览或保存使用的呢?微信公众号图文文…

社保在哪个网站做增员网站建设兼职挣多少钱

01.dns解析过程02.用户访问网站流程03.局域网电脑上网流程04.网站架构图解转载于:https://blog.51cto.com/qinbin/1954149

bMIND包本地安装

https://github.com/randel/MIND 下载code,下载下来是MIND-master.zip,本地R安装要求严格是“MIND-master.tar.gz” 格式转化: # 如果机器上有 git: cd /public/home/chidm/Downloads git clone https://github.com…

百度电商MultiAgent视频生成系统 - 详解

百度电商MultiAgent视频生成系统 - 详解2025-10-03 14:56 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block …

网络实践——基于epoll_ET工作、Reactor设计模式的HTTP服务 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

为博客写遗言

写下这段文字的时候,内心是极挣扎的 可能是【数据删除】临近了,所以情感上的波动愈发强烈 不久后,就要和 cnblogs 说再见了,甚至是和电脑说再见了足足 249 篇博客,不舍、痛苦、伤感是难免的 博客快断更了,应当有…

2025国庆Day2

模拟赛 T1 简单题 离散化+差分即可 或者直接贪心 对可能成为答案的点计算删的区间并取min #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath>…

灵犀科技网站开发WordPress获取评论内容

5大安全产品全面升级&#xff0c;抢先了解&#xff1a;https://developer.aliyun.com/topic/securityapril 预约观看发布会&#xff1a;https://yq.aliyun.com/live/2670 新基建大势之下的物联网 近日&#xff0c;中央政治局常委会会议提出&#xff0c;加快发展5G、数据中心、…

新能源汽车整车电控环境详解!

新能源汽车整车电控环境详解!pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

《吃透 C++ vector:从基础使用到核心接口实战指南》 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

广州旅游网站建设设计学做投资网站好

DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能&#xff0c;具有日、周、月和时间轴视图&#xff0c;并包括内置的打印支持&#xff0c;因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中&#xff08;点击这里回顾…

完整教程:GitOps:一种实现云原生的持续交付模型

完整教程:GitOps:一种实现云原生的持续交付模型pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

黑马程序员苍穹外卖学习指南(本文消除我跟视频做该项目时遇到的问题和解决方法)

黑马程序员苍穹外卖学习指南(本文消除我跟视频做该项目时遇到的问题和解决方法)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font…

做网站的个人心得学校网站模版

基于蚁群算法的TSP问题建模求解 一、蚁群优化算法&#xff08;Ant Colony Optimization&#xff0c;ACO&#xff09;1.1 蚁群算法的起源——“双桥实验”1.2 蚁群优化算法思想1.3 蚁群算法应用于求解组合优化问题 二、基于蚁群算法的TSP问题建模求解2.1 旅行商问题&#xff08;…

佛山网站建设百家号网站统计平台

使用Selenium处理动态生成的网页内容和语法代码可以通过以下步骤进行&#xff1a; 安装Selenium库&#xff1a;使用pip命令安装Selenium库&#xff0c;可以在命令行中运行如下命令&#xff1a; pip install selenium 下载WebDriver&#xff1a;Selenium需要与特定的浏览器进行交…

P11983 [JOIST 2025] 展览会 3 题解

Description JOI 美术馆计划近期举办一场绘画展览。馆方拥有编号为 \(1\) 至 \(N\) 的 \(N\) 幅画作,其中画作 \(i\)(\(1 \leq i \leq N\))的美观值为 \(A_i\)。在展览中这些画作将排成一行展示,但具体排列顺序尚未…