joken-前端工程师

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: :: :: 管理 ::

2025年2月18日

摘要: npx 是一个随 npm(版本 5.2.0 及以上)一起安装的工具,它的主要作用是执行 npm 包中的二进制文件。换句话说,npx 允许你在不全局安装某个包的情况下,直接运行该包提供的命令行工具。 以下是 npx 的主要功能和使用场景: 1. 执行本地安装的包 如果你通过 npm install < 阅读全文
posted @ 2025-02-18 21:17 joken1310 阅读(4) 评论(0) 推荐(0) 编辑

摘要: 解决方式: yarn config set strict-ssl false 阅读全文
posted @ 2025-02-18 21:11 joken1310 阅读(1) 评论(0) 推荐(0) 编辑

摘要: 在 TSX 或 JSX 中,组件名必须以大写字母开头。这是 JSX 的语法规则之一,也是 React 和 Vue 3 TSX 写法中的一条重要约定。 原因:区分 HTML 标签和自定义组件 在 JSX/TSX 中,小写字母开头的标签会被解析为 HTML 元素(如 <div>、<span> 等),而大 阅读全文
posted @ 2025-02-18 20:49 joken1310 阅读(0) 评论(0) 推荐(0) 编辑

摘要: 在 JavaScript 中,try...finally 语句用于定义一个代码块,在尝试执行某些可能抛出错误的代码后,无论是否发生异常,都会执行 finally 块中的代码。它通常用于清理操作(如关闭文件、释放资源等)。 以下是 try...finally 的基本用法和详细说明: 语法 try { 阅读全文
posted @ 2025-02-18 20:47 joken1310 阅读(1) 评论(0) 推荐(0) 编辑

摘要: 在 CSS 中,当设置 overflow: auto 时,如果内容超出容器的高度,会触发滚动条的显示。然而,默认情况下,滚动条可能会占用额外的空间,导致容器的宽度发生变化(例如内容区域变窄)。为了避免这种情况,可以通过以下方法确保容器的宽度不被撑大。 方法 1:使用 box-sizing: bord 阅读全文
posted @ 2025-02-18 20:45 joken1310 阅读(3) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 的 TSX 写法中,如果你的 SCSS 文件中定义了一个类似 .abc-cbd 这样的类名(非嵌套样式),可以直接通过 CSS Modules 导出的对象来访问并使用它。 以下是详细的实现步骤和示例: 1. SCSS 文件定义 假设你的 SCSS 文件中定义了如下类名: styles 阅读全文
posted @ 2025-02-18 20:41 joken1310 阅读(5) 评论(0) 推荐(0) 编辑

摘要: 在 CSS 中,实现高度百分比的方式有多种,以下是常见的几种方法及其适用场景: 1. 基于父容器的高度百分比 原理:子元素的 height 百分比值基于其直接父容器的高度。 条件:父容器的高度必须明确(例如通过 height 属性设置固定值或百分比)。 示例代码:<div class="parent 阅读全文
posted @ 2025-02-18 20:33 joken1310 阅读(0) 评论(0) 推荐(0) 编辑

2025年2月6日

摘要: 首先,我们需要定义一个接口来描述我们希望暴露给父组件的方法。然后,在 useImperativeHandle 中实现这些方法,并确保它们符合这个接口。 TypeScript 示例代码 import React, { useRef, useImperativeHandle, forwardRef, M 阅读全文
posted @ 2025-02-06 22:31 joken1310 阅读(11) 评论(0) 推荐(0) 编辑

摘要: React useMemo 用途:主要用于记忆化计算结果,避免在每次渲染时都执行昂贵的计算。 使用方式:接受一个函数和一个依赖项数组作为参数。只有当依赖项数组中的值发生变化时,才会重新执行给定的函数并返回新的计算结果;否则,它将返回上一次计算的结果。 适用场景:优化性能,特别是在处理复杂或耗时的计算 阅读全文
posted @ 2025-02-06 22:20 joken1310 阅读(10) 评论(0) 推荐(0) 编辑

摘要: 在 React 中,Context API 提供了一种无需手动通过 props 传递数据的方式,就可以让组件树中的任何层级的组件访问到某些数据的方法。Provider 是 Context API 的一部分,它允许你将值传递给整个组件树中的所有消费者(Consumer),而不需要在每个层级手动传递 p 阅读全文
posted @ 2025-02-06 22:11 joken1310 阅读(15) 评论(0) 推荐(0) 编辑

摘要: React 18 中监听数据变化通常涉及使用内置的 Hooks,如 useState、useEffect 和 useReducer。对于更复杂的状态管理,还可以结合第三方库如 Redux 或 MobX。下面是这些 Hooks 的具体使用方法示例: 1. useState useState 是 Rea 阅读全文
posted @ 2025-02-06 22:03 joken1310 阅读(9) 评论(0) 推荐(0) 编辑

2025年1月25日

摘要: ArrayBuffer 是 JavaScript 中用于表示二进制数据的低级对象。它是一段固定长度的连续内存区域,通常用于处理文件、图像、音频、视频等二进制数据。ArrayBuffer 本身只是一个字节数组,不能直接操作,需要通过类型化数组(Typed Array)或DataView来访问和修改其内 阅读全文
posted @ 2025-01-25 21:14 joken1310 阅读(8) 评论(0) 推荐(0) 编辑

摘要: 迭代器(Iterator)和生成器(Generator)是 JavaScript 中用于处理遍历和惰性求值的两个重要概念。它们密切相关,但有明显的区别。以下是它们的核心区别和联系: 1. 迭代器(Iterator) 定义:迭代器是一个对象,它实现了迭代器协议,即具有 next() 方法。 next( 阅读全文
posted @ 2025-01-25 21:10 joken1310 阅读(23) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中,打印某个组件实例时,确实会显示一个对象。这个对象是 Vue 组件实例的内部表示,包含了组件的状态、方法、生命周期钩子、响应式数据等信息。以下是详细说明: 1. 组件实例的结构 当你打印一个 Vue 组件实例时,会看到一个包含以下内容的对象: 常见属性: $data:组件的响应式数 阅读全文
posted @ 2025-01-25 21:06 joken1310 阅读(15) 评论(0) 推荐(0) 编辑

摘要: 在 TypeScript 中,enum 的键(key)可以是小写,但需要注意以下几点: 1. enum 的键可以是小写 TypeScript 的 enum 允许使用小写字母作为键名。例如: enum Status { active = 'ACTIVE', inactive = 'INACTIVE', 阅读全文
posted @ 2025-01-25 21:04 joken1310 阅读(8) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中,inject 的返回值不一定是 Ref,它取决于你注入的内容是什么。以下是详细说明: 1. inject 的基本行为 inject 用于从祖先组件中获取通过 provide 提供的数据。 它的返回值类型与 provide 提供的值类型一致。 如果 provide 提供的是一个 r 阅读全文
posted @ 2025-01-25 21:03 joken1310 阅读(7) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中使用 TSX 编写组件时,slots 的写法与 Vue 2 有所不同。Vue 3 的 TSX 支持通过 slots 属性或 v-slots 指令来传递插槽内容。以下是详细的写法说明: 1. 默认插槽 默认插槽可以通过 slots.default 来传递内容。 示例: import 阅读全文
posted @ 2025-01-25 21:01 joken1310 阅读(48) 评论(0) 推荐(0) 编辑

摘要: 在 TypeScript 中,构造函数类型和实例类型分别描述了不同的结构,以下是它们的核心区别: 1. 构造函数类型 定义:构造函数类型描述构造函数本身的结构,包括静态成员和构造签名。 语法:使用 new (...args) => InstanceType 表示,或通过 typeof ClassNa 阅读全文
posted @ 2025-01-25 20:59 joken1310 阅读(14) 评论(0) 推荐(0) 编辑

摘要: 1. index.html 添加头部内容禁止缓存 在你的Vue项目生成的index.html文件中添加以下meta标签,以确保该文件不会被浏览器缓存。这对于保证每次发布新版本时用户能立即获取最新资源非常重要。 <head> <!-- 禁止缓存 index.html --> <meta http-eq 阅读全文
posted @ 2025-01-25 20:55 joken1310 阅读(19) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中,watch 函数提供了强大的监听功能,可以监听响应式数据的变化。默认情况下,watch 并不会进行深度监听,也就是说它只会检测到对象或数组的直接替换,而不会检测到其内部属性或元素的变化。如果你需要对对象或数组进行深度监听,可以通过设置 deep 选项来实现。 基本用法 假设你有一 阅读全文
posted @ 2025-01-25 20:45 joken1310 阅读(66) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中使用 TSX 和 .module.scss 文件时,引用样式类名主要有两种常见方式:驼峰命名法和直接通过方括号引用原始类名。这两种方法都能有效地处理包含特殊字符(如连字符 -)的类名。 驼峰命名法 当你的 CSS 模块文件中的类名包含连字符或其他特殊字符时,Vue 的构建工具通常会 阅读全文
posted @ 2025-01-25 20:40 joken1310 阅读(13) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中,你可以通过 ref 和 reactive 来实现类似 Pinia 的状态管理功能。Pinia 是一个官方推荐的状态管理库,它提供了模块化、插件支持和 TypeScript 支持等功能。不过,如果你希望手动实现一个简单的状态管理机制,可以使用 Vue 3 提供的响应式 API(如 阅读全文
posted @ 2025-01-25 20:28 joken1310 阅读(9) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中使用 TypeScript 时,你可以通过 ref 来引用 DOM 元素或组件实例,并且可以通过类型注解来明确指定这些引用的类型。这有助于提高代码的可读性和类型安全性。 使用 ref 引用 DOM 元素 当你想引用一个 DOM 元素时,可以使用 ref 并结合 TypeScript 阅读全文
posted @ 2025-01-25 20:21 joken1310 阅读(42) 评论(0) 推荐(0) 编辑

摘要: 安装 yarn add jszip jszip 打包文件为zip文件参考 import JSZip from 'jszip'; var fileInput = document.getElementById('fileInput'); var file = fileInput.files[0]; v 阅读全文
posted @ 2025-01-25 20:12 joken1310 阅读(8) 评论(0) 推荐(0) 编辑

2025年1月22日

摘要: 在Vue 3中,尤其是当你使用的是单文件组件(SFC)和CSS预处理器(如SCSS或LESS)时,:deep 和 :global 伪类选择器可以帮助你更灵活地控制样式的作用范围。这些选择器主要用于处理组件的样式隔离问题,尤其是在使用了影子DOM或scoped CSS的情况下。 使用:deep :de 阅读全文
posted @ 2025-01-22 20:47 joken1310 阅读(73) 评论(0) 推荐(0) 编辑

摘要: 在 TypeScript 中,Partial<T> 是一个内置的泛型类型,它可以将传入类型的每个属性变为可选。然而,有时候我们可能需要一种更深度的方式去实现这种转换,尤其是当处理嵌套对象时,我们希望不仅顶层属性变为可选,其内部所有层级的对象属性也都是可选的。 TypeScript 内置的 Parti 阅读全文
posted @ 2025-01-22 20:37 joken1310 阅读(9) 评论(0) 推荐(0) 编辑

摘要: grid 布局基本用法 CSS Grid布局是一种强大的二维布局系统,能够轻松创建复杂的网页布局。下面将介绍Grid布局的一些基本用法和属性。 基本概念 网格容器(Grid Container):应用 display: grid; 或 display: inline-grid; 的元素。 网格项(G 阅读全文
posted @ 2025-01-22 20:36 joken1310 阅读(25) 评论(0) 推荐(0) 编辑

2025年1月20日

摘要: 在 Vue 3.5 及其更新版本中,确实引入了一些改进,使得解构 props 并保持响应性变得更加简单。具体来说,Vue 3.5 引入了对 setup 函数中的 props 解构的原生支持,通过编译时优化确保解构后的变量仍然是响应式的。 Vue 3.5 中直接解构 props 在 Vue 3.5 及 阅读全文
posted @ 2025-01-20 22:33 joken1310 阅读(54) 评论(0) 推荐(0) 编辑

摘要: xe-utils 是一个功能丰富的 JavaScript 工具库,提供了大量的实用函数来简化常见的编程任务。它特别适用于与 vxe-table(一个基于 Vue.js 的表格组件库)结合使用,但也可以独立应用于任何 JavaScript 项目中。 安装 xe-utils 你可以通过 npm 或 ya 阅读全文
posted @ 2025-01-20 22:26 joken1310 阅读(68) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中,setup 函数是 Composition API 的入口点,用于替代传统的 data、methods、computed 等选项。setup 函数可以接收两个参数:props 和 context。下面详细解释这两个参数及其用途。 setup 函数签名 import { Setup 阅读全文
posted @ 2025-01-20 22:23 joken1310 阅读(69) 评论(0) 推荐(0) 编辑

摘要: 在 Vue 3 中使用 TSX 并结合 ref 来获取 DOM 元素或组件实例,可以通过 Vue 提供的组合式 API(Composition API)来实现。Vue 3 支持 JSX/TSX 语法,允许你在函数式组件中编写类似 JSX 的代码。下面是一个具体的示例,展示了如何在 TSX 中使用 r 阅读全文
posted @ 2025-01-20 22:19 joken1310 阅读(33) 评论(0) 推荐(0) 编辑

摘要: loading 属性是 HTML <img> 标签的一个属性,用于指示浏览器何时加载图像资源。它有助于优化页面加载性能,特别是对于包含大量图片的页面。通过延迟加载(lazy loading)不在视口内的图片,可以显著减少初始页面加载时间,并提高用户体验。 loading 属性的值 loading 属 阅读全文
posted @ 2025-01-20 22:17 joken1310 阅读(68) 评论(0) 推荐(0) 编辑

摘要: a函数继承b函数,b函数继承c函数,那a函数的实例abc可以直接读取c函数的prototype属性吗? 在 JavaScript 中,函数可以通过原型链继承其他函数的属性和方法。上面提到“a函数继承b函数,b函数继承c函数”,通常是指构造函数之间的继承关系,这涉及到原型链的层级结构。在这种情况下,a 阅读全文
posted @ 2025-01-20 22:14 joken1310 阅读(7) 评论(0) 推荐(0) 编辑

摘要: 在 JavaScript 中,对象的属性可以分为“显示属性”(也称为自有属性,own properties)和“隐式属性”(通常指的是继承自原型链上的属性)。理解这两类属性的区别对于深入掌握 JavaScript 对象模型非常重要。 显示属性(Own Properties) 显示属性是指直接定义在一 阅读全文
posted @ 2025-01-20 22:10 joken1310 阅读(4) 评论(0) 推荐(0) 编辑

摘要: is 关键字主要用于定义类型谓词,它确实主要出现在函数的返回类型声明中,用于实现类型保护。然而,它的使用场景并不仅限于简单的类型检查函数。下面是一些详细的说明和扩展用法: 主要用途:类型保护函数 如前所述,最常见的用途是定义类型保护函数,以帮助 TypeScript 更准确地推断变量的类型。例如: 阅读全文
posted @ 2025-01-20 22:05 joken1310 阅读(12) 评论(0) 推荐(0) 编辑

2025年1月7日

摘要: crypto-js 支持指定 AES 加密算法的变种。AES 有多种加密模式,例如 ECB、CBC、CFB、OFB 等。默认情况下,crypto-js 使用 AES 算法的 CBC 模式,并且需要提供一个初始向量(IV)。如果需要更改加密模式或设置不同的选项,可以通过 CryptoJS.AES.en 阅读全文
posted @ 2025-01-07 21:57 joken1310 阅读(243) 评论(0) 推荐(0) 编辑

摘要: 在 Nuxt 3 中,可以使用 全局钩子函数、中间件 和 插件 来实现一些全局性的逻辑或功能扩展。它们的使用场景和功能有所不同,下面将详细介绍这几种方式,并给出具体的使用示例。 1. 全局钩子函数 全局钩子函数是 Nuxt 3 提供的生命周期钩子,用于在不同阶段执行一些全局操作,例如应用创建、页面渲 阅读全文
posted @ 2025-01-07 21:50 joken1310 阅读(56) 评论(0) 推荐(0) 编辑

摘要: 在 Nuxt 3 中,项目结构和功能是根据 Vue 3 和 Nuxt 框架的最新最佳实践进行组织的。Nuxt 3 使得开发现代化的 Vue 应用变得更加高效、灵活且易于扩展。以下是 Nuxt 3 项目的结构介绍和各个目录、功能的详细说明: Nuxt 3 项目结构 在 Nuxt 3 中,项目的基本目录 阅读全文
posted @ 2025-01-07 21:44 joken1310 阅读(66) 评论(0) 推荐(0) 编辑

摘要: 在 Nuxt 3 中,父子组件之间的通信方式和 Vue 3 是一样的。父子组件通信的方式主要有以下几种: 1. 使用 Props 和 Events(父子组件) 这是 Vue 的基本通信方式,适用于父组件向子组件传递数据,或者子组件向父组件发送消息。 父组件传递数据给子组件 (Props) 父组件通过 阅读全文
posted @ 2025-01-07 21:40 joken1310 阅读(50) 评论(0) 推荐(0) 编辑

摘要: Nuxt.js 是一个基于 Vue.js 的框架,主要用于构建现代化的前端应用程序。它扩展了 Vue.js,提供了服务器端渲染(SSR)、静态站点生成(SSG)、单页面应用(SPA)等多种模式。 以下是 Nuxt 3 的一些核心特点和常见用法,如果你有更具体的问题,欢迎补充! Nuxt 3 核心特点 阅读全文
posted @ 2025-01-07 21:37 joken1310 阅读(61) 评论(0) 推荐(0) 编辑