2024年11月

在Nuxt.js中使用ofetch进行无感刷新通常涉及到处理API请求和响应,特别是在处理身份验证令牌(如JWT)的场景下。无感刷新的目的是在用户不知情的情况下,自动更新其认证令牌(通常是Access Token),以保证用户的会话不会中断。这通常涉及到两种类型的令牌:

  1. Access Token:用户进行认证后得到的令牌,允许用户访问服务器的受保护资源,通常有一个较短的有效期。
  2. Refresh Token:在同一时间发放给用户的另一个令牌,用于在Access Token过期时获取一个新的Access Token,其有效期比Access Token长。

实现无感刷新的基本步骤

  1. 检查Access Token的有效性:在每次API请求时,检查Access Token是否有效。如果无效,使用Refresh Token请求新的Access Token。
  2. 更新Access Token:在获得新的Access Token后,更新本地存储中的Access Token,并重新发送之前因Token过期而暂停的请求。
  3. 处理Refresh Token过期:如果Refresh Token也过期或无效,引导用户重新登录。

示例代码

以下是一个简化的示例,展示了如何在Nuxt.js中使用ofetch和Vue的axios库来实现无感刷新:

import axios from 'axios';
import { useCookie } from '#app';

const userToken = useCookie('userToken');
const refreshToken = useCookie('refreshToken');

const api = axios.create({
  baseURL: process.env.API_BASE_URL,
  headers: {
    Authorization: `Bearer ${userToken.value.accessToken}`
  }
});

api.interceptors.response.use(
  response => response,
  error => {
    const originalRequest = error.config;
    if (error.response.status === 401 &&!originalRequest._retry) {
      originalRequest._retry = true;
      return axios.post('/refresh-token', { refreshToken: refreshToken.value })
       .then(res => {
          if (res.status === 200) {
            userToken.value.accessToken = res.data.accessToken;
            axios.defaults.headers.common['Authorization'] = `Bearer ${userToken.value.accessToken}`;
            return api(originalRequest);
          }
        });
    }
    return Promise.reject(error);
  }
);

export default api;

在这个示例中,我们使用了axios的拦截器来捕获401错误(未授权),并在这种情况下尝试使用Refresh Token来获取新的Access Token。如果成功,我们更新本地存储中的Access Token,并重新发送原始请求。

请注意,这只是一个基本的示例,实际应用中可能需要更多的错误处理和安全措施。此外,确保在服务器端正确处理Refresh Token的验证和新Access Token的发放。

无感刷新的注意事项

  • 安全性:确保在传输和存储过程中,令牌的安全性。
  • 令牌轮换:考虑实施令牌轮换策略,每次使用后废弃旧的Refresh Token并发放一个新的。
  • 错误处理:提供清晰的错误处理机制,以便在令牌刷新失败时引导用户重新登录。

以下是Markdown中数学公式的使用指导手册:

一、公式使用参考

1. 如何插入公式

LaTex 的数学公式有两种:行中公式和独立公式。

  • 行中公式:放在文中与其它文字混编。

    $\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}$

    显示为:(\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6})

  • 独立公式:单独成行。

    $$
    \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
    $$

    显示为:
    [
    \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}
    ]

  • 自动编号的公式

    \begin{equation}
    数学公式
    \label{eq:当前公式名}
    \end{equation}

    自动编号后的公式可在全文任意处使用 \eqref{eq:公式名} 语句引用。

2. 如何输入上下标

^ 表示上标, _ 表示下标。如果上下标的内容多于一个字符,需要用 {} 将这些内容括成一个整体。上下标可以嵌套,也可以同时使用。

$$x^{y^z}=(1+{\rm e}^x)^{-2xy^w}$$

显示为:(x^{y^z}=(1+{\rm e}^x)^{-2xy^w})

3. 如何输入括号和分隔符

()[]| 表示符号本身,使用 \{\} 来表示 {} 。当要显示大号的括号或分隔符时,要用 \left\right 命令。

4. 矩阵使用参考

  • 无框矩阵

    $$
      \begin{matrix}
      1 & x & x^2 \\
      1 & y & y^2 \\
      1 & z & z^2 \\
      \end{matrix}
    $$

    显示为:
    [
    \begin{matrix}
    1 & x & x^2 \
    1 & y & y^2 \
    1 & z & z^2 \
    \end{matrix}
    ]

  • 带边框的矩阵

    $ \begin{pmatrix} 1 & 2 \\ 3 & 4 \\ \end{pmatrix} $

    显示为:
    [
    \begin{pmatrix} 1 & 2 \ 3 & 4 \ \end{pmatrix}
    ]

