自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

公众号:前端充电宝

关注vx公众号,获取最新原创文章更新哦~

  • 博客(372)
  • 收藏
  • 关注

原创 尤雨溪:Vite的现状与未来展望

10 月 5 日 - 6 日,ViteConf 2023 在线举行,Vue 和 Vite 的创建者尤雨溪发表了题为《》 的演讲,他分享了 Vite 的现状与未来展望,本文就来看一看 Vite 现在怎么样了,以及未来的路将怎么走!

2023-10-06 11:15:51 354

原创 Web版Photoshop来了,用到了哪些前端技术?

经过 Adobe 工程师多年来的努力,并与 Chrome 等浏览器供应商密切合作,通过 WebAssembly + Emscripten、Web Components + Lit、Service Workers + Workbox 和新的 Web API 的支持,终于在近期推出了 Web 版 Photoshop(photoshop.adobe.com),这在实现高度复杂和图形密集型软件在浏览器中运行方面具有重大意义!

2023-10-04 23:00:42 1738

原创 北京互联网公司、外企、国企大盘点

今天来盘点北京的泛互联网公司。涵盖了综合类、外企类、硬件类、电商类、游戏类、娱乐类、生活类、工具类、人工智能类、金融类、教育类、招聘类、汽车类、外包类、信息化类以及国企央企类等多个领域。

2023-10-01 00:34:52 347

原创 20个提升效率的JS简写技巧,告别屎山!

JavaScript 中有很多简写技巧,可以缩短代码长度、减少冗余,并且提高代码的可读性和可维护性。本文将介绍 20 个提升效率的 JS 简写技巧,助你告别屎山,轻松编写优雅的代码!

2023-09-27 15:30:14 202

原创 JS三大运行时全面对比:Node.js vs Bun vs Deno

Node.js 在 2023 年被 Stack Overflow 开发者评为最受欢迎的 Web 技术。Node.js 于 2009 年推出,允许开发人员在浏览器之外使用 JavaScript,彻底改变了服务端编程。它拥有强大的生态系统、庞大的社区,并且经过验证且稳定。为大型应用程序提供 LTS 构建。基于 V8 JavaScript 引擎构建。多年来,Node.js 一直是服务端 JavaScript 开发的支柱,通过第三方工具支持了无数功能。其提供了巨大的功能和灵活性。

2023-09-27 15:20:38 987

原创 VS Code 中使用Git实践,学会了效率翻倍!

本文来一起学习如何在 VS Code 中进行常见的 Git 可视化操作!

2023-09-25 12:22:55 193

原创 竟然可以在一个项目中混用 Vue 和 React?

React和Vue是前端开发中的两大热门框架,各自都有着强大的功能和丰富的生态系统。然而,你有没有想过,在一个项目中同时使用React和Vue?是的,你没有听错,可以在同一个项目中混用这两个框架!本文就来分享 3 个用于混合使用 React 和 Vue 的工具!

2023-09-24 19:26:13 2254 1

原创 2023 年前端 UI 组件库概述,百花齐放!

过去,网页设计师需要手写 CSS 样式,这是一个曲折的过程。随后,出现了一些CSS框架,如Blueprint、960 Grid System、YUI Grids等,它们引入了响应式网格和简洁的UI元素,改变了网页设计的方式。然后,像 Twitter Bootstrap、Foundation 和 Bulma 这样的巨头出现了。它们提供了快速开发和一致的样式,但也导致了一些问题,即网站开始感觉过于相似和统一。

2023-09-24 19:18:28 442

原创 Remix 2.0 正式发布,现代化全栈Web框架!

9 月 16 日,全栈 Web 框架 Remix 正式发布了 2.0 版本,Remix 团队在发布 1.0 版本后经过近 2 年的持续努力,发布了 19 个次要版本、100 多个补丁版本,并解决了数千个问题和拉取请求,终于迎来了第二个主要版本!Remix 具有以下特性:追求速度、用户体验(UX),支持任何 SSR/SSG 等。

2023-09-23 23:32:59 425

原创 Next.js 13.5 正式发布,速度大幅提升!

