# v-directives **Repository Path**: skrey/v-directives ## Basic Information - **Project Name**: v-directives - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-16 - **Last Updated**: 2024-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [点击查看详细文档](http://zwyznswwy.com/note/v-directive/start/) # vDirectives `vue3` ## 下载 ```js npm install @skrey/v-directive ``` ## 指令 - `v-debounce` 防抖指令 - `v-throttle` 节流指令 - `v-async` 同步指令 - `v-preview` 预览指令 - `v-focus` 聚焦指令 ## 使用 ### 全量使用 ```js [main.js] import vDirectives from '@skrey/v-directive' // createApp app.use(vDirectives) ``` ### 部分使用 ```js import { customVDirective } from '@skrey/v-directive' // createApp customVDirective(app, { useDirectives: ['async', 'preview'] }) ``` ## 指定别名 ```js import { customVDirective } from '@skrey/v-directive' // createApp customVDirective(app, { useDirectives: ['async', 'preview'], alias: { preview: 'p', // 使用 v-p 代替 v-preview throttle: 't' // 使用 v-t 代替 v-throttle } }) ``` ## 指令使用 ### `v-debounce` 防抖指令 在一定时间间隔内重复发起调用,则取消前一次调用 ```vue ``` 几点注意: - 默认事件 `click` - 默认防抖时间 `300ms` 更复杂的使用(修饰符和 `vue` 保持一致) ```vue
点击切换背景
// 表示绑定 contextmenu 事件, 防抖时长500ms并且阻止默认事件
点击切换背景
// 表示绑定 click 事件和 resize 事件,使用默认防抖时长,并且阻止冒泡和默认事件
点击切换背景
// 表示绑定默认的 click 事件,修改防抖时长为1000ms,并且阻止冒泡和默认事件 ``` ### `v-throttle` 节流指令 以一定的频率发起调用 ```vue ``` 几点注意: - 默认事件 `click` - 默认节流时间 `300ms` 更复杂的使用(修饰符和 `vue` 保持一致) ```vue
点击更新
// 表示绑定 contextmenu 事件, 节流时长500ms并且阻止默认事件
点击更新
// 表示绑定 click 事件和 resize 事件,使用默认节流时长,并且阻止冒泡和默认事件
点击更新
// 表示绑定默认的 click 事件,修改节流时长为1000ms,并且阻止冒泡和默认事件 ``` ### `v-async` 同步指令 当调用返回结果后(无论结果如何)才能发起下一次调用 ```vue ``` 几点注意: - 默认事件 `click` - 默认休眠时间 `0`,可以设置调用成功(无论结果如何)之后多久可以再次发起调用 更复杂的使用(修饰符和 `vue` 保持一致) ```vue
点击获取数据
// 表示绑定 contextmenu 事件, 休眠时长500ms并且阻止默认事件
点击获取数据
// 表示绑定 click 事件和 resize 事件,使用默认休眠时长,并且阻止冒泡和默认事件
点击获取数据
// 表示绑定默认的 click 事件,修改休眠时长为1000ms,并且阻止冒泡和默认事件 ``` ### `v-preview` 预览指令 用于图片预览 ```vue ``` 更复杂的使用: ```vue // binding.value 为 preview 的配置选项 ``` 可设置的配置有: ```js { margin: 24, // 缩放图像外边距 background: '#BADA55', // 缩放图像的背景 scrollOffset: 0, // 滚动以关闭缩放的距离 container: '#zoom-container', // 指定缩放容器 template: '#zoom-template', // 指定缩放模板 useInstance: (instance:Zoom) => {}, // useInstance 帮助我们拿到实例做进一步的处理 } ``` 默认配置 ```js { margin: 24, background: 'rgba(0,0,0,.3)', scrollOffset: 0, useInstance: () => {} } ``` 实例方法(部分) ```js instance.open() // 在调用 open 方法时立即触发。 instance.opened() // 在缩放完成动画后触发。 instance.close() // 在调用 close 方法时立即触发。 instance.toggle() // 打开时关闭,关闭时打开。 instance.closed() // 在缩小完成动画后触发。 instance.detach() // 在调用 detach 方法时触发。 instance.update() // 在调用 update 方法时触发。 instance.on('open', function (event) { console.log('Image is zoomed in', event) }) ``` > [点击前往 `medium-zoom`](https://www.npmjs.com/package/medium-zoom) ### `v-focus` 聚焦指令 让页面的输入框自动聚焦 - 对于 `input` 下列属性将起作用 'email', 'number', 'password', 'search', 'tel', 'text', 'url', 'datetime' - 对于 `textarea` 没有特殊要求 修饰符 - `global` 开启全局查找 - `autoFind` 自动查找 **注意** **类选择器 `.` 使用 `-v-`代替,例如 `v-focus:-v-className`** ```vue // 简单使用 // 指定选择器 -- 在 input 或者 textarea 上 则不起作用 // 指定选择器 -- 将寻找id = 'text' 的元素并使其聚焦,如果选择的为不可聚焦元素,则无效果, 开启自动查找可以聚焦符合条件的第一个 // 指定选择器 -- 将全局寻找id = 'text' 的元素并使其聚焦,如果选择的为不可聚焦元素,则无效果, 开启自动查找可以聚焦符合条件的第一个 // 配合 autoFind ```