VueUse功能精简你的dependencies

目录
  • 引言
  • 使用前安装
  • 网页全屏
  • 剪切板
  • 取色器
  • 拖拽元素
  • 本地缓存
  • 其他
    • 安全区域
    • 动态修改favicon

引言

VueUse是一个基于Composition API的实用函数集合,支持Vue2Vue3,使用它可以帮助我们快速实现日常开发中一些常见的需求。本文将分享列举几个常见的需求来通过VueUse实现,让大家感受其魅力!

使用前安装

Vue3:

npm i @vueuse/core --save

Vue2 的话还需要额外安装 @vue/composition-api

npm i @vue/composition-api --save

网页全屏

在后台管理系统中,往往都有一个开启网页全屏的功能,大部分都是使用screenfull插件实现的。

VueUse里为我们提供了相关的API,让我们可以轻松的实现网页全屏。

<template>
  <el-button @click="toggle">
    {{ isFullscreen ? '退出全屏' : '开启全屏' }}
  </el-button>
</template>
<script lang="ts" setup>
import { useFullscreen } from '@vueuse/core'
const { isFullscreen, toggle } = useFullscreen()
</script>

useFullscreen也支持传入某个元素,这样只会对该元素区域进行全屏显示。

<template>
  <el-button @click="toggle">
    开启全屏
  </el-button>
  <div ref="el">把我全屏</div>
</template>
<script lang="ts" setup>
import { useFullscreen } from '@vueuse/core'
const el = ref<HTMLElement | null>(null)
const { toggle } = useFullscreen(el)
</script>

剪切板

以前在Vue2里都是用vue-clipboard2插件来实现的,同样的,用VueUse也可以轻松实现。

<template>
  <el-button @click="onClick">copy</el-button>
</template>
<script lang="ts" setup>
import { useClipboard } from '@vueuse/core'
const { isSupported, copy } = useClipboard()
const onClick = () => {
  if (isSupported) {
    copy('我是被复制的内容').then(() => {
      console.log('copy success')
    })
  } else {
    alert('Your browser does not support Clipboard API')
  }
}
</script>

取色器

<template>
  <div>
    <el-button @click="open">打开取色器</el-button>
    <el-button type="primary" style="width: 100px">按钮</el-button>
    <p>颜色:{{ sRGBHex }}</p>
  </div>
</template>
<script lang="ts" setup>
import { useEyeDropper } from '@vueuse/core'
const { open, sRGBHex } = useEyeDropper()
</script>

调用open函数即可打开取色器,在任意地方点击鼠标左键即可响应式得到颜色。

拖拽元素

<template>
  <div
    ref="el"
    style="position: fixed; width: 400px; height: 400px; background: red"
    :style="style"
  ></div>
  <p>x: {{ x }},y:{{ y }}</p>
</template>
<script lang="ts" setup>
import { useDraggable } from '@vueuse/core'
const el = ref<HTMLElement | null>(null)
const { x, y, style } = useDraggable(el)
</script>

简单的几行代码就能让元素可拖拽。

本地缓存

<script lang="ts" setup>
import { useStorage } from '@vueuse/core'
const state = useStorage('test', { id: 'xxxx', name: 'james' })
</script>

上面的代码会以test作为key存入一个对象,返回值是一个ref类型。

该操作可以让我们不用像使用原生API一样进行 json to string 的转换。

接着我们便可以很方便的操作对象里的某一个字段,而不需要我们使用原生API那样取出一整个对象再进行替换,可以说是非常令人舒适了。

state.value.id == 'abc' // 查看localStorage可以发现id被更改为abc

使用sessionStorage方式:

const state = useStorage('test', { id: 'xxxx', name: 'james' }, sessionStorage)

其他

安全区域

使用useScreenSafeArea可以轻松获得屏幕的安全区域距离,再也不用担心刘海屏和底部安全距离了。

<script lang="ts" setup>
import { useScreenSafeArea } from '@vueuse/core'
const { top, right, bottom, left } = useScreenSafeArea()
</script>

动态修改favicon