使用App和Pages Router可以更快地进行迭代:在保存更改时进行更快的迭代:在运行next start时测量:使用流行的图标和组件库时进行更快的更新:支持<picture>标签、暗模式等修复了超过 438 个错误!App Router 的采用在持续增加,根据 HTTP Archive 对前1000万个网站进行的统计数据来看,其增长速度达到了每月。image.png自 Next.js 13.4 版本以来,Next.js 团队的重点一直是改进 App Router 应用的性能和可靠性。

2023-09-23 23:14:59 146

原创 微软最热门的10款前端开源项目!

FAST 是基于 Web Components 和现代 Web 标准构建的技术集合,旨在有效地解决网站和应用设计和开发中的一些最常见的挑战。它支持多种编程语言,如C、C++、C#、Python、JavaScript 和 TypeScript 等,并提供丰富的插件生态系统来扩展功能。Web-Dev-For-Beginners 是由微软开源的一个针对初学者的 Web 开发学习项目,包含 12 周 24 节课,旨在帮助初学者掌握 Web 开发的基础知识和技能,并提供实践经验和示例代码。

2023-09-23 23:13:08 406

原创 JavaScript 终于原生支持数组分组了!

在日常开发中,很多时候需要对数组进行分组,每次都要手写一个分组函数,或者使用lodash的groupBy函数。和,以后再也不需要手写分组函数了,目前最新版本的 Chrome(117)已经支持了这两个方法!

2023-09-22 23:09:20 230

翻译 Google IO 2022——CSS 状态

2022年将成为 CSS 最伟大的一年。无论是在功能还是合作浏览器的功能发布方面,合作目标是实现 14 个功能。概述本文是在 Google IO 2022上发表的演讲的文字形式。这里不会对每个功能进行深入的讲解,而是对每个功能进行简要概述,提供广度而不是深度。下面是这些 CSS 功能的概览:浏览器兼容性将这么多 CSS 功能设置为合作发布的主要原因是来自 Interop 2022 的努力,下面就来看看 Interop 2022 和 Compat 2021 分别做出了哪些努力。1. Compat

2022-05-12 11:49:41 6167 12

原创 2022 年的 React 生态

React 是用于构建用户界面的JavaScript库,其核心是让开发者能够使用函数组件创建组件驱动的用户界面。它带有一些内置解决方案,例如,用于本地状态、副作用和优化性能的 React Hooks,但这些只能处理函数(组件和Hook)以创建 UI。React 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的UI。本文就来看看 React 最新的生态系统,以实现快速技术选型!

2022-01-19 10:12:10 1951

原创 40+ JavaScript操作符,你都知道吗?

JavaScript中的操作符用于表达式的操作。JavaScript提供了很多操作符供我们选择,有些操作符是我们在开发中是经常使用的,有些可能很少使用。但是,这些操作符我们都需要有所了解,因为即使自己不用,当你看到旧项目中的一些罕见的操作符时,还是要理解这个操作符的意义。下面就来看看JavaScript为我们提供了哪些操作符。一、一元操作符 操作符可以根据他们期待的操作符个数来分类,多数的JavaScript操作符都是二元操作符,二元操作符可以将两个表达式合成一个更复杂的表达式。JavaScript也

2022-01-18 09:58:44 902 1

原创 JavaScript 中双引号、单引号和反引号的区别

关注微信公众号:前端充电宝,获取最新原创文章:在 JavaScript 中,单引号(’’)和双引号("") 经常用于创建字符串。通常情况下,使用双引号或单引号没有区别,它们最后都代表一个字符串。当我们需要使用反斜杠字符()来转义字符时,他们之间的唯一区别就体现出来了。​如果使用单引号来创建字符串,那么就不能在该字符串中使用单引号,只能使用反斜杠 ()对其进行转义。比如:const hi = 'hello' world';console.log(hi)只能使用反斜杠来转义:const hi

2022-01-15 13:44:27 3960 1

原创 强烈推荐33个 GitHub 前端学习资源

