学前端视频笔记

浏览器进程模型
渲染主线程是如何工作的
何为异步
任务优先级
页面渲染
什么是 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

相关推荐
FmixZA6 小时前
【香橙派开发笔记】中文界面与输入法配置
笔记
代码小将6 小时前
java泛型笔记
java·笔记
报错小能手6 小时前
C++笔记(基础)string基础
开发语言·c++·笔记
卡布叻_星星8 小时前
前端JavaScript笔记之父子组件数据传递,watch用法之对象形式监听器的核心handler函数
前端·javascript·笔记
aramae10 小时前
Linux开发工具入门:零基础到熟练使用(二)
linux·运维·服务器·网络·笔记
Suckerbin11 小时前
burpsuite网络安全学院: JWT attacks靶场通关
网络·笔记·安全·web安全·网络安全
智者知已应修善业12 小时前
【C++无数组矩阵对角线平均值保留2位小数】2022-11-18
c语言·c++·经验分享·笔记·算法·矩阵
环球经济报12 小时前
“常小豚苏超限定款”公益联名:以热爱之名守护生态赛场
笔记
半导体守望者13 小时前
TR帝尔编码器GSD文件 PROFIBUS XML PROFINET EtherCAT 文件 ADH CDH CMV等
xml·经验分享·笔记·机器人·自动化·制造