学前端视频笔记

浏览器进程模型
渲染主线程是如何工作的
何为异步
任务优先级
页面渲染
什么是 reflow
什么是 repaint
为什么 transform 的效率高
UI 组件的二次封装

UI 组件的二次封装_ui 的slot-CSDN博客

Vue 基础组件二次封装的高级技巧及方法,能更优雅的进行二次封装组件(Vue3组件封装--继承第三方组件的Methods方法)_vue moment时间处理二次封装-CSDN博客

TypeScript

深入理解 TypeScript 中的 Keyof 运算符,让你的代码更安全、更灵活!-CSDN博客

绝对路径和相对路径
相对路径

相对路径是相对于当前文档位置的路径。它不以斜杠(/)开头。

javascript 复制代码
<img src="images/logo.png">
<a href="about.html">About Us</a>
<script src="js/main.js"></script>

在这些例子中:

  • "images/logo.png" 指向与当前文件同级的 images 文件夹中的 logo.png
  • "about.html" 指向与当前文件同级的 about.html
  • "js/main.js" 指向与当前文件同级的 js 文件夹中的 main.js

相对路径的优点是它们使项目更容易移植,因为文件之间的相对关系保持不变。

绝对路径

绝对路径提供了从网站根目录到文件的完整路径。它以斜杠(/)开头。

javascript 复制代码
<img src="/images/banner.jpg">
<a href="/index.html">Home</a>
<link rel="stylesheet" href="/css/styles.css">

在这些例子中:

  • "/images/banner.jpg" 指向网站根目录下的 images 文件夹中的 banner.jpg
  • "/index.html" 指向网站根目录下的 index.html
  • "/css/styles.css" 指向网站根目录下的 css 文件夹中的 styles.css

绝对路径的优点是它们总是指向同一位置,不管当前页面在哪里。

根相对路径

还有一种特殊类型的路径叫做根相对路径,它以斜杠开头但不包含域名。这种路径相对于当前域的根目录。

javascript 复制代码
<a href="/contact.html">Contact Us</a>

这里,"/contact.html" 指向网站根目录下的 contact.html,不管 post.html 文件位于哪个子目录。

总结
  • 相对路径: 相对于当前文件位置
  • 绝对路径: 从网站根目录开始的完整路径
  • 根相对路径: 相对于网站根目录,但不包含域名
为什么使用 form

Vue.js 使用Vue.js提交表单,是否应该使用form标签|极客笔记

给 fetch 添加超时功能

【JS】如何给fetch添加超时功能_js fetch 超时-CSDN博客

never类型的妙用

TypeScript:never 类型的神奇妙用-CSDN博客

深入理解插槽

深入理解与运用Vue 2中的插槽(Slots)_vue2 slot-CSDN博客

https://juejin.cn/post/7258582103326752824

this 指向

深入浅出 js 中 this 的指向问题_js 点击事件this-CSDN博客

在vite中自动生成路由

https://juejin.cn/post/7233695223401283641

使用CORS解决跨域问题

前端跨域解决方案之CORS详解_前端cors解决跨域-CSDN博客

对象数组去重
javascript 复制代码
function deepEqual(obj1, obj2) {
  if (obj1 === obj2) return true;

  if (typeof obj1 !== 'object' || obj1 === null || typeof obj2 !== 'object' || obj2 === null) {
    return false;
  }

  const keys1 = Object.keys(obj1);
  const keys2 = Object.keys(obj2);

  if (keys1.length !== keys2.length) return false;

  for (let key of keys1) {
    if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {
      return false;
    }
  }

  return true;
}

const array = [
  { id: 1, name: 'Alice', details: { age: 25, hobbies: ['reading', 'painting'] } },
  { id: 2, name: 'Bob', details: { age: 30, hobbies: ['coding', 'gaming'] } },
  { id: 1, name: 'Alice', details: { age: 25, hobbies: ['reading', 'painting'] } },
  { id: 3, name: 'Charlie', details: { age: 28, hobbies: ['traveling', 'cooking'] } }
];

const uniqueArray = array.filter((item, index, self) =>
  index === self.findIndex(t => deepEqual(t, item))
);

console.log(uniqueArray);
深度克隆
javascript 复制代码
function isObject(obj) {
  return obj !== null && typeof obj === 'object';
}

function deepClone(obj, hash = new WeakMap()) {
  if (!isObject(obj)) {
    return obj;
  }

  if (hash.has(obj)) {
    return hash.get(obj);
  }

  const constructor = obj.constructor;
  let clone;

  if (constructor === Date) {
    clone = new Date(obj);
  } else if (constructor === RegExp) {
    clone = new RegExp(obj);
  } else {
    clone = new constructor();
  }

  hash.set(obj, clone);

  for (let key in obj) {
    if (obj.hasOwnProperty(key)) {
      clone[key] = deepClone(obj[key], hash);
    }
  }

  return clone;
}