关注微信公众号:前端充电宝,获取最新原创文章。1. Web Developer Road Mapdeveloper-roadmap 是一个为开发人员准备的学习路线图,他提供了学习编程中每个阶段的详细信息,并且每年都会进行更新。除了有前端的路线路,还包含后端、Android、Java、Python、Go等不同方向的学习路线图。✨Star: 182k官网地址: https://roadmap.sh/GitHub地址: https://github.com/kamranahmedse/develop

2022-01-05 15:15:01 1233

原创 如何实现一个深浅拷贝?

一、浅拷贝的原理与实现浅拷贝是指,一个新的对象对原始对象的属性值进行精确地拷贝,如果拷贝的是基本数据类型,拷贝的就是基本数据类型的值;如果拷贝的是引用数据类型,拷贝的就是内存地址。如果其中一个对象的引用内存地址发生改变,另一个对象也会发生变化。1. Object.assign()object.assign 是 ES6 中 object 的一个方法,该方法可以用于 JS 对象的合并。我们可以使用它来实现浅拷贝。​该方法的参数 target 指的是目标对象,sources指的是源对象。使用形式如下:

2021-09-05 00:07:23 785 1

原创 解决Git出现Your account has been blocked报错

在拉代码时出现如下报错:解决方法:重新设置远程仓库地址即可git remote set-url origin 远程仓库地址

2021-07-16 11:06:28 4287

原创 「2021」高频前端面试题汇总之代码输出结果篇

系列文章:【1】「2021」高频前端面试题汇总之HTML篇【2】「2021」高频前端面试题汇总之CSS篇【3】「2021」高频前端面试题汇总之浏览器原理篇【4】「2021」高频前端面试题汇总之计算机网络篇【5】「2021」高频前端面试题汇总之Vue篇【6】「2021」高频前端面试题汇总之React篇【7】「2021」高频前端面试题汇总之JavaScript篇【8】「2021」高频前端面试题汇总之性能优化篇目录系列文章:一、异步&事件循环1. 代码输出结果2. 代码输出结果3. 代码

2021-07-06 17:25:50 1429

原创 在Vue项目中使用React组件,在React项目中使用Vue组件

开发中遇到一个需求:在Vue项目中使用已经开发好的React组件。这里选择了使用vuera库来完成需求。下面记录一下使用的步骤(在Reat项目中使用Vue组件与此步骤类似)。1. 安装vuera库vuera库地址:https://www.npmjs.com/package/vuera首先需要在Vue项目中安装vuera库,安装指令如下:// 使用yarn安装插件yarn add vuera// 使用npm安装插件npm i -S vuera2. 安装依赖由于我们需要在Vue中使用Rea

2021-07-04 16:10:00 10902 11

原创 2021-04-04 | 337. 打家劫舍 III

1. 题目描述在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 / \ 2 3 \ \

2021-04-07 19:21:14 330

原创 2021-04-05 | 213. 打家劫舍 II

1. 题目描述你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。示例 1:输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号房屋(金额 = 2), 因

2021-04-07 18:43:57 276

原创 2021-04-07 | 64. 最小路径和

1. 题目描述给定一个包含非负整数的 _m_ x _n_ 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明: 每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。示例 2:输入:grid = [[1,2,3],[4,5,6]]输出:12提示:m == grid.lengthn == grid[i].length1 <=

2021-04-07 18:12:57 234

原创 2021-04-06 | 120. 三角形最小路径和

1. 题目描述给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。**相邻的结点 **在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1 。示例 1:输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示: 2 3 4 6 5 74 1 8 3

2021-04-07 18:11:48 239

原创 深入理解浏览器的事件机制

目录1. 事件模型2. 事件循环(1)单线程的JavaScript(2)浏览器的Event Loop(3)宏任务、微任务(4)Node的Event Loop(5)什么是调用栈3. 事件委托(事件代理)(1)事件委托的原理(2)事件委托的优点(3)事件委托的缺点(4)事件委托的使用场景1. 事件模型事件流总共有三个阶段(IE8及以下版本没有阶段):捕获阶段:图中1-5目标阶段:图中5-6冒泡阶段:图中6-10(1)捕获事件流:就是事件由页面元素接收,逐级向下,传播到最具体的位置(2)冒泡事

