自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员成长指北

一个有趣的且乐于分享的人.专注 完整的 Node.js 技术栈分享,从 JavaScript 到 Node.js;再到后端数据库,祝您成为优秀的高级 Node.js 工程师.座右铭:今天未完成的,明天更不会完成.

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

转载 前端关于单点登录的知识

作者:An_an16347原文:https://juejin.im/post/6844903664264413198什么是单点登录单点登录(Single Sign On),简称为 SSO...

2020-08-24 08:32:50 1621

转载 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

作者:蒋鹏飞链接:https://juejin.im/post/5e50e5b16fb9a07c9a1959af这篇文章主要讲一下JS中面向对象以及 __proto__,ptototyp...

2020-08-23 14:24:28 555

转载 前端模块化:CommonJS,AMD,CMD,ES6 学习

作者 | subwaydown地址 |https://juejin.im/post/6844903576309858318模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一...

2020-08-22 11:30:00 417

转载 (有趣问答)2019年nodejs凉了吗?凉到什么程度了?

今天在下于知乎上看到一个有趣的问题,叫「2019年nodejs凉了吗?凉到什么程度了?」问题挺耸人听闻的,但其实是一个很普适性的问题,对于大部分语言和框架的使用者来说都值得借鉴。这个问题...

2020-08-21 08:36:14 1284

原创 vue中8种组件通信方式, 值得收藏!

之前写了一篇关于vue面试总结的文章, 有不少网友提出组件之间通信方式还有很多, 这篇文章便是专门总结组件之间通信的vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢?首先我们需要知道在vue中组件之间存在什么样的关系, 才更容易理解他们的通信方式, 就好像过年回家,坐着一屋子的陌生人,相互之间怎么称呼,这时就需要先知道自己和他们...

2019-11-28 16:53:48 4329 3

原创 消息队列Rabbitmq,在Node.js中的应用

为什么写这篇文章 现在的面试要求越来越高了,打开看了看几个 BOSS 招聘 Node.js 全栈开发的,其中都有一条“了解 消息队列,并在项目中应用过”,呜呜呜 后端开发者应该都知道消息队列,但是一些前端开发者可能知道的并不多,但是你们可能好奇抢票,商品秒杀等功能是如何实现的,其实没有多么高大上,看了消息队列就知道了。 文章导图(你能学到)什么是消息队列“消息队列...

2019-11-26 09:05:34 7691 3

原创 Node.js中的执行顺序(微任务与事件循环)

提出问题在理解node.js的异步的时候有一些不懂的地方,使用node.js的开发者一定都知道它是单线程的,异步不阻塞且高并发的一门语言,但是node.js在实现异步的时候,两个异步任务开启了,是就是谁快就谁先完成这么简单,还是说异步任务最后也会有一个先后执行顺序?对于一个单线程的的异步语言它是怎么实现高并发的呢?好接下来我们就带着这两个问题来真正的理解node.js中的异步(微任务与事件循环...

2019-04-28 22:05:50 6415 2

原创 超详细的redis学习(1)-入门篇

什么是Redis基本概念redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库(非关系性数据库)。redis的优势速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)支持丰富数据类型,支持string,list,set,sorted set,hash支持事务,操作都是原子性...

2018-09-12 15:11:01 24939 2

原创 javascript之原型链详解

对象着手在谈原型链之前,先了解对象,万物皆对象。所有引用类型(函数,数组,对象)都拥有proto属性(隐式原型)所有函数拥有prototype属性(显式原型)(仅限函数)原型对象:拥有prototype属性的对象,在定义函数时就被创建prototype与proto两个概念prototype:此属性只有构造函数才有,它指向的是当前构造函数的原型对象。proto:此...

2018-09-07 17:06:41 674

原创 javascript中的闭包这一篇就够了

什么是闭包 维基百科中的概念在计算机科学中,闭包(也称词法闭包或函数闭包)是指一个函数或函数的引用,与一个引用环境绑定在一起,这个引用环境是一个存储该函数每个非局部变量(也叫自由变量)的表。闭包,不同于一般的函数,它允许一个函数在立即词法作用域外调用时,仍可访问非本地变量 学术上闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的参...