5. 添加删除线

使用 \require{cancel} 来允许片段删除线的显示,使用 \cancel{字符}\bcancel{字符}\xcancel{字符}\cancelto{字符} 来实现各种片段删除线效果。

以上是Markdown中数学公式的基本使用指导,希望对你有所帮助。

HTML5引入了许多新的标签,以更好地定义网页内容和结构。以下是一些常用的HTML5标签及其用途的速查表:

文档结构标签

  • <header>:定义文档或部分的页眉。
  • <footer>:定义文档或部分的页脚。
  • <article>:定义独立的内容区块。
  • <section>:定义文档中的一个区段。
  • <nav>:定义导航链接的部分。
  • <aside>:定义与页面主要内容稍微相关的部分(如侧边栏)。
  • <main>:定义文档的主要内容。
  • <figure>:定义媒介内容的分组,以及可选的标题。
  • <figcaption>:定义<figure>元素的标题。
  • <section>:定义文档中的一个独立区段。

表单控件标签

  • <form>:定义表单,用于用户输入。
  • <input>:定义输入字段(类型可以是text, password, checkbox, radio, file等)。
  • <textarea>:定义多行文本输入控件。
  • <button>:定义按钮。
  • <select>:定义下拉列表。
  • <option>:定义<select>元素中的选项。
  • <label>:定义<input>元素的标签。
  • <fieldset>:将表单内的相关元素分组。
  • <legend>:定义<fieldset>元素的标题。
  • <datalist>:定义下拉列表。
  • <keygen>:定义密钥对生成器字段(用于表单)。
  • <output>:定义表单元素的结果。

媒体标签

  • <audio>:定义音频内容。
  • <video>:定义视频或视频流。
  • <source>:定义媒体资源。
  • <track>:定义字幕或字幕文件。

其他标签

  • <canvas>:定义图形,使用JavaScript在其中绘制图像。
  • <svg>:定义SVG矢量图形。
  • <details>:定义用户可以查看或隐藏详细信息的组件。
  • <summary>:定义<details>元素的标题。
  • <progress>:定义任务的完成进度。
  • <meter>:定义已知范围或分数值的度量。
  • <embed>:定义嵌入的内容,如PDF或视频。
  • <iframe>:定义内联框架。

元数据标签

  • <!DOCTYPE html>:文档类型声明,定义了文档为HTML5。
  • <html>:定义整个HTML文档。
  • <head>:定义文档的头部,包含了文档的元数据。
  • <title>:定义文档的标题。
  • <meta>:定义元数据,如字符集、页面描述、关键词等。
  • <link>:定义文档与外部资源之间的关系,如链接样式表。
  • <script>:定义客户端脚本,如JavaScript。

这些标签是HTML5中常用的一些,它们帮助开发者创建更丰富、更语义化的网页内容。