2021-03-31 00:28:53 791

原创 2.5w字 | 28道 LeetCode 题目带你看看链表的那些套路

1. 链表的概念(1)链表的结构在计算机里,不保存在连续存储空间中,而每一个元素里都保存了到下一个元素的地址的数据结构,我们称之为链表(Linked List)。链表上的每一个元素又可以称它为节点(Node),而链表中第一个元素,称它为头节点(Head Node),最后一个元素称它为尾节点(Tail Node)。链表的结构定义中,包含了两个信息,一个是数据信息,用来存储数据的,也叫做数据域;另外一个是地址信息,用来存储下一个节点地址的,也叫做指针域。可以看到,链表节点以整型作为数据域的类型,其中.

2021-03-25 10:47:14 435

原创 2021-03-24 | 23. 合并K个升序链表

1. 题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists

2021-03-24 23:36:59 239

原创 2021-03-01 | 138. 复制带随机指针的链表

1. 题目描述给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。**复制链表中的指针都不应指向原链表中的节点 **。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --&g

2021-03-24 23:36:17 164

原创 2021-03-02 | 725. 分隔链表

1. 题目描述给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。返回一个符合上述规则的链表的列表。举例: 1->2->3->4, k = 5 // 5 结果 [ [1], [2], [3], [4], null ]示例 1:输入:root = [1

2021-03-24 22:48:07 227

原创 2021-03-03 | 147. 对链表进行插入排序

1. 题目描述对链表进行插入排序。插入排序的动画演示如上。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。重复直到所有输入数据插入完为止。示例 1:输入: 4->2->1->3输出:

2021-03-24 00:28:39 272 1

原创 2021-03-04 | 237. 删除链表中的节点

1. 题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:给定你链

2021-03-24 00:00:49 207

原创 2021-03-05 | 203. 移除链表元素

1. 题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。示例 1:输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]提示:列表中的节点在范围 [0, 10] 内1 <= Node.val

2021-03-23 23:51:42 140

原创 2021-03-06 | 1721. 交换链表中的节点

1. 题目描述给你链表的头节点 head 和一个整数 k 。交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[1,4,3,2,5]示例 2:输入:head = [7,9,6,6,7,8,3,0,9,5], k = 5输出:[7,9,6,6,8,7,3,0,9,5]示例 3:输入:head = [1], k = 1输出:[1]示例 4:输入:head =

2021-03-23 23:37:33 162

原创 2021-03-07 | 61. 旋转链表

1. 题目描述给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1-&gt

2021-03-23 23:17:25 96

原创 2021-03-08 | 445. 两数相加 II

1. 题目描述给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。进阶:如果输入链表不能修改该如何处理?换句话说,你不能对列表中的节点进行翻转。示例:输入:(7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 8 -> 0 -> 72. 解题思路对于这道题目,我们可以先用两个栈分

2021-03-23 23:00:00 152

原创 2021-03-09 | 160. 相交链表

1. 题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B

2021-03-23 22:34:57 140

原创 2021-03-23 | 817. 链表组件

1. 题目描述给定链表头结点 head,该链表上的每个结点都有一个 唯一的整型值 。同时给定列表 G,该列表是上述链表中整型值的一个子集。返回列表 G 中组件的个数,这里对组件的定义为:链表中一段最长连续结点的值(该值必须在列表 G 中)构成的集合。示例 1:输入:head: 0->1->2->3G = [0, 1, 3]输出: 2解释:链表中,0 和 1 是相连接的,且 G 中不包含 2,所以 [0, 1] 是 G 的一个组件,同理 [3] 也是一个组件,故返回 2。

2021-03-23 22:32:49 254

原创 2021-03-22 | 707. 设计链表

1. 题目描述设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节

2021-03-23 21:59:43 102

原创 2021-03-10 | 876. 链表的中间结点

1. 题目描述给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.ne

2021-03-23 21:55:54 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除