什么是vue插件?
从功能上说,插件是为Vue添加全局功能的一种机制,比如给Vue添加一个全局组件,全局指令等;
从代码结构上说,插件就是一个必须拥有install方法的对象,这个方法的接收的第一个参数是Vue构造函数,还可以接收一个可选的参数,用于配置插件:
var myplugin = { install:function(Vue, options){ ... } }
从意义上来说,正如jQuery的$.fn使jQuery有了一个庞大的生态一样,Vue的插件机制使Vue形成了一个生态系统,你可以开发一个插件给别人复用。
当在vue项目中请求后台接口时,常常会使用 loding 过渡数据的加载时间。
如果 loading 作为一个全局的加载状态,应该写在项目中的App.vue中
<template> <div id="app"> <router-view></router-view> <loading v-if='LOADING'/> //自己封装的loading 组件 </div> </template> <script> export default { name: 'App' } </script>
这个Loading 组件通过 LOADING 的状态显示隐藏。我们希望在请求某个接口的时候,将 LOADING 改为true,当接口请求后改为false,这样就能实现loading的过渡效果了。
但是这里有一个问题,loading组件的显示和隐藏是通过 LOADING 来控制的, 如果将 LOADING 直接定义在 App.vue 中,每次请求中直接修改 LOADING 是很麻烦的,所以推荐使用 vuex
第一步:按照官网的例子,在App.vue的同层目录下新建一个 store.js 文件.
// store.js const store = new Vuex.Store({ state: { LOADING: false }, mutations: { showLoading(state){ state.LOADING = true }, hideLoading (state) { state.LOADING = false } } })
第二步: 在 main.js 中引入 store.js,并挂载到 Vue 实列上
import store from './store' new Vue({ el: '#app', store, template: '<App/>', components: { App } })
第三步,在请求中改变 LOADING 的状态
Vue 项目中 API 的请求方法有很多,如果项目比较简单,数据量比较小,可以在在页面中直接使用像 axios、ajax、request等的 post/get 请求。以 axios 为例:
methods:{ //通常请求都希望以异步的方式,方便数据操作 async test(){ this.$store.commit('showLoading') //这里需要将 axios 提前挂载到 Vue的属性上。 await this.$axios.get('xxx/xxxx/xxx') this.$store.commit('hideLoading') } }
第四步: 监听 LOADING 状态
Vuex 中 state 是动态更新的,也就是不管在任何地方对某一个 state的值做了修改,那么依赖该数据的 DOM 也将会发生改变。修改 App.vue 文件,监听 LOADING 的值的变化。
<template> <div id="app"> <router-view></router-view> <loading v-if='LOADING'/> //自己封装的loading 组件 </div> </template> <script> import {mapState} from 'vuex' export default { computed:{ ...mapState([ 'LOADING' ]) }, name: 'App' } </script>
总结:
loading的过渡效果最根本的就是通过 state 来控制 loading 组件的显示和隐藏。在请求接口前使该状态为 为 true,接口完成后改为 false。
简单的 loading 组件。
一个简单的 loading 组件,应该会有一个遮罩层,一个过度动画,或者一个loading 说明。
<template> <section> <div class='mock'> <div class='main'> loading... </div> </div> </section> </template> <style> section{ width:100vh; height:100vh; position:relative; } .mock{ tion{ width:100vh; height:100vh; position:absolute; z-index:100; background-color:#abb2bf; } .main{ margin:200px auto; text-align:center: } </style>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍Vue项目中ESlint规范示例代码,包括了Vue项目中ESlint规范示例代码的使用技巧和注意事项,需要的朋友参考一下 前言 eslint是一种代码风格管理的工具,可以制定一些代码编写规范,在vue项目中经常用到,本文就给大家分享了开发项目中使用的eslint校验规范,供参考: 示例代码 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,
本文向大家介绍SpringBoot项目中使用Mockito的示例代码,包括了SpringBoot项目中使用Mockito的示例代码的使用技巧和注意事项,需要的朋友参考一下 Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试;生成测试数据初始化数据库用于测试;Spring Boot可以跟BDD(Behavier Driven Development)工
本文向大家介绍Vue组件之Tooltip的示例代码,包括了Vue组件之Tooltip的示例代码的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要Alert 组件的大致框架, 提供少量可配置选项。 旨在大致提供思路 tooltip 常用于展示鼠标 hover 时的提示信息。 模板结构 大致结构DOM结构 一个div 包含 箭头 及 气泡内容。 v-bind中可选tooltip位置,是否禁用,及
本文向大家介绍在Vue中使用antv的示例代码,包括了在Vue中使用antv的示例代码的使用技巧和注意事项,需要的朋友参考一下 一,在vue原型中使用 1.首先安装antv/g2 2.在main.js中挂在到vue原型实例中 3.在vue文件中可以直接在mounted生命周期中直接使用 二,按需引用 1.还是安装atv/g2 2.直接在组件中按需引入 示例代码 到此这篇关于在Vue中使用antv的
本文向大家介绍JavaWeb项目FullCalendar日历插件使用的示例代码,包括了JavaWeb项目FullCalendar日历插件使用的示例代码的使用技巧和注意事项,需要的朋友参考一下 本文介绍了JavaWeb项目FullCalendar日历插件使用的示例代码,分享给大家,具体如下: 使用FullCalendar需要引用的文件 1.css文件 2.js文件 生成日历主界面 FullCalen
本文向大家介绍开发Vue树形组件的示例代码,包括了开发Vue树形组件的示例代码的使用技巧和注意事项,需要的朋友参考一下 本文介绍了Vue树形组件的示例代码,分享给大家,具体如下: 使用SemanticUI和vue做一个menubar组件,实现方法大概是这样的: 使用时,假如父组件app使用到了menubar组件,那么data中需要定义一下items数据,例 : 里面的click事件是定义了,当在工