以下是50个Photoshop软件常见问题及其解决方案:

  1. 菜单栏隐藏了怎么办?

    • 方法一:点击窗口菜单,勾选工具,左侧即可看到工具栏。
    • 方法二:通过恢复软件初始布局找回工具栏,选择基本功能、3D、绘画或者摄影等工作区,或者使用复位选项恢复默认布局。
  2. 如何使用选择工具?

    • 矩形选框工具:用于选择矩形区域。
    • 椭圆选框工具:用于选择椭圆形区域。
    • 套索工具:用于自由选择不规则形状的区域。
    • 魔棒工具:用于选择相似颜色的区域。
  3. 如何使用画笔工具?

    • 选择画笔样式、大小和硬度,在图像上绘制或涂鸦。
  4. 如何使用橡皮擦工具?

    • 选择橡皮擦样式,如硬边橡皮擦和软边橡皮擦,删除图像中的部分内容。
  5. 如何使用文字工具?

    • 选择字体、大小、颜色等属性,在图像中添加文字。
  6. 如何创建新图层?

    • 在图层面板中点击“新建图层”按钮,设置图层名称,点击“确定”。
  7. 如何删除图层?

    • 在图层面板中选中要删除的图层,点击“删除图层”按钮,确认删除。
  8. 如何调整图层顺序?

    • 通过拖动图层在图层面板中调整图层的顺序,前面的图层会覆盖后面的图层。
  9. 如何使用滤镜?

    • 模糊滤镜:使图像变得模糊,常用于背景处理。
    • 锐化滤镜:增强图像的细节,使图像更加清晰。
    • 特效滤镜:为图像添加各种艺术效果,如水彩画、油画等。
  10. 如何调整图像的亮度和对比度?

    • 点击“图像”菜单,选择“调整”,选择“亮度/对比度”选项,在弹出的对话框中调整滑块,点击“确定”。
  11. 如何进行色阶调整?

    • 点击“图像”菜单,选择“调整”,选择“色阶”选项,在弹出的对话框中调整输入和输出的色阶,点击“确定”。
  12. 如何进行曲线调整?

    • 曲线调整是一种更为精细的调整方法,用户可以通过调整曲线来改变图像的亮度和对比度。
  13. 如何保存和导出图像?

    • 保存项目:点击“文件”菜单,选择“保存”或“另存为”,在弹出的对话框中选择保存位置和文件名,点击“保存”按钮。
    • 导出为不同格式:用户可以将图像导出为JPEG、PNG、TIFF等格式,以便于分享和使用。
  14. 软件崩溃怎么办?

    • 如果Photoshop频繁崩溃,用户可以尝试更新软件、清理缓存或重启计算机。
  15. 工具无法使用怎么办?

    • 如果某个工具无法使用,用户可以检查是否选中了正确的图层,或者重置工具设置。
  16. 图像质量下降怎么办?

    • 如果导出的图像质量下降,用户可以检查导出设置,确保选择了合适的分辨率和格式。
  17. 如何使用快捷键?

    • 例如,Ctrl + Z用于撤销,Ctrl + T用于自由变换。
  18. 如何使用图层样式?

    • 图层样式可以为图层添加阴影、光晕、斜面等效果,用户可以通过双击图层进入图层样式设置。
  19. 如何创建动作?

    • 用户可以录制常用操作并创建动作,以便于以后快速执行相同操作。
  20. 无法打开Photoshop文件怎么办?

    • 确保使用的是最新版本的Photoshop软件,检查文件是否受损,检查计算机是否有足够的内存和存储空间来打开大型文件,如果问题仍然存在,可以尝试重新安装Photoshop软件。
  21. 无法编辑或调整图像的颜色怎么办?

    • 如果图像处于“位图”或“索引颜色”模式下,Photoshop的某些色彩调整功能是不可用的。可以通过转换图像模式来解决这个问题,选择“图像”菜单下的“模式”选项,并选择“RGB颜色”模式。
  22. 图像分辨率低,无法打印或放大怎么办?

    • 在开始编辑之前就使用足够高的分辨率拍摄或导入图像。如果已经有一个分辨率较低的图像,可以尝试使用Photoshop的“图像大小”选项来增加图像的分辨率。
  23. PS不能存储,因为程序错误,应该怎么解决?

    • 全选图层 -> 右键“复制图层” -> “新建” -> “确定”,保存新建的文件,然后再导出图片。
  24. “程序错误”怎么办?

    • 关闭PS里的“后台存储”。此外,还有一部分原因是和PS里的图形加速功能有关,可以通过修改设置里的硬件加速级别解决。
  25. “暂存盘已满,无法进行保存”怎么办?

    • “编辑” -> “首选项” -> “暂存盘”,除了C盘以外,再勾上选其他盘符。暂存盘尽可能多开,条件允许的话尽量开在SSD上,可以令日常工作效率更高。
  26. 装好的插件没显示怎么办?

    • “编辑” -> “首选项” -> “增效工具”,勾选“载入扩展面板”,如果还不正确就检查是否是插件与所安装的PS版本不兼容。
  27. 多次填充边缘出现锯齿怎么办?

    • 在首次填充后,立即通过图层面板锁定透明区域,这样后续无论再做多少次填充,也不会出现锯齿了。
  28. 图片拖到图标无法启动PS怎么办?

    • 按Ctrl+R输入“Regedit”打开注册表编辑器,依次找到并打开“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system”,双击其中的“EnableLUA”,将值修改为“0”后重启电脑即可。
  29. 矢量元素放大不清晰怎么办?

    • “编辑” -> “首选项” -> “工具”,勾选“将矢量工具与变化和像素网格对齐”前面的复选框即可。
  30. 什么是Action,如何使用?

    • Action实际上就是Photoshop的宏文件,扩展名为*.atn。在Photoshop中选择Windows > Show Actions,可打开Action面板,默认状态下,面板上会有一些Photoshop附赠的一些Action。单击面板右上角的小三角形,会弹出一个菜单。一般调用Action时,最好先用菜单中的Clear Actions清空一下面板,再用Load Actions调出Action文件,便可开始使用了。使用Action有两种界面,一种是在面板的底部有一排按钮,按一下"Play"键,Action便开始运行了;另一种,要在菜单中选取Button Mode才会出来,这种界面是用按钮来表示Action,单击该按钮便会运行。
  31. 什么是Channel?

    • Channel在RGB模式中是指红、绿、蓝三色通道,它们一起决定图像的颜色和亮度。另外还有alpha通道的概念,alpha通道是用来保存选择(selection)信息的,对alpha通道的编辑和修改并不会影响到原图像的颜色和亮度,所作用的仅仅是选择。例如,建立一个选择后,可用Selection > Save Seletion将其存在#4通道,即alpha通道,该通道可用Selection > Load Selection调出。有些文件格式可以保存alpha通道的信息,如PSD、TIF等。
  32. 用Photoshop做的透明背景GIF图,常常边缘颜色去不干净,特别是动态GIF的边缘,有深色或者白色的小粒清不干净……有什么好方法清除?

    • 用魔棒时不要选消锯齿选项。
  33. 为什么屏幕显示和打印出来的效果相差很大?

    • 在Photoshop中我们通常在RGB模式下编辑图像,但打印机使用的是CMYK颜色体系,而RGB所能表示的颜色数是多过CMYK的,所以有些颜色能在屏幕上看到,打印机却不能正确还原,它会自动选取最相近的颜来替换。另外,显示器的显示也会有一定的误差,这可以通过校正显示器来修正,具体步骤一般Photoshop书都有说明。
  34. 有些Plugin显示在屏幕以外,怎么办?

    • 在Photoshop中一次装载了过多的Plugin之后,PS中的Filter那个菜单可能会超过窗口的高度,对此,有一个方法,虽然麻烦一点,却也行之有效。PS4有一个新特性,它可以搜索Plugins目录下的子目录甚至快捷方式并自动装载。利用这个特性,可将你的Plugin分成几组存于各个目录中,要调用某组Plugin,只需在Plugins目录中创建一个指向那组Plugin目录的快捷方式即可。
  35. 内存不足怎么办?

    • 关闭一些不必要的程序,释放内存空间。
  36. 快捷键冲突怎么办?

    • 检查快捷键的设置,或者尝试更改快捷键。
  37. 导入图片时出现问题怎么办?

    • 检查图片格式是否支持,或者尝试重新调整图片大小和质量。
  38. 图层丢失怎么办?

    • 备份文件,并从备份文件中恢复。
  39. 滤镜问题怎么办?

    • 多尝试不同的滤镜参数和效果,或者使用其他类似的滤镜工具。
  40. 文件保存问题怎么办?

    • 检查文件格式是否支持,或者尝试重新调整文件大小和质量。
  41. 如何在圆角的图形中设置图形的阴影?

    • PS6里有一个图层效果,不管你的图形是什么形状的,只要单独做在一个层里,就可以实行这个效果,里面有所需要的图形阴影设置。
  42. 用钢笔工具钩的路径再用放射工具总是渐变放射,由粗到细,怎样成一条直线?

    • 笔工具钩的路径,再选取图章及喷枪,然后在路径面版中直接拖动工作路径到描边按钮上,就能出现一条直线效果。或者笔工具的动力设置关闭(在钢笔工具状态行最后一项)或reset tool。
  43. 用钢笔工具钩下一图像后,怎样抠到新建的文件中去?

    • 用钢笔工具钩出图像以后,把路径变成选区,然后新建一个文件,使用复制、粘贴或者直接拖动选区到新键文件上都可。
  44. 用直线工具画一个直线后,怎样设置直线由淡到浓的渐变?

    • 用直线工具画出直线后,把它变成选区,填充渐变色,选前景色到渐变透明。或者在直线上添加蒙版,用羽化喷枪把尾部喷淡,也可达到由淡到浓的渐变。
  45. 做一个等腰梯形怎样精确控制它的大小?

    • 由变换里的透视功能就能精确的控制它,快捷键CTRL+T。或者TRL+T,再按住CTRL+SHFIT+ALT,用鼠标控制顶点,就会以等腰梯形控制。
  46. 怎样把做好的方框拉成别的形状?

    • 把做好的方型变成选区,并把选区变成工作路径,然后添加节点,就能变成其他形状。
  47. 怎样使一个图片和另一个图片很好地融合在一起(包括看不出图像的边缘)?

    • 选中图片,实行羽化,然后反选,再按DELETE,这样就可以把图片边缘羽化为了达到好的融合效果,你可以把羽化的像素设定的大点,同时还可以多按几次DELETE,那样融合的效果更好。或者在图片上添加蒙版,然后选羽化的喷枪对图片进行羽化,同样能达到融合的效果。最后别忘了把层的透明度降低,效果会更好。
  48. 新建的文档中不能填充彩色图像怎么办?

    • 看下当前模式是否是灰度状态,如果是直接改为RGB即可。
  49. PS文件打开的时候提示“不能完成请求 意外的遇到文件尾”这是怎么回事?

    • 这因为你的文件损伤所导致,如果可以预览的话,那还有救,你用Photoshop里的Adobe ImageReady打开文件然后保存文件。
  50. 在使用钢笔工具时,钢笔工具带有磁性怎么回事?

    • 可以在属性栏中把橡皮带对钩去掉即可。