2018-09-06 18:08:48 1035

原创 LayoutParams基本使用

LayoutParams是什么?LayoutParams主要保存了一个View的布局参数,因此可以使用LayoutParams来改变布局参数从而达到View位置的效果,一般在自定义View的时候使用。LayoutParams怎么用?如果父控件是LinearLayout,需要使用LinearLayout.LayoutParams 代码如下:LinearLayout.La...

2018-08-05 23:17:31 9785

原创 回调地狱解决方案之Promise

Node.js异步控制之Promise为什么出现Promise在javascript开发过程中,代码是单线程执行的,同步操作,彼此之间不会等待,这可以说是它的优势,但是也有它的弊端,如一些网络操作,浏览器事件,文件等操作等,都必须异步执行,针对这些情况,起初的操作都是使用回调函数实现。实现方式如下(虚拟代码):function One(callback) { if ...

2018-07-29 15:56:07 1096

原创 async和await的讲解

async和await的讲解声明async函数的几个方法//普通的函数声明async function A(){}//声明一个函数表达式let A=async function(){}//async形式的箭头函数let A=async ()=>{}初识async和awaitasync与await实例应用,基础代码 控制器调用与serv...

2018-07-29 12:29:06 34807 1

原创 开发过程中的系统通知与推送的全面讲解

前言:在我们的软件开发中,系统通知和推送是必不可少的一部分,本篇文章将针对Android端和服务端分别讲解如何完整的实现一个系统通知与推送的功能 ,文章更注重逻辑、思想,不会讲那些基本极光sdk集成内容,如果需要请直接去极光推送官网查看文档。学前准备Android - 了解广播的基本使用,创建广播的几种方式 - ActivityManage和packpageManage的区别...

2018-07-24 10:22:23 5169

原创 解决Gradle:download特别慢或卡主不动的问题

解决Gradle:download特别慢或卡主不动的问题Gradle 在project创建的时候的时候会出现connect refused:connect或者卡在building gradle download https:等情况。 大多数的原因是因为我们Google对我们国内网络的限制: 解决办法:使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件修改项目根目录下的文件 build.gr

2017-06-10 21:14:34 20628 3

原创 Native与html5交互入门篇

Native与html5交互目前主流的移动端开发是混合开发Hybrid 先说一下什么是Hybrid APP,它指的是半原半Web的混合类App,需要下载安装,看上去类似Native App,但只有很少的UI Web View,它极力打造类似原生的App。 学习Native和html5交互,我们要学两点: 1、怎么把一个html5界面当作控件一样显示在界面中。 2、怎么和html5进行数据交互

2017-06-04 20:16:02 1345

转载 浅谈 AI 搜索前端打字机效果的实现方案演进

虽然我们不能准确定位,但是只要能够使当前打印到页面上的字符比上一次的字符多,就可以满足诉求了。之前版本在每次接收到服务端下发的markdown文本时,都会做一次转换成html的操作,如果多次响应之间的间隔时间很短,则会出现略微卡顿的现象,因此这里转换为html时再增加一个防抖功能,可以很有效的避免卡顿。要实现打字正文中穿插卡片的效果,首先需要定义好返回的数据结构,它需要具备可扩展,方便解析,兼容markdown等特性,所以使用html标签是一种比较合适的方式,例如要展示一个应用卡片,可以下发如下所示数据。

2025-12-25 11:51:11 4

转载 一种新HTML页面转换成 PDF 技术方案

本文将深入讲解如何使用 snapdom 和 jsPDF 实现高质量的 HTML 转 PDF 功能,并通过一个完整的消息列表导出案例,带你掌握这套方案的核心技术。jsPDF 是最流行的 JavaScript PDF 生成库,支持在浏览器端直接创建 PDF 文件。案例,讲解如何使用 snapdom + jsPDF 实现 HTML 转 PDF。是强大的 PDF 生成库,支持 A4 纸张、压缩等特性。是整个方案的核心难点,需要精确计算像素与毫米的转换。导出的 PDF 是否足够清晰,尤其在打印时?

2025-12-24 12:20:18 10

转载 CSS if() 函数上线啦!

原文地址:https://medium.com/@karstenbiedermann/the-css-if-function-has-arrived-152115ab2115。多年来,我们一直依赖各种变通方式:用 JavaScript 切换 class、用 CSS 预处理器写 mixin,或者写满屏的媒体查询。函数终结了这些做法,它把条件逻辑直接带进了 CSS —— 优雅、高性能且完全声明式。的值——完全符合编程语言的直觉,只是现在是在纯 CSS 中实现。更深度的容器查询整合:更强的上下文感知能力。

2025-12-23 11:51:09 8

转载 我写了一个超级简单的浏览器插件Vue开发模板

这里是JustHappy🚀🚀,一时兴起想开发一个浏览器插件,但是找来找去发现在Vue生态下好像没有一个超轻的简单的模板或者脚手架,看了一圈感觉antFu大佬的vitesse-webext还不错,但是感觉还不够轻,于是我打算手撸仿写一个简单版本。如果这对你有帮助,哈哈求个star✨,模板大概率还有很多不足,欢迎大家提交issue、pr等,或者单纯骚扰我😜。在开发模式下,后台脚本并不会直接运行正式的 background 逻辑,而是先接入一个开发专用的脚本。点击“加载已解压的扩展程序”,选择项目根目录下的

2025-12-22 11:50:48 17

转载 性能暴涨 3 倍!Prisma 7 颠覆性更新:放弃 Rust 拥抱 TypeScript!

之前的 Prisma Client 虽然核心是用 Rust 写的,但它需要和你的 Node.js/TypeScript 应用进行通信。在前端,“用 Rust 重写一切” 似乎已经成为了提升性能的黄金法则。Prisma 团队在博客中坦言,虽然 Rust 以高性能著称,但在 Prisma Client 的特定场景下,它反而成了瓶颈。:去掉了 JS 到 Rust 的通信层,现在的查询直接在 JS 运行时中处理,性能直接起飞。除了性能,Prisma 7 在开发体验上也听取了社区多年的吐槽,做出了重大改进。

2025-12-19 11:50:40 23

转载 大部分人都错了!这才是chrome插件多脚本通信的正确姿势

虽然内容脚本和页面脚本的执行环境是隔离开的,互相访问不到对方的变量,但它们可以一起操作和共享页面上的 DOM(比如 document.body),所以内容脚本能帮你改页面样式、加按钮、弹提示,但没法直接拿到页面里的 JS 变量。前面说过,页面的 JS 环境和内容脚本的 JS 环境是互相隔离的,彼此访问不到对方的变量和方法,但它们共享同一个 DOM 树。:运行我们平时所装的浏览器插件,我们装的不同的插件都会分配到不同的插件进程中,互不干扰,谁家插件出了问题,最多自己崩,不会影响到其他插件和页面的运行。

2025-12-18 11:59:10 29

转载 可能是你极易忽略的Nginx知识点

其实这个口诀我也记不住,我也不想记,枯燥有乏味,大部分情况都是到问题了, 直接问 AI,或者让 Agent 直接给我改 nginx.conf 文件,几秒钟的事,一遍不行, 多改几遍。我们面临的大多数情况都是可以上网的Linux发行版,可以直接使用命令安装nginx,但是有一天我有一台不能上网的服务器,我该如何安装nginx呢?其实,我不是很推荐这中配置写法,当然这个配置方法确实很简洁,但是对不熟悉 nginx 的同学来说,会造成很大的困惑。两个配置都匹配到了,那么这种情况下,nginx 会选择哪个配置呢?

2025-12-16 11:50:24 16

转载 为什么95%的前端开发人员在系统设计面试中失败

面试官会抛出一些看似简单的问题:“设计一个类似 Facebook 的 News Feed”、“构建一个可扩展的 Chat 应用”、“创建一个电商网站架构”或“设计一个实时协同编辑器”。越来越多的组织意识到,高级前端不仅要会写代码,还必须能做架构决策、预测可扩展性问题,并设计支持业务增长的系统。拥有系统设计能力的高级前端,薪资通常是只会实现功能的同行的两倍。要在系统设计面试和高级岗位中表现出色,你需要从组件视角提升到完整用户体验的视角,整体思考数据流、性能优化、可扩展性和用户体验。

2025-12-15 12:21:21 20

转载 突发!软考空前大利好!恭喜所有程序员!

升职加薪、跳槽加分,享受落户/购房加分、评职称、入专家库、投标评标、涨退休费、现金补贴。......无论你是否有软考基础,都能快速掌握理论要点和案例实操,高效备考一次过关!从25年考试内容看,对于AI大模型、嵌入式等新技术考察会越来越多,范围越来越广,无论你是二/三战、还是初次备考26年的考生,一定不能错过这个学习群!想顺利通关,自学已经不是明智之举,建议抓紧入群,报名本期。课程开班58期,已为20000+学员服务,口碑爆棚,从。的最佳渠道,选对报考科目,更是如虎添翼!

2025-12-13 11:40:56 15

转载 大多数开发者都错误地使用了Prettier

真正重要的是理解 Prettier 如何融入你的工作流,它如何与 ESLint 协作,以及它如何影响团队的代码一致性。✅ 现在 ESLint 会使用 Prettier 的格式规则,并把精力集中在真正的问题上(未使用的变量、未定义的 import 等)。真正的价值不是更漂亮的代码,而是更快的 Code Review、更少争论、更高协作效率。当你正确使用 Prettier,它就不再只是“格式化工具”,而是开发文化的一部分。现在你的格式是明确的、可控的、可预期的,团队成员打开项目也不会产生格式差异。

2025-12-12 12:11:50 14

转载 从崩溃到优雅:Node.js 错误处理的正确姿势

因此,在未从错误中恢复的情况下尝试正常恢复被认为是不安全的,并可能导致进一步的问题,例如内存泄漏和挂起的套接字。关于 Node.js 错误处理的全面指南,介绍了 Node.js 中错误的定义、传递错误的四种常见模式(异常、错误优先回调、Promise 拒绝和事件发射器),以及如何通过扩展 Error 对象来创建自定义错误类。当错误发生的函数在调用栈的较底层,以至于没有足够的信息直接处理该错误时,这通常是解决错误的正确方法。类或通用的错误对象,往往不足以表达各种不同类型的错误,尤其是那些意料之外的错误。

2025-12-11 11:58:22 46

转载 学了那么多 AI,却还是不会落地?

它的每一次行动,都体现着你对责任的担当。课程设计像一本精心编写的“开发指南”,从需求架构、技术选型,到项目初始化、核心功能实现,再到进阶的多模态能力和最终部署上线,带你层层递进,稳稳跑完全程,彻底掌握大模型应用的。,一步步带你解锁AI产品的诸多功能实现(情感识别、意图识别、长期记忆、RAG 知识库、多模态交互、上下文理解等),同时也让你把生产部署和优化迭代等配套环节也能稳稳拿下。:很多课只讲到“代码跑通”,但这门课从架构设计之初,就融入了安全合规、性能监控和弹性扩展等硬核要求,确保你做出来的东西,是真正。

2025-12-10 11:50:47 17

转载 我们可以使用 Local Storage 代替 Context-Redux-Zustand 吗?

在这种情况下,我们会用 Redux/Context/Zustand 管理 UI state,仅让 Local Storage 保存需要持久化的部分(比如主题)。为了解决这个问题,我们可以使用“提升 state(lifting state up)”的技巧:把 state 提到需要共享它的所有组件的最近公共父组件中,然后通过 props 分发。比如一个复杂的过滤器系统,或一个“暗黑模式”主题:页面角落的按钮可以切换主题,但 isDarkMode 的值要分发给页面上一半的组件。它只能存储字符串类型的键值对。

2025-12-09 11:55:21 16

转载 借助图片懒加载触发 JavaScript 动态导入

首先,你会在页面上出现一个不需要的图片,其次,你需要将想要运行的 javascript 内联化,这有点违背了懒加载的初衷。非常简单,非常实用。“回调”只有在图像加载时才会触发,如果图像是懒加载的,那么它只会在图像出现在视口时触发。指向一个不存在的图片,那样会导致控制台充满关于缺失图片的红色 404 错误,没有人想要这样。图片本身可以是任何东西,或者,更重要的是,什么都没有。替换损坏的图片为你自己的 HTML 标记,然后你就有了懒加载的脚本!这仍然会导致页面出现"损坏的图像"缩略图,但我们会解决这个问题的。

2025-12-05 12:03:56 21

转载 如何用隐形字符给公司内部文档加盲水印?(抓内鬼神器)

但问题是,文档是纯文本的,截图上也没有任何显式的水印(那种写着员工名字的大黑字,太丑了,产品经理也不让加)。在Web开发中,除了明面上的UI和交互,还有很多像零宽字符这样隐秘的角落,藏着一些技巧。上个月,我们公司的内部敏感文档(PRD)截图,竟然出现在了竞品的群里。老板,其实泄露的那段文字里,藏着那个人的工号,只是你肉眼看不见。现在,假设我们拿到了泄露出去的这段文字,怎么还原出是谁干的?虽然它不是万能的,但它是一种极低成本、极高隐蔽性的防御手段。这时候,我默默地打开了我的VS Code,给老板演示了一个。

2025-12-04 11:58:05 50

转载 让字距随字体自适应变化的 CSS 技巧

而更多时候,则需要理解那些让设计走到这一步的上千个决策,从而给出最合适的下一步建议。然而,经过测试后发现,这种方式在视觉上显得不太协调 —— 紧凑的标题旁边配着宽松的副标题,看起来不统一,也不和谐。除非是用于大标题、特殊风格的视觉排版或明确的功能性场景,否则过度修改字距容易破坏字体本身的节奏感。其中最引人注意的变化是字体设计的调整 —— 标题使用了更粗的字重,并要求将所有文字的。但较小的文字就变得相当难读。在我们的案例中,最小值是根据客户品牌规范确定的,而其他参数则是在浏览器中反复调试得出的。

2025-12-03 11:49:45 27

转载 web前端230道场景题,背完你的offer就炸了

HTML/CSS 的底层基础、JavaScript 的核心机制、TypeScript 的类型体操、框架的源码原理、计算机网络的具体应用、构建工具的工作流差异。HTTP/1.1 到 HTTP/2/3 的演进、HTTPS 的握手过程、缓存策略、跨域解决方案的底层原理。Webpack 的打包流程、Loader 与 Plugin 的本质区别、常用的优化配置。如果你也厌倦了碎片化的搜寻,希望用系统性的准备来应对下一次挑战,那么这里应该能帮到你。详细的解析、考察点的剖析、以及相关知识的延伸阅读。

2025-12-02 10:07:52 37

转载 用Demo理解Fiber

在eventLoop的剩余时间执行js,那我们就想到一个API:requestIdleCallback (https://developer.mozilla.org/zh-CN/docs/Web/API/Window/requestIdleCallback) 该方法插入一个函数,这个函数将在浏览器空闲时期被调用。大多数人感知到不卡顿的频率在50Hz到60Hz之间,综合考量下60fps(帧率)被视为流畅的基准。在需要连续渲染的时候,如果js的执行超过16.6ms,导致染间隔大于了16.6ms,就会导致卡顿;

2025-12-01 11:51:16 24

转载 Ant Design 6.0 来了!这一次它终于想通了什么?

根据官方的对比图,Zero Runtime 模式下的性能表现是最佳的。这可能对一些维护古董项目的团队是坏消息,但对于整个前端生态来说,这是大快人心的。虽然它解决了按需加载的问题,但带来的运行时性能损耗和样式插入延迟,一直是性能敏感型项目的噩梦😭。在一个技术栈迭代快如闪电的时代,一个库能活 10 年,并且还能在第 10 年做出 v6 这样推倒重来式的革新,是值得赞扬的👍👍👍。今天,我就以一个老用户的视角,来聊聊 Antd 6.0 到底改了什么,以及作为技术组长,我怎么看待这次升级🤷‍♂️。

2025-11-27 11:51:33 145

转载 当 AI 走进前端开发:代理插件的全流程开发实践

都是最关键的第一步。在调试阶段,如果发现 AI 生成的代码出现了逻辑混乱或交互异常的情况,建议不要盲目让 AI 一直修改同一段代码,可以开启一个新的对话轮次,重新提供上下文和问题描述。,规范驱动开发是一种让 AI 按照清晰规范、有序推进的工作流,它分阶段产出明确文档,让整个开发过程更可控、更高质量,在不久前发布的 kiro 就推过 spec。在这种情况下,最好的做法是。

2025-11-26 11:58:40 47

原创 工具浪潮下 Babel 的定位与未来演进!

Babel 有一个很典型的场景,就是开发 React 应用时的 JSX 转译,在过去几乎是一个事实标准,在 create-react-app(React 曾经的官方脚手架,现已废弃)等用到了 WebPack 技术栈的脚手架里,babel-loader 就是默认配置,大家下意识地就用 Babel 来转译 JSX。虽然放弃旧 Node 版本和代码清理会带来微小的性能提升,但它本质上仍然运行在 JS 引擎之上,对于原生工具带来的降维打击是束手无策的,除非 Babel 自己也引入 Rust/Go 的代码。

2025-11-25 11:49:29 382

转载 常被忽视的 Node.js 功能,彻底改善了日志体验

关于在 Node.js 中实现上下文感知日志记录的,作者通过亲身经历分享了一种有效的方法来解决日志记录中常见的问题,即如何将日志与特定的请求关联起来,以便于在生产环境中进行有效的调试和监控。我先从一个最基础的方案讲起:写一个中间件生成 request ID,用它创建带有该 ID 的 logger,并在请求开始与结束时记录日志。只有我,一个人,凌晨 2 点盯着终端,瞎猜哪些日志是属于同一个请求的。在上面的例子中,我创建了一个在整个请求生命周期内都能保持的上下文环境。它速度快,还能输出整洁的 JSON。

2025-11-24 11:51:00 34

转载 开源的SSR框架都是怎么实现的?

而CSR只需要静态托管即可,我们每次发布后所生成的html文件是固定的,直接托管在站点访问即可(SSG也是如此)。,做了一些框架上的运行时、App全局处理记录,可能是用于提供框架对外透出的生命周期钩子函数,与。一下子我们的多个猜想都石锤了。两者的渲染时间差也差在其中,SSR不需要解析完JS再渲染,等一次请求就行。,则动态引入服务端渲染函数,直接走渲染链路(即上节链路),否则就走常规。直接映入眼帘,非常言简意赅,就是处理服务端渲染 -> 响应的函数。服务,用于接收所有的请求,基于请求路由来返回路由组件;

2025-11-21 11:56:38 48

转载 高级前端开发人员最佳实践

从 Junior 到 Senior 的旅程,并不是学习完所有知识,而是学会判断:什么时候该遵循模式,什么时候该打破模式。这篇长文所探讨的实践,不只是技术知识,更是一种思维方式的转变:去构建能长期维护的软件。无论是 state 架构,还是 JSX 格式化,它们的目标都是一致的:创造能够成长、适应并被团队理解的代码。错误边界是组件级错误隔离的关键。这样,问题就变得易于管理,即使出现问题,用户仍然可以获得流畅的体验。精心设计的类型可以让团队中的每个人都更容易理解数据在应用程序中的流动方式以及每一步的预期结果。

2025-11-20 12:29:20 46

空空如也

空空如也

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

TA关注的人

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