当前位置: 首页 > news >正文

网站制作哪些做网站费用上海

网站制作哪些,做网站费用上海,连云港网站建设公司,购物网站建设和使用大家好#xff0c;我是若川。持续组织了近一年的源码共读活动#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与#xff0c;每周大家一起学习200行左右的源码#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。… 大家好我是若川。持续组织了近一年的源码共读活动感兴趣的可以 点此加我微信ruochuan12 参与每周大家一起学习200行左右的源码共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外目前建有江西|湖南|湖北籍前端群可加我微信进群。本文来自读者NewName 的投稿。基本我出一期源码共读就写一篇笔记的小伙伴他自己曾说学到很多同时更热爱学习了。日常开发中我们有时会遇到拷贝粘贴的功能笔者还记得曾经使用过react-copy-to-clipboard 和 vue-clipboard2。最近在看vueuse的时候发现了useClipboard就简单研究了一下日后vue3项目中如果有使用场景可以用一下。1.原生Clipboard在看useClipboard源码之前需要一些前置知识那就是原生Clipboard的API。首先通过一张图概览一下浏览器原生Clipboard的相关知识对上图涉及的知识逐一解释剪贴板 Clipboard API 提供了响应剪贴板命令与异步读写系统剪贴板的能力。从权限 Permissions API 获取权限之后才能访问剪贴板内容。Clipboard API 包括异步剪贴板 APIAsyncClipboard API和 剪贴板事件 APIClipboard Event API。Clipboard读取剪切板有两个方法read()和readText()分别用于读取数据比如图片和文本写入剪切板有两个方法write()和writeText()分别用于将任意数据写入和将文本写入。ClipboardEvent接口描述了与修改剪切板相关信息的事件包括剪切复制和粘贴。更多关于Clipboard API的细节以及兼容性问题您可以访问MDN文档详细学习。看一段示例代码navigator.clipboard.readText().then(clipText  document.querySelector(.editor).innerText  clipText);2.useClipboard2.1简介useClipboard是响应式的剪贴板 API。提供剪贴板命令(剪切、复制和粘贴)以及异步读取和写入系统剪贴板的能力。访问剪贴板内容需要获得Permission API的相关权限未经用户许可则不允许读取或更改剪贴板内容。2.2例子官方文档的示例代码如下所示script setup langts import { ref } from vue import { useClipboard, usePermission } from vueuse/coreconst input  ref()const { text, isSupported, copy }  useClipboard() const permissionRead  usePermission(clipboard-read) const permissionWrite  usePermission(clipboard-write) /scripttemplatediv v-ifisSupportednoteClipboard Permission: read b{{ permissionRead }}/b | writeb{{ permissionWrite }}/b/notepCurrent copied: code{{ text || none }}/code/pinput v-modelinput typetextbutton clickcopy(input)Copy/button/divp v-elseYour browser does not support Clipboard API/p /template首先引入 useClipboard从useClipboard中解构出text, isSupported, copy。text是当前从剪切板读取到的文本isSupported用于判断当前浏览器是否支持剪切板APIcopy是将文本写入到剪切板的方法。usePermission用于获取权限使用其查看了clipboard-read和clipboard-write的权限并将权限展示到页面上。通过下图可以看到读取的权限是prompt也就是询问而写入操作被授权了即granted。定义了响应式的变量input绑定到input标签上当用户点击按钮时则调用copy()方法将input的内容写入剪切板。初始时我们没有向剪切板写入内容text是空字符串所以页面显示当前拷贝内容为none当用户输入123点击copy按钮后text的值也就是从剪切板读取到的文本变成了123所以页面展示内容也变成了1232.3源码这里我们只保留了核心逻辑的40多行代码您可以查看源码 浏览全部代码。export function useClipboard(options: ClipboardOptionsMaybeRefstring | undefined  {}): ClipboardReturnboolean {const {navigator  defaultNavigator,read  false,source,copiedDuring  1500,}  optionsconst events  [copy, cut]const isSupported  Boolean(navigator  clipboard in navigator)const text  ref() // 与剪切板内容相对应的响应式值const copied  ref(false) // 是否拷贝完成const timeout  useTimeoutFn(()  copied.value  false, copiedDuring)// 更新textfunction updateText() {navigator!.clipboard.readText().then((value)  {text.value  value})}// 监听拷贝和剪切事件if (isSupported  read) {for (const event of events)useEventListener(event as WindowEventName, updateText)}// 将响应式值value拷贝到textasync function copy(value  unref(source)) {if (isSupported  value ! null) {await navigator!.clipboard.writeText(value)text.value  valuecopied.value  truetimeout.start()}}return {isSupported,text: text as ComputedRefstring,copied: copied as ComputedRefboolean,copy,} }2.3.1参数1navigator默认为window.navigator, 其定义如下export const defaultNavigator  /* #__PURE__ */ isClient ? window.navigator : undefined2read表示是否允许读取剪切板的内容默认值是false, 也就是默认不实时读取剪切板的内容。我们通过例子的截图知道默认clipboard-read的值是prompt即询问您可以通过浏览器的隐私设置来设置对于剪切板的权限当调用useClipboard时指定了read为true, 并且你允许查看复制到剪切板中的数据则此时只要剪切板里有内容就会实时显示const { text, isSupported, copy }  useClipboard({read:true})上图是选中了Clipboard这几个字后右键点击复制后系统弹出确认框。上图是点击“允许”后复制到剪切板的内容实时赋值给了text并显示在页面中了。3source拷贝的源数据可选的。source的原始值可以作为copy函数的默认值async function copy(value  unref(source)) {//省略}如下图所示当没有指定source时的情况可以看到value对应传给copy的参数input, 而source是undefined。4copiedDuring为重置copied的毫秒数copied用来表示是否拷贝完成。2.3.2updateTextfunction updateText() {navigator!.clipboard.readText().then((value)  {text.value  value}) }updateText用于更新text的值从剪切板中读取数据然后更新text读取剪切板数据使用的是readText()方法。2.3.3监听拷贝和剪切if (isSupported  read) {for (const event of events)useEventListener(event as WindowEventName, updateText) }在允许读取剪切板的情况下如果发生拷贝和剪切则用剪切板中的内容更新text。2.3.4 copy方法async function copy(value  unref(source)) {if (isSupported  value ! null) {await navigator!.clipboard.writeText(value)text.value  valuecopied.value  truetimeout.start()} }copy方法用于将参数value写入剪切板并赋值给text写入剪切板使用的是writeText()方法。至此useClipbord的源码就分析完了挺简单的但是读完也有收获。3.总结本文介绍了原生的Clipboard API之后又介绍了useClipboard 的使用然后结合示例代码的调试过程分析了useClipboard 的源码。Clipboard API中的readText()和 writeText()是useClipboard 的灵魂。················· 若川简介 ·················你好我是若川毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》20余篇在知乎、掘金收获超百万阅读。从2014年起每年都会写一篇年度总结已经坚持写了8年点击查看年度总结。同时最近组织了源码共读活动帮助4000前端人学会看源码。公众号愿景帮助5年内前端人走向前列。扫码加我微信 ruochuan12、拉你进源码共读群今日话题目前建有江西|湖南|湖北 籍 前端群想进群的可以加我微信 ruochuan12 进群。分享、收藏、点赞、在看我的文章就是对我最大的支持
http://www.sadfv.cn/news/246173/

