Vue 插件是一种可以增强 Vue 核心功能的扩展方式,能为 Vue 添加全局方法、属性、指令、混入及自定义选项等,提升开发效率和项目功能丰富度。
01 最常用的 Vue 插件:
-
状态管理相关:
-
Pinia:是 Vue 的新一代状态管理库,逐渐取代 Vuex。它具有轻量级、易于使用、配置简单等优点,能方便地在组件之间共享和管理状态,让状态管理更加清晰和高效。
-
vuex-persistedstate:用于在页面重新加载时保持和重载 Vuex 的状态。可以将应用程序的状态保存到本地存储(localStorage)或会话存储(sessionStorage)中,以便在用户刷新页面或关闭浏览器后仍然能够恢复之前的状态。
-
pinia-plugin-persistedstate:专门为 Pinia 商店提供的可配置持久性插件,帮助开发者更方便地管理 Pinia 状态的持久化。
-
数据获取与处理相关:
-
Tanstack Query:一个强大的数据获取和操作库,能够帮助开发者简化数据获取的过程,同时提供了缓存、数据重新验证等功能,可以极大地提高数据获取的效率和用户体验。
-
Axios:虽然不是专门的 Vue 插件,但在 Vue 项目中广泛使用。它是一个基于 Promise 的 HTTP 客户端,用于在 Vue 应用中发送 HTTP 请求,与后端服务器进行数据交互。
-
UI 组件库相关:
-
Element Plus:一套为开发者、设计师和产品经理准备的基于 Vue 3.0 的桌面端组件库,提供了丰富的 UI 组件,如按钮、表单、表格、弹窗等,具有良好的兼容性和可定制性。
-
Ant Design of Vue:Ant Design 的 Vue 实现,适用于开发和服务于企业级后台产品,拥有大量高质量的组件,能够帮助开发者快速构建美观、功能强大的后台管理系统。
-
NaiveUI:是一个图森的 Vue 3 组件库,文档完整,组件风格简洁美观,在实际项目开发中使用较为方便。
-
Vant:有赞的轻量、可靠的移动端组件库,提供了大量适用于移动端的 UI 组件,如轮播图、Tab 栏、下拉刷新等,能够帮助开发者快速构建移动端应用。
-
Quasar:可以轻松构建高性能和高质量的 Vue.js 3 用户界面,功能强大,但没有中文文档,对于有一定技术水平的开发者来说是一个不错的选择。
-
可视化相关:
-
Vue-Echarts:对百度 Echarts 的封装,使开发者能够在 Vue 项目中方便地使用 Echarts 强大的数据可视化功能,创建各种类型的图表,如柱状图、折线图、饼图、地图等。
-
pdfvuer:一个 PDF 查看器插件,使用 Mozilla 的 PDF.js,支持 Vue 2 和 Vue 3,方便在 Vue 应用中查看和操作 PDF 文件。
-
工具类插件:
-
unplugin-vue-components:按需组件自动导入插件,开箱即用地支持 Vue 2 和 Vue 3,能够只注册你使用的组件,避免了不必要的组件加载,提高了应用的性能。
-
@vueuse/gesture:手势库,为应用程序添加各种手势交互功能,如滑动、缩放、旋转等,使应用程序具有更好的交互性。
-
vue-i18n-next:Vue 3 的国际化插件,方便开发者实现多语言支持,使应用程序能够适应不同地区的用户需求。
-
vue-print-nb:用于打印的指令包装器,提供了简单、快速、方便、轻便的打印功能。
-
布局相关:
-
vue-grid-layout:一个 Vue.js 的网格布局系统,允许开发者轻松创建和管理复杂的网格布局,实现灵活的页面布局效果。
-
vue-draggable:实现拖放功能,并能同步视图模型数组,方便开发者实现可拖动的组件和元素,增强用户操作体验。
02 插件的基本使用
什么是 Vue 插件
在 Vue 中,插件是一种可以增强 Vue 核心功能的扩展方式。插件可以为 Vue 添加全局方法、全局属性、全局指令、混入(mixins)以及自定义选项等。通过插件,我们可以将一些通用的功能封装起来,以便在多个 Vue 项目中重复使用。
创建一个 Vue 插件
假设我们要创建一个简单的日志插件,用于在 Vue 应用的生命周期钩子中打印日志信息。
-
创建插件文件
创建一个名为vue-log-plugin.js
的文件。export default { install(Vue, options) { Vue.mixin({ created() { console.log(`Component created: ${this.$options.name}`); }, beforeDestroy() {console.log(`Component beforeDestroy: ${this.$options.name}`); }, }); },};
在这个插件中,我们使用了Vue.mixin
方法在每个组件的生命周期钩子中添加了日志打印功能。
使用 Vue 插件
-
引入插件
在你的 Vue 项目中,可以在入口文件(通常是main.js
)中引入插件。import Vue from 'vue'; import App from './App.vue'; import VueLogPlugin from './plugins/vue-log-plugin'; Vue.use(VueLogPlugin); new Vue({render: (h) => h(App),}).$mount('#app');
现在,当你的 Vue 应用中的组件被创建和销毁时,插件会在控制台打印相应的日志信息。
插件的参数传递
插件可以接收参数,以便在安装时进行配置。在我们的日志插件中,可以添加一个参数来控制是否打印日志信息。
-
修改插件文件
修改vue-log-plugin.js
文件,添加一个参数来控制日志打印。export default { install(Vue, options) {const shouldLog = options && options.enableLog; Vue.mixin({ created() {if (shouldLog) {console.log(`Component created: ${this.$options.name}`); } }, beforeDestroy() {if (shouldLog) {console.log(`Component beforeDestroy: ${this.$options.name}`); } }, }); },};
-
使用带参数的插件在入口文件中传递参数给插件。
全局方法和属性的添加
插件还可以添加全局方法和属性。例如,我们可以创建一个插件来添加一个全局的$hello
方法和$greeting
属性。
-
创建插件文件
创建一个名为vue-global-plugin.js
的文件。
使用插件在入口文件中引入并使用插件。
import Vue from 'vue';
import App from './App.vue';
import VueGlobalPlugin from './plugins/vue-global-plugin';
Vue.use(VueGlobalPlugin); new Vue({render: (h) => h(App),}).$mount('#app');
现在,在任何 Vue 组件中都可以通过this.$hello()
调用全局方法,通过this.$greeting
访问全局属性。
全局指令的添加
插件也可以添加全局指令。例如,我们创建一个插件来添加一个全局指令v-focus
,用于自动聚焦元素。
-
创建插件文件
创建一个名为vue-directive-plugin.js
的文件。
-
使用插件在入口文件中引入并使用插件。
现在,在任何 Vue 组件中可以使用v-focus
指令来自动聚焦元素,例如<input v-focus />
。
通过以上步骤,你可以创建和使用 Vue 插件来扩展 Vue 的功能,提高开发效率和代码的可维护性。
03 更多 vue 插件看这里
vue-chartkick- VueJS一行代码实现优美图表
vue-ztree- 用 vue 写的树层级组件
vue-m-carousel- vue 移动端轮播组件
vue-datepicker-simple- 基于vue的日期选择器
vue-tabs- 多tab页轻型框架
eme- 优雅的Markdown编辑器
vue-multiselect- Vue.js选择框解决方案
vue-table- 简化数据表格
VueCircleMenu- 漂亮的vue圆环菜单
vue-chat- vuejs和vuex及webpack的聊天示例
radon-ui- 快速开发产品的Vue组件库
vue-waterfall- Vue.js的瀑布布局组件
vue-carbon- 基于 vue 开发MD风格的移动端
vue-beauty- 由vue和ant design创建的优美UI组件
vue-blu- 帮助你轻松创建web应用
element- 饿了么出品的Vue2的web UI工具套件
mint-ui- Vue 2的移动UI元素
iview- 基于 Vuejs 的开源 UI 组件库
Keen-UI- 轻量级的基本UI组件合集
vue-material- 通过Vue Material和Vue 2建立精美的app应用
muse-ui- 三端样式一致的响应式 UI 库
vuetify- 为移动而生的Vue JS 2组件框架
vonic- 快速构建移动端单页应用
vueAdmin- 基于vuejs2和element的简单的管理员模板
vue-syntax-highlight- Sublime Text语法高亮
vue-infinite-scroll- VueJS的无限滚动指令
Vue.Draggable- 实现拖放和视图模型数组同步
vue-awesome-swiper- vue.js触摸滑动组件
vue-calendar- 日期选择插件
bootstrap-vue- 应用于Vuejs2的Twitter的Bootstrap 4组件
vue-swipe- VueJS触摸滑块
vue-amap- 基于Vue 2和高德地图的地图组件
vue-chartjs- vue中的Chartjs的封装
vue-datepicker- 日历和日期选择组件
markcook- 好看的markdown编辑器
vue-google-maps- 带有双向数据绑定Google地图组件
vue-progressbar- vue轻量级进度条
vue-picture-input- 移动友好的图片文件输入组件
vue-infinite-loading- VueJS的无限滚动插件
vue-upload-component- Vuejs文件上传组件
vue-datetime-picker- 日期时间选择控件
vue-scroller- Vonic UI的功能性组件
vue2-calendar- 支持lunar和日期事件的日期选择器
vue-video-player- VueJS视频及直播播放器
vue-fullcalendar- 基于vue.js的全日历组件
rubik- 基于Vuejs2的开源 UI 组件库
VueStar- 带星星动画的vue点赞按钮
vue-mugen-scroll- 无限滚动组件
<360>mint-loadmore- VueJS的双向下拉刷新组件vue-tables-2- 显示数据的bootstrap样式网格
vue-virtual-scroller- 带任意数目数据的顺畅的滚动
DataVisualization- 数据可视化
vue-quill-editor- 基于Quill适用于Vue2的富文本编辑器
Vueditor- 所见即所得的编辑器
vue-html5-editor- html5所见即所得编辑器
vue-msgbox- vuejs的消息框
vue-slider- vue 滑动组件
vue-core-image-upload- 轻量级的vue上传插件
vue-slide- vue轻量级滑动组件
vue-lazyload-img- 移动优化的vue图片懒加载插件
vue-drag-and-drop-list- 创建排序列表的Vue指令
vue-progressive-image- Vue的渐进图像加载插件
vuwe- 基于微信WeUI所开发的专用于Vue2的组件库
vue-dropzone- 用于文件上传的Vue组件
vue-charts- 轻松渲染一个图表
vue-swiper- 易于使用的滑块组件
vue-images- 显示一组图片的lightbox组件
vue-carousel-3d- VueJS的3D轮播组件
vue-region-picker- 选择中国的省份市和地区
vue-typer- 模拟用户输入选择和删除文本的Vue组件
vue-impression- 移动Vuejs2 UI元素
vue-datatable- 使用Vuejs创建的DataTableView
vue-instant- 轻松创建自动提示的自定义搜索控件
vue-dragging- 使元素可以拖拽
vue-slider-component- 在vue1和vue2中使用滑块
vue2-loading-bar- 最简单的仿Youtube加载条视图
vue-datepicker- 漂亮的Vue日期选择器组件
vue-video- Vue.js的HTML5视频播放器
vue-toast-mobile- VueJS的toast插件
vue-image-crop-upload- vue图片剪裁上传组件
vue-tooltip- 带绑定信息提示的提示工具
vue-highcharts- HighCharts组件
vue-touch-ripple- vuejs的触摸ripple组件
coffeebreak- 实时编辑CSS组件工具
vue-datasource- 创建VueJS动态表格
vue2-timepicker- 下拉时间选择器
vue-date-picker- VueJS日期选择器组件
vue-scrollbar- 最简单的滚动区域组件
vue-quill- vue组件构建quill编辑器
vue-google-signin-button- 导入谷歌登录按钮
vue-svgicon- 创建svg图标组件的工具
vue-float-label- VueJS浮动标签模式
vue-baidu-map- 基于 Vue 2的百度地图组件库
vue-social-sharing- 社交分享组件
vue2-editor- HTML编辑器
vue-tagsinput- 基于VueJS的标签组件
vue-easy-slider- Vue 2.x的滑块组件
datepicker- 基于flatpickr的时间选择组件
vue-chart- 强大的高速的vue图表解析
vue-music-master- vue手机端网页音乐播放器
handsontable- 网页表格组件
vue-simplemde- VueJS的Markdown编辑器组件
vue-popup-mixin- 用于管理弹出框的遮盖层
cubeex- 包含一套完整的移动UI
vue-fullcalendar- vue FullCalendar封装
vue-material-design- Vue MD风格组件
vue-morris- Vuejs组件封装Morrisjs库
we-vue- Vue2及weui1开发的组件
vue-image-clip- 基于vue的图像剪辑组件
vue-bootstrap-table- 可排序可检索的表格
vue-radial-progress- Vue.js放射性进度条组件
vue-slick- 实现流畅轮播框的vue组件
vue-pull-to-refresh- Vue2的上拉下拉
vue-form-2- 全面的HTML表单管理的解决方案
vue-side-nav- 响应式的侧边导航
mint-indicator- VueJS移动加载指示器插件
chartjs- Vue Bulma的chartjs组件
vue-scroll- vue滚动
vue-ripple- 制作谷歌MD风格涟漪效果的Vue组件
vue-touch-keyboard- VueJS虚拟键盘组件
vue-verify-pop- 带气泡提示的vue校验插件
vue-parallax- 整洁的视觉效果
vue-img-loader- 图片加载UI组件
vue-typewriter- vue组件类型
vue-smoothscroll- smoothscroll的VueJS版本
vue-city- 城市选择器
vue-tree- vue树视图组件
vue-ios-alertview- iOS7+ 风格的alertview服务
dd-vue-component- 订单来了的公共组件库
paco-ui-vue- PACOUI的vue组件
vue-cmap- Vue China map可视化组件
vue-button- Vue按钮组件
开发框架
vue.js- 流行的轻量高效的前端组件化方案
vue-admin- Vue管理面板框架
electron-vue- Electron及VueJS快速启动样板
vue-2.0-boilerplate- Vue2单页应用样板
vue-spa-template- 前后端分离后的单页应用开发
Framework7-Vue- VueJS与Framework7结合
vue-bulma- 轻量级高性能MVVM Admin UI框架
vue-webgulp- 仿VueJS Vue loader示例
vue-element-starter- vue启动页
实用库
vuex- 专为 Vue.js 应用程序开发的状态管理模式
vuelidate- 简单轻量级的基于模块的Vue.js验证
qingcheng- qingcheng主题
vue-desktop- 创建管理面板网站的UI库
vue-meta- 管理app的meta信息
vue-axios- 将axios整合到VueJS的封装
vue-svg-icon- vue2的可变彩色svg图标方案
avoriaz- VueJS测试实用工具库
vue-framework7- 结合VueJS使用的Framework7组件
vue-bootstrap-modal- vue的Bootstrap样式组件
vuep- 用实时编辑和预览来渲染Vue组件
vue-online- reactive的在线和离线组件
vue-lazy-render- 用于Vue组件的延迟渲染
vue-password-strength-meter- 交互式密码强度计
element-admin- 支持 vuecli 的 Element UI 的后台模板
vue-electron- 将选择的API封装到Vue对象中的插件
cleave- 基于cleave.js的Cleave组件
vue-events- 简化事件的VueJS插件
vue-shortkey- 应用于Vue.js的Vue-ShortKey 插件
vue-cordova- Cordova的VueJS插件
vue-router-transition- 页面过渡插件
vue-gesture- VueJS的手势事件插件
http-vue-loader- 从html及js环境加载vue文件
vue-qart- 用于qartjs的Vue2指令
vuemit- 处理VueJS事件
vue-websocket- VueJS的Websocket插件
vue-local-storage- 具有类型支持的Vuejs本地储存插件
lazy-vue- 懒加载图片
vue-bus- VueJS的事件总线
vue-reactive-storage- vue插件的Reactive层
vue-notifications- 非阻塞通知库
vue-lazy-component- 懒加载组件或者元素的Vue指令
v-media-query- vue中添加用于配合媒体查询的方法
vue-observe-visibility- 当元素在页面上可见或隐藏时检测
vue-ts-loader- 在Vue装载机检查脚本
vue-pagination-2- 简单通用的分页组件
vuex-i18n- 定位插件
Vue.resize- 检测HTML调整大小事件的vue指令
vuex-shared-mutations- 分享某种Vuex mutations
vue-file-base64- 将文件转换为Base64的vue组件
modal- Vue Bulma的modal组件
Famous-Vue- Famous库的vue组件
leo-vue-validator- 异步的表单验证组件
Vue-Easy-Validator- 简单的表单验证
vue-truncate-filter- 截断字符串的VueJS过滤器
vue-zoombox- 一个高级zoombox
vue-input-autosize- 基于内容自动调整文本输入的大小
vue-lazyloadImg- 图片懒加载插件
服务端
nuxt.js- 用于服务器渲染Vue app的最小化框架
express-vue- 简单的使用服务器端渲染vue.js
vue-ssr- 非常简单的VueJS服务器端渲染模板
vue-ssr- 结合Express使用Vue2服务端渲染
vue-easy-renderer- Nodejs服务端渲染
辅助工具
DejaVue- Vuejs可视化及压力测试
vue-play- 展示Vue组件的最小化框架
vscode-VueHelper- 目前vscode最好的vue代码提示插件
vue-generate-component- 轻松生成Vue js组件的CLI工具
vue-multipage-cli- 简单的多页CLI
VuejsStarterKit- vuejs starter套件
发表评论 取消回复