以下是20个Web前端开发日常必备网站:

  1. 前端里:专注于分享最前沿的Web开发技术,教程、资源和素材,是面向网站开发人员和设计师的学习交流平台。[前端里]
  2. 踏得网:领先的沉浸式互联网内容门户,一站式学习、创作和展示。[踏得网]
  3. CSS-Tricks:一个国外的优秀前端开发博客,主要分享使用CSS样式的技巧,经验和教程等。[CSS-Tricks]
  4. CSDN:全球知名中文IT技术交流平台,提供原创博客、精品问答、职业培训、技术论坛、资源下载等产品服务。[CSDN]
  5. JavaScript Fun:一个集合当下最流行的JavaScript代码库,显示流行排行,开发者可以轻松的找到想要的最新代码插件、工具和博客。[JavaScript Fun]
  6. Stack Overflow:全球IT界最受欢迎的技术问答网站之一,一个解决bug的社区。[Stack Overflow]
  7. Codrops:发表技术文章和网页教程,提供经验,资源很丰富。[Codrops]
  8. 掘金:一个帮助开发者成长的社区,是给开发者用的Hacker News,给设计师用的Designer News,和给产品经理用的Medium。[掘金]
  9. 每周访客报告:一款免费的数据统计工具,可以获取访问您网站的用户数据。[每周访客报告]
  10. 小型开发工具:一款操作简洁明了的小型开发工具,可以帮助您完成编码、解码、测试等常见任务。[小型开发工具]
  11. 视觉类型量化表:一款可视化在线编辑工具,可以实时编辑样式,预览不同样式之间的差异。[视觉类型量化表]
  12. Responsively:有助于加快响应式Web应用程序的开发,是一款高效率工具。[Responsively]
  13. 元标签:一种为任何网站调试和生成元标签代码的工具。[元标签]
  14. ReadMe:在几分钟内直观地创建自述文件的最简单方法。[ReadMe]
  15. 在线工具:里面有很多很有意思的小工具,比如一键抠图、二维码生成、摩斯电码、歇后语、favicon在线制作、颜色转换等。[在线工具]
  16. 阿里巴巴矢量图标库:国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能。[阿里巴巴矢量图标库]
  17. CodePen:一个网站前端设计开发平台,针对网站前端代码的一个工具,上面有各种效果的案例特效。[CodePen]
  18. CodeSandBox:提供一个在线开发环境的“沙盒”,主流的框架如React、Vue、Angular等,都可即开即用、实时编译预览。[CodeSandBox]
  19. JS Bin:一个轻量级在线编辑网站,界面很干净,临时想调试简单的HTML或JS代码可以考虑来这儿试一试。[JS Bin]
  20. MDN Web Docs:提供了全面而详细的Web技术文档,包括HTML, CSS, JavaScript, API等。[MDN Web Docs]