网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

Vue 插件是一种可以增强 Vue 核心功能的扩展方式,能为 Vue 添加全局方法、属性、指令、混入及自定义选项等,提升开发效率和项目功能丰富度。

 

01 最常用的 Vue 插件:

  1. 状态管理相关:

    • Pinia:是 Vue 的新一代状态管理库,逐渐取代 Vuex。它具有轻量级、易于使用、配置简单等优点,能方便地在组件之间共享和管理状态,让状态管理更加清晰和高效。

    • vuex-persistedstate:用于在页面重新加载时保持和重载 Vuex 的状态。可以将应用程序的状态保存到本地存储(localStorage)或会话存储(sessionStorage)中,以便在用户刷新页面或关闭浏览器后仍然能够恢复之前的状态。

    • pinia-plugin-persistedstate:专门为 Pinia 商店提供的可配置持久性插件,帮助开发者更方便地管理 Pinia 状态的持久化。

  2. 数据获取与处理相关:

    • Tanstack Query:一个强大的数据获取和操作库,能够帮助开发者简化数据获取的过程,同时提供了缓存、数据重新验证等功能,可以极大地提高数据获取的效率和用户体验

    • Axios:虽然不是专门的 Vue 插件,但在 Vue 项目中广泛使用。它是一个基于 Promise 的 HTTP 客户端,用于在 Vue 应用中发送 HTTP 请求,与后端服务器进行数据交互。

  3. UI 组件库相关:

    • Element Plus:一套为开发者、设计师和产品经理准备的基于 Vue 3.0 的桌面端组件库,提供了丰富的 UI 组件,如按钮、表单、表格、弹窗等,具有良好的兼容性和可定制性。

    • Ant Design of Vue:Ant Design 的 Vue 实现,适用于开发和服务于企业级后台产品,拥有大量高质量的组件,能够帮助开发者快速构建美观、功能强大的后台管理系统。

    • NaiveUI:是一个图森的 Vue 3 组件库,文档完整,组件风格简洁美观,在实际项目开发中使用较为方便。

    • Vant:有赞的轻量、可靠的移动端组件库,提供了大量适用于移动端的 UI 组件,如轮播图、Tab 栏、下拉刷新等,能够帮助开发者快速构建移动端应用。

    • Quasar:可以轻松构建高性能和高质量的 Vue.js 3 用户界面,功能强大,但没有中文文档,对于有一定技术水平的开发者来说是一个不错的选择。

  4. 可视化相关:

    • Vue-Echarts:对百度 Echarts 的封装,使开发者能够在 Vue 项目中方便地使用 Echarts 强大的数据可视化功能,创建各种类型的图表,如柱状图、折线图、饼图、地图等。

    • pdfvuer:一个 PDF 查看器插件,使用 Mozilla 的 PDF.js,支持 Vue 2 和 Vue 3,方便在 Vue 应用中查看和操作 PDF 文件。

  5. 工具类插件:

    • unplugin-vue-components:按需组件自动导入插件,开箱即用地支持 Vue 2 和 Vue 3,能够只注册你使用的组件,避免了不必要的组件加载,提高了应用的性能。

    • @vueuse/gesture:手势库,为应用程序添加各种手势交互功能,如滑动、缩放、旋转等,使应用程序具有更好的交互性。

    • vue-i18n-next:Vue 3 的国际化插件,方便开发者实现多语言支持,使应用程序能够适应不同地区的用户需求。

    • vue-print-nb:用于打印的指令包装器,提供了简单、快速、方便、轻便的打印功能。

  6. 布局相关:

    • vue-grid-layout:一个 Vue.js 的网格布局系统,允许开发者轻松创建和管理复杂的网格布局,实现灵活的页面布局效果。

    • vue-draggable:实现拖放功能,并能同步视图模型数组,方便开发者实现可拖动的组件和元素,增强用户操作体验。

 

02 插件的基本使用

什么是 Vue 插件

在 Vue 中,插件是一种可以增强 Vue 核心功能的扩展方式。插件可以为 Vue 添加全局方法、全局属性、全局指令、混入(mixins)以及自定义选项等。通过插件,我们可以将一些通用的功能封装起来,以便在多个 Vue 项目中重复使用。

创建一个 Vue 插件

假设我们要创建一个简单的日志插件,用于在 Vue 应用的生命周期钩子中打印日志信息。

  1. 创建插件文件
    创建一个名为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 插件

  1. 引入插件
    在你的 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 应用中的组件被创建和销毁时,插件会在控制台打印相应的日志信息。

插件的参数传递

插件可以接收参数,以便在安装时进行配置。在我们的日志插件中,可以添加一个参数来控制是否打印日志信息。

  1. 修改插件文件
    修改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}`); } }, }); },};


  1. 使用带参数的插件在入口文件中传递参数给插件。

import Vue from 'vue'; import App from './App.vue'; import VueLogPlugin from './plugins/vue-log-plugin'; Vue.use(VueLogPlugin, { enableLog: true }); new Vue({render: (h) => h(App),}).$mount('#app');

全局方法和属性的添加

插件还可以添加全局方法和属性。例如,我们可以创建一个插件来添加一个全局的$hello方法和$greeting属性。

  1. 创建插件文件
    创建一个名为vue-global-plugin.js的文件。

export default { install(Vue, options) { Vue.prototype.$hello = function () {console.log('Hello from global method!'); }; Vue.prototype.$greeting = 'Hello, Vue!'; },};

使用插件在入口文件中引入并使用插件。


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,用于自动聚焦元素。

  1. 创建插件文件
    创建一个名为vue-directive-plugin.js的文件。

export default { install(Vue, options) { Vue.directive('focus', { inserted(el) { el.focus(); }, }); },};
  1. 使用插件在入口文件中引入并使用插件。

import Vue from 'vue'; import App from './App.vue'; import VueDirectivePlugin from './plugins/vue-directive-plugin'; Vue.use(VueDirectivePlugin); new Vue({render: (h) => h(App),}).$mount('#app');


现在,在任何 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套件

 

评论 0

暂无评论
3
1
0
立即
投稿
发表
评论
返回
顶部