摘要:
前言 数组特点 存储区间是连续,且占用内存严重,空间复杂也很大,时间复杂为O(1)。 优点:是随机读取效率很高,原因数组是连续(随机访问性强,查找速度快)。 缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中要往后移的,且大小固定不易动态扩展。 链表特点 区间离散,占用内存宽松,空间 阅读全文
摘要:
Subversion (SVN) 本身并不直接支持在检出或更新代码后自动执行脚本,比如运行 pnpm i。SVN 是一个版本控制系统,主要用于管理和追踪文件的变化,并不提供类似 Git Hooks 的机制来触发外部命令或脚本。 但是,你可以通过以下几种方式实现 SVN 检出或更新后的自动化任务: 方 阅读全文
摘要:
在前端项目中,assets 目录通常用于存放静态资源文件。这些文件包括但不限于图片、字体、样式表、脚本等。为了更好地组织和管理这些资源,常常会在 assets 目录下创建多个子目录。尽管具体的结构可以根据项目的需要灵活调整,但以下是一个常见的分类方式: 常见的子目录结构 images 或 img 存 阅读全文
摘要:
在前端项目中,@xxx/shared 目录(这里的 xxx 可能代表公司名、项目名或其他标识符)通常用于存放可以在整个项目或多个项目之间共享的代码。这种结构有助于促进代码重用,简化维护,并确保不同部分或项目间的一致性。下面详细介绍其作用、优势及使用场景: 作用 代码重用:将通用的功能模块化,如工具函 阅读全文
摘要:
在前端工程化的上下文中讨论副作用(side effects)时,通常指的是那些除了返回值之外还对外部状态或行为产生影响的操作。副作用可以包括网络请求、DOM 操作、异步操作、直接修改全局变量等。这些操作使得函数的行为变得不可预测,增加了代码的复杂性和测试难度。 UI组件与副作用 UI组件本身并不必然 阅读全文
摘要:
方法变量命名相关规范 英文单词命名规范 无论前端代码还是后端代码、异或其他代码,都是由一个个单词组成的,所以一个好的单词影响着代码的本身,所以我们定义如下: 合理使用正确的英文单词 很多人认为自己英语不好就命名比较随意,但我们看来,一个有道词典或者百度翻译就能看好的解决这件事情,所以单词的命名必须使 阅读全文
摘要:
URL.createObjectURL() 和 new FileReader()在读取预览文件时区别 URL.createObjectURL() MDN 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。 这个 URL 的生命周期和创建它的窗口中的 document 阅读全文
摘要:
在前端项目中,libs 和 vendor 目录通常用于组织第三方库或依赖项,但它们的使用和定义可能因项目结构、构建工具以及团队习惯的不同而有所差异。下面是对这两个目录的一般定义、作用、区别及使用场景的解释。 Libs 目录 定义与作用: libs 目录通常用来存放那些不直接通过包管理器(如 npm 阅读全文
摘要:
在Subversion (SVN) 中,确实有类似 Git 中 .gitignore 文件的功能,但使用方法和机制有所不同。SVN 使用的是 svn:ignore 属性来指定应被忽略的文件或目录模式。 如何设置 svn:ignore 通过命令行设置: 你可以在想要应用忽略规则的目录下使用以下命令: 阅读全文
摘要:
Vue.config.ignoredElements 是 Vue.js 提供的一个配置选项,用于告诉 Vue 忽略某些自定义元素。这对于使用 Web Components 或其他外部库中的自定义元素非常有用,因为这些元素在 Vue 编译时不会被识别为 Vue 组件,从而避免不必要的警告和错误。 作用 阅读全文
摘要:
npx taze -r -w 命令是用来更新项目依赖的工具 taze 的一个使用实例。下面是对这个命令及其参数的解释: Taze Taze 是一个现代化的依赖更新工具,旨在帮助开发者轻松地保持项目的依赖项最新。它能够自动分析项目的依赖关系,并提出版本升级建议。Taze 特别强调安全性和稳定性,通过仅 阅读全文
摘要:
"Internal" 这个词在英文中的基本意思是“内部的”或“内在的”,指的是事物内部的部分,与外部相对。当这个词应用于不同的上下文时,它的具体含义可能会有所变化。在技术和软件开发领域,尤其是在前端工程项目中提到 "internal" 目录或模块时,通常有以下几层含义: 内部使用:指该目录下的文件或 阅读全文
摘要:
Brotli 和 Gzip 都是用于数据压缩的算法,旨在减少文件大小以加快网络传输速度。然而,它们之间存在一些关键区别: 压缩效率 Brotli:由Google开发,提供了比Gzip更高的压缩率,尤其是在文本文件(如HTML、CSS和JavaScript)上表现尤为突出。Brotli通过使用一个预定 阅读全文
摘要:
解释 { "$schema": "https://json.schemastore.org/tsconfig", "display": "Web Application", "extends": "./base.json", "compilerOptions": { "jsx": "preserve 阅读全文
摘要:
在编程术语中,# 符号通常用来表示实例方法或属性,而 . 则用于静态方法或属性。然而,在 JavaScript 的官方文档或者标准语法中,并没有使用 # 来区分实例方法和静态方法的习惯。 实际上,JavaScript 使用的是点符号 (.) 来访问对象的方法和属性,无论是静态的还是实例的。 对于 A 阅读全文
摘要:
Airbnb(全称 AirBed & Breakfast,现在通常只称为 Airbnb)是一家美国的在线市场平台和旅行社,它主要提供了一个全球性的住宿预订服务。通过 Airbnb 的网站或移动应用程序,用户可以发布、搜索并预订各种类型的住宿空间,从私人房间到整个公寓或房屋,甚至包括树屋、船屋等特色住 阅读全文
摘要:
SASS 提供了两种不同的语法格式:SCSS (Sassy CSS) 和 缩进格式(Indented Syntax),有时缩进格式也直接被称为 Sass。这两种格式在功能上几乎完全相同,但它们的语法和适用场景有所不同。以下是 SCSS 和缩进格式的主要差异对比及各自的适用场景。 SCSS (Sass 阅读全文
摘要:
存根组件(Stub Components)是单元测试中的一个重要概念,特别是在使用 Vue.js 进行组件测试时。存根组件用于替代真实组件,通常是为了隔离被测组件的依赖,或者是为了加速测试执行速度。通过使用存根组件,你可以专注于测试当前组件的行为,而不必关心其子组件的具体实现。 为什么需要存根组件? 阅读全文
摘要:
jest.spyOn 是 Jest 测试框架提供的一个功能,用于创建一个间谍(spy)来监视对象上的方法调用。然而,直接使用 jest.spyOn 来监听 Vue 组件的生命周期钩子如 created 并不是最直观的方法,因为这些钩子并不是组件实例上的公开方法,而是由 Vue 框架内部管理的。 为了 阅读全文
摘要:
"moduleResolution": "node" 是 TypeScript 编译选项之一,它指定了模块解析策略,具体来说是指定如何查找和解析模块。当你的项目中使用了 import 或 require 语句来导入其他模块时,TypeScript 编译器需要知道去哪里寻找这些模块以及如何解析它们的路 阅读全文
摘要:
jsonpath-plus 是一个功能强大且灵活的 JSONPath 实现,用于在 JavaScript 环境中查询和操作 JSON 数据结构。JSONPath 是一种查询语言,类似于 XPath 用于 XML 的方式,它允许你以简洁的方式从复杂的 JSON 文档中提取特定的数据片段。jsonpat 阅读全文
摘要:
@iarna/toml 是一个用于解析和生成 TOML(Tom's Obvious, Minimal Language)格式的 JavaScript 库。TOML 是一种简单易读的配置文件格式,旨在成为人类可读的配置文件的最佳选择。它被设计为比 JSON 更友好,并且保持了足够的表达力来满足大多数配 阅读全文
摘要:
axios-ntlm 是一个用于在 HTTP 请求中添加 NTLM(NT LAN Manager)身份验证支持的 Axios 插件。NTLM 是一种专有的安全协议,主要用于 Windows 网络环境中的身份验证。它允许客户端和服务端通过一系列消息交换来验证用户的身份,而不需要每次请求都发送用户名和密 阅读全文
摘要:
函数式组件简介 函数式组件(Functional Component) 是 Vue 中的一种特殊类型的组件,它没有实例,也不包含响应式数据、生命周期钩子或状态管理。 函数式组件的主要特点是它们是无状态的(stateless)和无实例的(instance-less),因此性能更高,适合用于简单的展示型 阅读全文
摘要:
inheritAttrs: false 是 Vue.js 中的一个选项,用于控制组件是否继承来自父组件的未声明为 props 的属性(attributes)。默认情况下,Vue 会将这些未被识别为 props 的特性绑定(attribute bindings)传递给子组件,并且它们会被自动应用到子组 阅读全文
摘要:
<style lang="pcss"> 是在前端开发中用于指定样式表使用 PostCSS 处理的一种语法标记。PostCSS 并不是一个预处理器,如 Sass 或 Less,而是一个用 JavaScript 插件转换 CSS 的工具。它允许开发者通过一系列插件来增强、优化和扩展 CSS 功能,例如添 阅读全文
摘要:
JavaScript中的惰性函数(Lazy Function)是一种优化技术,它允许在首次调用函数时执行一些初始化工作,之后可能会替换原始函数为一个更简单的版本。这种模式可以用来提高性能,特别是在函数内部有一些昂贵的操作或检查,而这些操作只需要执行一次。 惰性函数的基本思想是:当函数第一次被调用时, 阅读全文
摘要:
在JavaScript中,参数传递的方式可以分为按值传递和按引用传递,但这个分类稍微有些误导。 更准确的说法是,所有参数都是按值传递的,但对于对象(包括数组和函数)来说,传递的是对象引用的副本。 这意味着如果你传递一个对象给函数,并且在函数内部修改了该对象的属性,那么这些改变会影响到原始对象,因为函 阅读全文
摘要:
shims.d.ts 文件(有时也称为 types/shims-vue.d.ts 或其他类似的命名)在 TypeScript 项目中用于提供类型声明,使得某些特定的工具、库或框架能够在 TypeScript 环境下正常工作。特别是在 Vue.js 项目中,这个文件起到了非常重要的作用,它帮助 Typ 阅读全文
摘要:
TS2792 错误提示 Cannot find module 'vue-demi'. Did you mean to set the moduleResolution option to 'node', or to add aliases to the paths option? 表明 TypeSc 阅读全文
摘要:
在 TypeScript 的配置文件(通常是 tsconfig.json)中,"noEmit": true 是一个编译选项,用于控制 TypeScript 编译器的行为。具体来说,这个选项的作用是告诉编译器不生成任何输出文件,即不会将 TypeScript 文件编译成 JavaScript 文件或声 阅读全文
摘要:
slugify 是一个将字符串转换为 URL 友好格式(称为“slug”)的过程。Slug 是一种简化且易于阅读的字符串,通常用于网页地址、文件名或数据库记录的唯一标识符。通过 slugify 处理后的字符串只包含字母、数字以及连字符(通常是 -),并且去除了所有特殊字符和空格,确保生成的字符串可以 阅读全文
摘要:
remark-gfm 是一个用于处理 GitHub Flavored Markdown (GFM) 的 remark 插件。remark 是一个强大的工具,它允许你解析、操作和编译 Markdown 文档。通过使用 remark-gfm,你可以确保你的 Markdown 文档支持 GitHub 上广 阅读全文
摘要:
环境变量 NODE_TLS_REJECT_UNAUTHORIZED=0 是 Node.js 中用于控制 TLS/SSL 连接行为的一个配置选项。当你设置这个环境变量为 0 时,它会告诉 Node.js 忽略 SSL 证书的验证错误,允许连接到使用自签名证书或无效证书的 HTTPS 服务器。这种做法通 阅读全文
摘要:
MDX(Markdown + JSX)是一种文件格式,它允许你在 Markdown 文档中嵌入 JSX 代码(即带有 XML 语法的 JavaScript)。这种组合使得 MDX 成为了一个强大的工具,特别适合用于编写包含交互式组件和富文本内容的文档或教程。MDX 文件通常以 .mdx 为扩展名。 阅读全文
摘要:
干运行(Dry Run)的解释 干运行(Dry Run) 是一种在软件开发和发布流程中常用的测试手段,用于模拟整个操作过程而不实际执行任何更改。 它的主要目的是验证流程的正确性,确保所有步骤都能按预期工作,而不会对现有系统或数据造成影响。 在 release.ts 脚本中,干运行模式通过 isDry 阅读全文
摘要:
vue-tsc 是 Vue 3 项目中用于类型检查的命令行工具,它是 tsc(TypeScript 编译器)的一个替代品或补充,专门针对 Vue 单文件组件 (SFC) 进行了优化。以下是 vue-tsc 的主要作用和使用场景: 主要作用 类型检查: vue-tsc 可以对 .vue 文件中的 <s 阅读全文
摘要:
Web Worker 和 WebAssembly (Wasm) 是两种不同的技术,它们在前端性能优化中扮演着不同的角色,并适用于不同类型的使用场景。下面我们将详细比较这两种技术的区别以及它们各自的适用场景。 Web Worker 性能优化特点 并发处理:Web Worker 允许你在后台线程中运行 阅读全文
摘要:
Service Worker 和 Web Worker 是两种不同类型的 JavaScript 工作者(worker),它们在浏览器环境中提供了不同的功能和使用场景。下面我们将分别介绍这两种工作者的使用场景、最佳实践以及它们之间的主要区别。 Service Worker 使用场景 离线支持:缓存静态 阅读全文
摘要:
WebAssembly (Wasm) 和 JavaScript (JS) 之间的交互确实有一些限制,但并不完全局限于只能传递 number 类型的数据。实际上,Wasm 和 JS 可以直接交换多种类型的值,并且对于更复杂的数据结构,确实通常需要进行序列化和反序列化。以下是详细的解释: 直接支持的数据 阅读全文
摘要:
hash-wasm 库提供了两种不同的 API 来使用 MD5 哈希算法:wasmMD5 和 createMD5。这两种 API 在使用场景上有显著的区别,主要体现在它们的使用方式、灵活性以及适用的场合。 wasmMD5 函数 同步调用:wasmMD5 是一个同步函数,可以直接传入数据并立即返回哈希 阅读全文