Plugin解决了什么问题?
一、Plugin解决了什么问题
1、提高灵活性和可扩展性
Plugin机制使得系统的功能可以按需动态加载,可以满足各种业务需求,提高了系统的灵活性和可扩展性。
2、降低复杂度
Plugin通过将不同功能模块拆分成不同的插件,可以使系统更易于管理,避免过多的耦合和依赖关系,降低了系统的复杂度。
3、提高可重用性
Plugin模块可以被多个应用程序或系统所共享使用,可以减少代码的重复编写,提高了可重用性。
4、简化维护
Plugin可以独立开发、测试和部署,可以独立地进行修改和更新,能够简化系统的维护工作。
5、提高安全性
Plugin可以提供额外的安全保障,可以对系统的功能进行更精细的控制和管理,增强了系统的安全性。
二、Plugin概述
1、概念
Plugin(Plug-in)是一种计算机应用程序,它和主应用程序互相交互,以提供特定的功能。是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统下,因为其需要调用原纯净系统提供的函数库或者数据。webpack中的plugin也是如此,plugin赋予其各种灵活的功能,例如打包优化、资源管理、环境变量注入等,它们会运行在 webpack 的不同阶段(钩子 / 生命周期),贯穿了webpack整个编译周期。
目的在于解决loader无法实现的其他事。
2、配置方式
这里讲述文件的配置方式,一般情况,通过配置文件导出对象中plugins属性传入new实例对象。如下所示:
const HtmlWebpackPlugin = require('html-webpack-plugin'); // 通过 npm 安装const webpack = require('webpack'); // 访问内置的插件module.exports = { ... plugins: [ new webpack.ProgressPlugin(), new HtmlWebpackPlugin({ template: './src/index.html' }), ],};
3、特性
其本质是一个具有apply方法javascript对象,apply方法会被webpack compiler调用,并且在整个编译生命周期都可以访问compiler对象。
const pluginName = 'ConsoleLogOnBuildWebpackPlugin';class ConsoleLogOnBuildWebpackPlugin { apply(compiler) { compiler.hooks.run.tap(pluginName, (compilation) => { console.log('webpack 构建过程开始!'); }); }}module.exports = ConsoleLogOnBuildWebpackPlugin;
compiler hook的tap方法的名列前茅个参数,应是驼峰式命名的插件名称,关于整个编译生命周期钩子,有如下:
entry-option :初始化 optioncompile: 真正开始的编译,在创建 compilation 对象之前compilation :生成好了 compilation 对象make:从 entry 开始递归分析依赖,准备对每个模块进行 buildafter-compile: 编译 build 过程结束emit :在将内存中 assets 内容写到磁盘文件夹之前after-emit :在将内存中 assets 内容写到磁盘文件夹之后done: 完成所有的编译过程failed: 编译失败的时候4、机制和原理
应用软件提供使插件能够应用的各项服务,其中包括提供加载方式,使插件可以加载到应用程序和网络传输协议中,从而和插件进行数据交换。插件必须依赖于应用程序才能发挥自身功能,仅靠插件是无法正常运行的。相反地,应用程序并不需要依赖插件就可以运行,这样一来,插件就可以加载到应用程序上并且动态更新而不会对应用程序造成任何改变。
简单来说插件技术是能通过在软件的设计和研发过程中把软件的需求和功能进行划分,使程序分为两个主要部分主程序和插件。把基础的功能要求设计在主程序中,另外,主程序还提供与插件的接口,使相应的插件能够按一定的规则进行数据交换,从而实现一些功能;而插件则是一个个实现部分功能的组件,这样通过增减插件或修改插件内部功能来调整软件的功能,由于插件是对独立的部分,可以独立进行编辑。从而实现软件功能的扩展和不断改进。
公开应用程序接口提供一个标准的界面,允许其他人编写插件和应用程序互动。一个稳定的应用程序接口会允许 其他插件正常运行即使其最初的版本有所变动,也会支持插件延长老旧的应用程序的使用寿命。Adobe Photoshop 和After Effects的插件应用程序接口逐渐成为标准,并且被一些和它们竞争的应用程序部分采纳。
5、常见的Plugin
延伸阅读1:插件的种类
文本插件:类似批处理命令的简单插件。脚本插件:使用一种特殊的脚本语言来实现的插件。程序插件:利用已有的程序开发环境来制作插件。猜你喜欢LIKE
相关推荐HOT
更多>>为什么Oracle数据库没有很好的卸载工具?
一、Oracle数据库没有很好的卸载工具的原因1、安装程序以压缩包形式存在大部分Oracle数据库安装程序都是以压缩包存在的,没有独立的卸载程序。...详情>>
2023-10-18 18:40:58mysql的Innodb引擎中,主键索引和普通索引的工作原理是什么?
一、mysql的Innodb引擎中,主键索引和普通索引的工作原理在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表...详情>>
2023-10-18 15:19:29非常适合移动和桌面应用的JavaScript框架是什么?
一、React NativeReact Native是一个广受欢迎的JavaScript框架,特别适合移动应用开发。它允许开发者使用JavaScript和React的语法来构建原生移...详情>>
2023-10-18 13:10:11一个事务提交时,redo log和undo log以及bin log的生成流程是怎么样的?
一、redo log和undo log以及bin log的生成流程1.undolog是在innodb的回滚段里的(确切是rollback segment->undo segment),这个也是buff...详情>>
2023-10-18 12:35:31热门推荐
用什么数据库存储大量简单数据比较合适?
沸JAVA实现短网址服务的原理是什么?
热安卓原生app开发为什么要用sql本地数据库?
热oracle数据库库中两个表之间怎么同步数据?
新为什么Oracle数据库没有很好的卸载工具?
怎样用java向MySQL中的表插入1亿条数据?
做一个公司内部使用的小程序,应该用什么语言和数据库?
如何建立数据库,利用什么软件建立数据库?
org.Hs.eg.db包载入失败是为什么?
mysql update主键更新很慢会是什么原因?
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
mysql的Innodb引擎中,主键索引和普通索引的工作原理是什么?
Plugin解决了什么问题?
Python的pymysql、mysql、mysqlx库都有什么区别?