如果在项目里需要我们去动态修改favicon,创建标签、添加元素、替换地址等等操作,虽然代码量也不是很多,但显然用下面的方式要方便得多了。

<template>
  <el-button @click="onClick">切换favicon</el-button>
</template>
<script lang="ts" setup>
import { useFavicon } from '@vueuse/core'
import Logo from '@/assets/image/logo.png'
const icon = useFavicon()
const onClick = () => {
  icon.value = Logo
}
</script>

如上,我们可以动态的将一张图片设置为网站的icon。

以上就是VueUse功能精简你的dependencies的详细内容,更多关于VueUse精简dependencies的资料请关注我们其它相关文章!

(0)

相关推荐

  • nodejs更新package.json中的dependencies依赖到最新版本的方法

    如果手动去修改dependencies中各个包的版本号,那就太麻烦了,借助npm-check-updates工具可以很方便的将package.json中的依赖包版本号更新为最新版本. 1.安装: npm install -g npm-check-updates 使用: 2.检查package.json中dependencies的最新版本: ncu 3.更新dependencies到新版本: ncu -u 更新全部dependencies到最新版本(包括当前指定版本范围满足最新版本号的,比如^4.

  • 详解Maven项目Dependencies常见报错及解决方案

    个人最近项目中所遇到的问题,记录下便自己和同样遇到问题的小伙伴提供一个参考. 通常Maven里报红波浪线的常见问题 ①可能是子工程没有继承父工程 注意父工程中有中对应的module: <groupId>com.fred.parent</groupId> <artifactId>mall</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>

  • 解决maven中只有Lifecycle而Dependencies和Plugins消失的问题

    idea2019.2.2中,导入新的maven项目后,在maven project中只有LifeCycle,没有Dependencies和Plugins 的解决方法 其实主要原因是因为IDEA2019.2.2与maven3.6.2(已测试)及以上(未测试)不兼容 话不多说上图 如图,在idea中导入一个新的maven项目,maven中,只有Lifecycle,而Dependencies和Plugins消失,并且点击reimport无效. 解决方法 从maven官网中下载maven3.6.1版本,

  • IDEA中的maven没有dependencies解决方案

    目录 IDEA maven没有dependencies IDEA导入新项目没有dependencies跟plugins 解决办法 IDEA maven没有dependencies IDEA导入新项目没有dependencies跟plugins 如图: 解决办法 网上方法很多,重新导入model,父工程关联问题等方法,都无效 直接点开右侧maven设置,点击lifecycle里的compile,然后等待下载完 compile完成后点击maven设置左上角的刷新,初始化完后,dependencies

  • VueUse功能精简你的dependencies

    目录 引言 使用前安装 网页全屏 剪切板 取色器 拖拽元素 本地缓存 其他 安全区域 动态修改favicon 引言 VueUse是一个基于Composition API的实用函数集合,支持Vue2和Vue3,使用它可以帮助我们快速实现日常开发中一些常见的需求.本文将分享列举几个常见的需求来通过VueUse实现,让大家感受其魅力! 使用前安装 Vue3: npm i @vueuse/core --save Vue2 的话还需要额外安装 @vue/composition-api npm i @vue

  • 作为老司机使用 React 总结的 11 个经验教训

    原文作者:Jolyon Russ 本文编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58e83f01a58c240ae35bb8e1 英文连接:11 lessons learned as a React contractor 转载请注明出处,保留原文链接以及作者信息 一开始在 React 路上摸爬滚打的时候,不知道该寻找些什么,但是这些年来,回头总结经验才发现,要找的已经在脑子里了.下面是我自己在学习 React 历程的一

  • vue3封装放大镜组件的实例代码

    目录 组件基础结构 目的:实现图片放大镜功能 安装vueuse 功能实现 完整代码 总结 组件基础结构 结尾有完整代码可直接复制使用 目的:封装图片预览组件,实现鼠标悬停切换效果 落地代码: <template> <div class="goods-image"> <div class="middle"> <img :src="images[currIndex]" alt="">

  • SpringCloud gateway+zookeeper实现网关路由的详细搭建

    目录 准备工作 网关搭建 准备工作 需要两个项目去实现路由demo1为springboot项目用于接入网关,测试网关连通性gateway为网关路由项目 网关搭建 1.电脑安装好zookeeper,并且正常运行服务Zookeeper官网 2.创建一个spring cloud gateway项目,并引入zookeeper功能 pom文件配置 <dependencies> <dependency> <groupId>org.springframework.cloud</

  • sql server 2008 r2 express 精简版与企业版的区别

    sql server 2008 r2 express是什么版本 express是精简版的意思 r2是2008的第2版本,推荐使用. SQL Server Express 2008 r2 可以理解为 "学习版", 就是 没有某些 高级的功能, 但是用于 学习 SQL , 以及 简单的使用, 是足够了.微软网站,免费下载的.sql server 2008 r2 可以理解为 "专业版" 或者 "企业版", 具备一些高级的功能.是要付费的.公司使用的话,

  • jQuery实现可兼容IE6的遮罩功能详解

    本文实例讲述了jQuery实现可兼容IE6的遮罩功能.分享给大家供大家参考,具体如下: 最精简,最强大的 jQuery 遮罩层效果. 当浏览器改变大小时,遮罩层的大小会相应地改变. 遮罩层上方的对话框可随 scroll 的改变而改变,即对话框在浏览器居中显示. HTML 代码 <div id="main"><a onclick="showBg();" href="#" rel="external nofollow&qu

  • Vue实现typeahead组件功能(非常靠谱)

     前言 之前那个typeahead写的太早,不满足当前的业务需求. 而且有些瑕疵,还有也不方便传入数据和响应数据.. 于是就推倒了重来,写了个V2的版本 看图,多了一些细节的考虑;精简了实现的逻辑代码 效果图 实现的功能 1: 鼠标点击下拉框之外的区域关闭下拉框 2: 支持键盘上下键选择,支持鼠标选择 3: 支持列表过滤搜索 4: 支持外部传入列表JSON格式的映射 5: 支持placeholder的传入 6: 选中对象的响应(.sync vue2.3的组件通讯的语法糖) 7: 箭头icon的映

  • Vue + Webpack + Vue-loader学习教程之功能介绍篇

    Vue-loader 是什么? vue-loader 是一个加载器,能把如下格式的 Vue 组件转化成JavaScript模块. vue-loader 提供了一些非常酷炫的特性: ES2015默认可用: 在每个 Vue 组件内支持其他的 Webpack 加载器,如用于<style>的 SASS 和用于<template> 的 Jade. 把 <style> 和 <template> 内引用的静态资源作为模块依赖项对待,并用Webpack 加载器处理. 对每个

  • 基于vue的换肤功能的示例代码

    最近在做的一个几月vue的移动端小demo,其中有一块是实现各个页面的统一换肤功能的.想着写一篇文章,来写一写实现过程中遇到的一些问题. 项目github地址 项目github地址 一 先看一下实现效果吧 设置主题颜色 讲道理这么一个功能,我觉得这么几点可以说下,分步实现: 1. 色值的选取 2. scss 的一些小众用法(多变量CSS值的批量设置) 3. 全局事件巴士的应用 1 色值的选取和原则 推荐大家看下蚂蚁金服的设计指引,里面对常见的交互和界面设计有一套不错的指引和建议,喜欢看书的也可以

  • 基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )

    概述 使用Vue2进行的仿手机QQ的webapp的制作,在ui上,参考了设计师kaokao的作品,作品由个人独立开发,源码中进行了详细的注释. 由于自己也是初学Vue2,所以注释写的不够精简,请见谅. 项目地址 https://github.com/jiangqizheng/vue-MiniQQ 项目已实现功能 对话功能--想着既然是QQ总要能进行对话交流,所以在项目中接入了图灵聊天机器人,可以与列表中的每个人物进行对话. 左滑删除--左滑删除相关消息. 搜索页面--点击右上角搜索按钮,能够进入

随机推荐