const originalObject = {
  name: 'Alice',
  age: 25,
  details: {
    hobbies: ['reading', 'painting'],
    address: {
      city: 'New York'
    }
  },
  getGreeting: function() {
    return `Hello, ${this.name}`;
  }
};

const clonedObject = deepClone(originalObject);

console.log(clonedObject);
前端 脚本加载失败怎么办?

如何解决JS脚本加载失败的问题_css加载很快js加载不出来-CSDN博客

【前端】脚本加载失败怎么办_线上加载脚本失败怎么配置-CSDN博客

JSX 封装命令式弹框组件

https://juejin.cn/post/7251515125048213541

模块自动导入

Vite使用unplugin-auto-import实现vue3中的自动导入_vite autoimport-CSDN博客

幻影依赖

https://juejin.cn/post/7268300461727481868

console.log导致的内存泄露

【性能优化】console.log引起内存泄漏_console.log影响性能吗-CSDN博客

computed&v-model

https://juejin.cn/post/7277089907974422588

封装resize指令

vue3,封装检测元素大小变化的自定义指令 - Hhuizi - 博客园

超详细:在Vue3中实现自定义指令在Vue项目中,大多数人都会使用到Vue内置的一些指令,在使用的时候不知道有没有想过自 - 掘金

数据分组引发的思考

JS数据分组引发的思考_js 对数据分组-CSDN博客

参数归一化

参数归一化-实现时间格式化_参数格式化-CSDN博客

你不知道的CSS选择器

你可能不知道的CSS选择器!_css伪类元素选择器-CSDN博客

状态仓库持久化

https://juejin.cn/post/7400589189391908899

node的模块查找策略

Node.js 模块查找机制_node查找模块的机制-CSDN博客

彻底迈过js赋值运算的坑

https://juejin.cn/post/7370275556904468489

watchEffect中的异步问题

https://juejin.cn/post/7310786618391265317

函数签名

前端 JS 经典:函数签名_js函数签名-CSDN博客

箭头函数的意义

箭头函数存在的意义(消除函数的二义性)_箭头的函数出现的意义-CSDN博客

ESModule的工作原理

ESModule的工作原理【渡一教育】_哔哩哔哩_bilibili

判断是不是数组

JS判断是否是数组的四种做法 - 听风是风 - 博客园

token无感刷新

token无感刷新【渡一教育】_哔哩哔哩_bilibili

布尔判定和短路规则

JavaScript中逻辑或(||)逻辑与(&&)_javascript逻辑与-CSDN博客

parseInt和Math.floor

JavaScript 中 Math.floor() 和 parseInt() 的应用场景和区别_math.floor js-CSDN博客

【JS】parseInt与Math.floor的区别_math.floor parseint-CSDN博客

极简精妙的JS代码片段

JS极简代码片段 - Alan明宇's Blog

script setup到底做了什么

Vue3 <script setup>是什么?作用?_<script setup>-CSDN博客

https://juejin.cn/post/7420272008146190362

TS获取参数和返回值类型

TypeScript 获取函数的参数类型、返回值类型_ts 获取函数参数的类型-CSDN博客

内存泄漏和闭包

解析JavaScript中的闭包和内存泄漏:真相与误解在JavaScript开发领域,闭包常常被误解为导致内存泄漏的罪魁 - 掘金

Proxy和DefineProperty

defineProperty 与 proxy 详解_defindeproperty proxy-CSDN博客

css 多行文本擦除效果

多行文本擦除效果_css文字擦除效果-CSDN博客

组件循环依赖问题

组件循环依赖问题_vue 组件循环依赖-CSDN博客

从视频文件提取画面帧

前端开发攻略---从视频文件中提取画面帧_前端视频抽帧-CSDN博客

服务监控与数据埋点

服务监控与数据埋点

​图片边框​

https://juejin.cn/post/7136833061320146974

JS中的计时是否精确

https://juejin.cn/post/7254572372136984613

JS中的计时是否精确

跟随系统的主题切换

实现网页跟随系统主题切换_window.matchmedia("(prefers-color-scheme: dark)")-CSDN博客

跟随系统的主题切换【渡一教育】_哔哩哔哩_bilibili

相关推荐
你要飞33 分钟前
Hexo + Butterfly 博客添加 Live2D 看板娘指南
笔记
ajsbxi4 小时前
【Java 基础】核心知识点梳理
java·开发语言·笔记
呱呱巨基4 小时前
vim编辑器
linux·笔记·学习·编辑器·vim
新子y4 小时前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
聪明的笨猪猪4 小时前
Java JVM “调优” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
爱学习的uu4 小时前
CURSOR最新使用指南及使用思路
人工智能·笔记·python·软件工程
YuCaiH5 小时前
Linux文件处理
linux·笔记·嵌入式
Cathy Bryant5 小时前
大模型损失函数(二):KL散度(Kullback-Leibler divergence)
笔记·神经网络·机器学习·数学建模·transformer
qq_398586545 小时前
Threejs入门学习笔记
javascript·笔记·学习
hour_go6 小时前
TCP/IP协议相关知识点
网络·笔记·网络协议·tcp/ip