相关文章:

  • asp网站数据库位置网站程序上传
  • 个人网站做淘宝客教程工商天眼查官网查企业
  • 房地产网站建设哪家有效果广州网站建设推广报价
  • 中山做网站优化logo设计在线
  • 电子商务网站建设试题设计软件网站推荐
  • 怎么建设好一个外贸购物网站今天最新生猪价格
  • 西安公司网站制作价格mt7620a做网站
  • 自己在网站开发的客户怎么联系国外的网站需要备案吗
  • 建设银行个人网站登陆湖南省郴州市十大旅游景点排行榜
  • 做网站服务器系统如何组建一个小型局域网
  • 网站上传文件存储方式图片自动生成器
  • 网络平台怎么搭建网站广州网站建设开发设计
  • 网站商城建设报告营销策划书范文大全
  • 网站能带来什么wordpress首页代码压缩
  • 建设手机银行官方网站wordpress重装空白
  • 如何推广运营网站网站做的和别人一样违法吗
  • 天水市住房和城乡建设局网站学校网站 建设 价格
  • asp程序网站后台发布产品的时候前台怎么不显示产品名称广州公司建设网站
  • 俞润装饰做哪几个网站ps课堂网站
  • 下载学校网站模板下载地址建设部指定发布招标信息网站
  • 自己的做网站重庆南昌网站建设
  • 视频网站开发要多少钱wordpress 文章打不开
  • 静态网站模板 大气商城网站规划
  • 上街区做网站关于建立网站的计划
  • 网站百度收录突然消失了徐州铜山区
  • 江苏恒健建设集团有限公司网站怎么写微信小程序
  • 企业大型网站建设要多少钱咋样做网站
  • 做服装加工哪个网站比较好windows优化大师怎么使用
  • 北京建设网站官网热门推广平台
  • 电影网站免费建设视频网站怎么做网站引流