自定义博客皮肤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 工程师.座右铭:今天未完成的,明天更不会完成.

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

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

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

2020-08-24 08:32:50 1541

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

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

2020-08-23 14:24:28 511

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

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

2020-08-22 11:30:00 399

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

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

2020-08-21 08:36:14 1230

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

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

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

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

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

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

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

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

2019-04-28 22:05:50 6349 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 24831 2

原创 javascript之原型链详解

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

2018-09-07 17:06:41 643

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

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

2018-09-06 18:08:48 1006

原创 LayoutParams基本使用

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

2018-08-05 23:17:31 9745

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

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

2018-07-29 15:56:07 1057

原创 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 34659 1

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

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

2018-07-24 10:22:23 5106

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

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

2017-06-10 21:14:34 20521 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 1305

原创 TS进阶!深入探索 TypeScript 工具类型:内置神器与高阶扩展

TypeScript 的类型系统是其最强大的特性之一,它提供了丰富的内置工具类型(Utility Types),让我们能够以声明式的方式操作和转换类型。本文将带您了解 TypeScript 常用的内置工具类型,并基于它们构建强大的高阶TS类型扩展。TypeScript 的工具类型系统就像是一个强大类型转换工厂,内置工具类型提供基础能力,而基于它们实现的高阶扩展则可以用更优雅、更安全的方式构建复杂系统。- 从类型T中排除可赋值给类型U的类型。- 从类型T中提取可赋值给类型U的类型。

2025-06-12 12:26:34 178

转载 你以为的 Tailwind 并不高效,看看这些使用误区

Tailwind 写得越多,越觉得混乱”“组件样式重复一堆”“设计师完全看不懂这坨 className”…“blue-500” 具体代表什么品牌色?Tailwind CSS 被誉为“实用优先的 CSS 框架”,然而在实际项目中,对 UnoCSS 完全不了解(其实比 Tailwind 更自由,兼容性好)Tailwind 并不是魔法,它只是一个极致实用主义的 CSS 工具包。🎨 误区三:直接使用 Tailwind 默认色板,导致主题难以统一。✅ 正确的 Tailwind 使用思维:构建语义原子设计系统。

2025-06-11 12:15:08 12

转载 做个大屏既要不留白又要不变形还要... 我怒斥领导,大屏适配就这四种模式!

大屏适配是一个复杂的问题,不同的项目有不同的需求。在实际开发中,我们需要根据项目的具体需求和用户体验来权衡,选择最合适的适配方案。今天,我们就来聊聊大屏适配的四种常见模式,以及如何根据实际需求选择合适的方案。如果内容的宽高比与视口不一致,会在视口内出现空白区域(黑边)。是一个视口自适应的 JavaScript 插件,它支持多种适配模式,能够快速实现大屏自适应效果。:内容不会被拉伸变形,当内容超出视口时会添加滚动条。:内容不会被拉伸变形,当内容超出视口时会隐藏超出部分。:内容会被拉伸变形,以完全填充视口框。

2025-06-10 12:18:03 9

转载 使用 Puppeteer 实现文件下载

所以需要一个能够运行 Puppeteer 的 Docker 镜像,虽然官方文档里面提供了在 Docker 里面运行的一些配置,但当初踩了很多坑。利用 Puppeteer 提供的截图功能,在报错的时候截一张图,把图片一起贴到告警邮件里面。去年有过这么一个需求,我们需要到某合作方网站(某国银行)下载文件,他们只提供了帐号密码,没有提供下载的接口,需要我们自己去分析接口来调用。虽然我们已经发送了告警邮件,但还是无法知道问题出在了哪一步,比如网站可能刚好半夜维护了,或者网站改版了,对这个脚本都是一个致命的打击。

2025-06-09 12:02:04 12

转载 Cursor 1.0 重磅发来袭(毛骨悚然,开始学习你如何编码)

通过 BugBot 的智能代码审查、Background Agent 的异步任务处理,以及 Jupyter 的原生支持,Cursor 正在重新定义开发者的工作流程。如果您是 MCP 开发者,可以通过在文档和 README 中添加"添加到 Cursor"按钮,轻松让您的服务器对开发者可用。现在您可以在 Cursor 中一键设置 MCP 服务器,结合 OAuth 支持,您可以轻松认证支持该功能的服务器。通过新的仪表板,您可以查看个人或团队的使用分析,更新显示名称,并按工具或模型查看详细统计信息。

2025-06-09 12:02:04 17

转载 stagewise:让AI与代码编辑器无缝连接

Stagewise 是一个旨在提高开发效率的工具,它允许 Cursor、GitHub Copilot 和 Windsurf 等工具与浏览器交互,支持对任何 DOM 元素进行注释,并将实际上下文发送给 Windsurf,提供了一种时间节省的方法,减少手动选择文件的需要,支持 React、Next.js、Vue 和 Nuxt.js 等框架。stagewise 是一个创新的浏览器工具栏插件,它将前端 UI 元素直接连接到你的 AI 代码助手,帮助开发者节省时间、减少重复操作。安装后即可立即使用,无需复杂配置。

2025-06-08 22:52:27 31

转载 最全301/302重定向指南:从SEO到实战,一篇就够了

测试(也称为分割测试或桶测试)是一种用户体验研究方法,通过将用户流量分成不同的组,向不同组展示不同版本的页面或功能,然后比较这些版本的效果,以确定哪个版本能产生更好的结果。大家好,我是芝士,最近创建了一个低代码/前端工程化交流群,欢迎加我微信 Hunyi32 进群一起交流学习,也可关注我的公众号前端界。指定的新URL发起一个新的请求。重定向表明请求的资源已永久移动到新的位置,搜索引擎和浏览器都会相应地更新其索引和缓存。引入的响应头,用于控制缓存行为,可以设置多个指令,用逗号分隔,优先级高于。

2025-06-07 22:33:16 71

转载 记录一次前端项目代码Review

如图, 这个用来格式化时间的工具函数被定义了三次, 如果不凑巧, 在你需要修改这个函数的时候不知道它被定义了3次, 仅更改了其中一个函数, 你以为你更改了代码的行为, 但是那些引用其他位置函数的代码还是原来的逻辑, bug就这样被制造了出来...作者最近从别的团队接手了一个长期维护的项目, 因为项目经手的开发人员多, 代码管理不到位, 再加上开发周期紧张, 定制化需求多等问题, 导致项目内冗余代码过多, 代码质量参差不齐, 项目难以继续维护, 所以开始。

2025-06-06 13:00:39 25

转载 为了让 iframe 支持 keepAlive,我连夜写了个 kframe

Iframe 组件是对 iframe 操作流的封装,方便在 vue 项目中使用,内部涉及 iframe 创建、插入、设置样式、移除等操作,为方便操作,将其封装为 Iframe 类;iframe 无法保存于 VNode 中,又不能将 iframe 从文档中移动或移除,那么就想办法在某个地方把 iframe 存起来,比如 body 节点下,然后通过样式控制 iframe 展示与隐藏,顺着思路捋一下整体流程。是正常的,异常的是内嵌于页面的 iframe 内容区,页面每次。切换标签后内容区自动刷新,操作进度丢失?

2025-06-05 12:13:27 28

转载 11 个 JavaScript 杀手脚本,用于自动执行日常任务

希望今天内容能够帮助到你,如果你喜欢此内容的话,也请分享给你的小伙伴,也许能够帮助到他们。此脚本将文件从一个目录复制到备份文件夹,确保您始终保存最新版本。注意:您需要先安装此包:npm install node-notifier。注意:您需要在 OpenWeatherMap 注册一个免费的 API 密钥。应用程序:用于将报告、发票或任何您想要的 PDF 合并到一个地方。这可以帮助您实时跟踪它。

2025-06-05 12:13:27 14

转载 使用这个新的 ECMAScript 运算符告别 Try/Catch!

如果出现问题,您将获得 [error, null],如果一切正常,您将获得 [null, result],而不是深度嵌套。= 运算符借鉴了 Go、Rust 和 Swift 等语言中先进的错误处理实践,这些语言以强大的错误管理而闻名。= 运算符可以使用 Symbol.result 处理嵌套对象,使复杂的错误场景更易于管理。概述:通过将错误放在 [错误,数据]?= 运算符提供了一种统一的错误处理方法,使您的代码在各种 API 中保持一致。问题:不同的 API 通常需要不同的错误处理技术,从而造成不一致。

2025-06-04 13:46:14 14

转载 跨过前端工程化建设的三座大山

比如 .vue 结尾的文件需要转换成 .js 结尾才能被浏览器识别,.less 结尾的文件需要转换成 .css 结尾的文件,.css 结尾的文件需要转换成 style 标签 ...启动 devServer 的时候,可以将打包构建的其他代码放入内存,将双向通信的代码片段注入模板文件,当启动模块页的服务时就能建立与 devServer 双向通信的桥梁。开启 devServer 去热更新,需要具备两种能力,一种是监控文件变化的能力,一种是通知页面可以去更新代码的能力。这里无论是哪种构建工具都可以实现这三个阶段,

2025-06-04 13:46:14 9

转载 Axios 请求传 ArrayBuffer 参数

类型的数据,可以通过设置请求头和配置适当的选项来确保数据以正确的格式发送。使用 Axios 发送请求,以下是一个例子,展示如何使用 Axios 发送一个包含。不同的服务器框架可能需要不同的配置或中间件来解析二进制请求体。数据时,你需要确保请求配置正确,以便 Axios 将响应数据解析为。,你可以根据数据的内容和格式进行处理。根据数据的具体格式和你的需求,选择合适的解析和处理方法。包含二进制数据(如图像或音频),你可以创建一个。首先,确保你的 Axios 请求配置包括。通常,当发送二进制数据时,需要设置。

2025-06-03 12:08:50 20

转载 如何 “正确” hook JS方法

以上就是关于如何正确 hook JS 方法的所有内容了,可能有些内容大家都没咋见过,不过高级一点的混淆代码中大量运用了这些日常开发中不怎么会用到的知识点,这些 JS 的“底层逻辑”还是建议大家掌握一下,对于以后扣代码或者搞懂混淆代码很有好处。对于实例方法,就不能直接覆盖原始方法了,在上面讲静态方法的时候也能看到,如果不实例化的话,根本看不到实例方法,重写也就无从谈起。在实际 hook 实例方法的时候,因为不同的实例调用的都是相同的实例方法,这个时候如何针对不同的实例进行操作呢?是属性,不是静态方法。

2025-06-03 12:08:50 28

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

​如何自动生成结构化的 Cursor AI 规则(.mdc 文件)。本指南将教你如何利用 AI 智能体和你已有的最佳实践文档,实现统一的代码规范执行。

2025-06-02 21:57:21 31

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 12

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 10

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 9

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 6

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 3

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 1

转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术

按照这些步骤操作,可以确保你的规则保持一致,并有效引导 AI 在项目中的行为。通过将 “知识整理”(步骤 2)与 “规则格式化”(步骤 3)分开处理,并使用专门的智能体来执行格式化任务,你可以确保整个 AI 辅助开发流程具备一致性和可维护性。这并不是一个独立的 “智能体”,而是一个标准的 Cursor 规则文件(.mdc),里面包含了详细的说明(也就是它的系统提示),用于指导新规则文件的格式和结构。现在,你将引导 “规则格式化代理”(来自步骤 1),根据你的最佳实践文档(来自步骤 2)生成。

2025-06-02 21:57:21 1

转载 不要再代码中滥用 useCallback 和useMemo

如果此时 handleSubmit 没有使用 useCallback 进行缓存, 那当 theme 更新之后,组件重新渲染,也就意味着函数重新执行,handleSubmit也就重新创建了,这会导致传递给子组件的props。,依赖频繁变化,就没有缓存的意义了,此时使用 useMemo 还带来了额外的开销,因为本身执行的时候也是需要开销的。首先这是一个 Hook ,所以要遵循Hook的规则,只能在顶层中使用,不能在循环或者条件语句中调用。是一个 React Hook,它在每次重新渲染的时候能够缓存计算的结果。

2025-05-29 09:06:35 23

转载 vite构建优化,速度提升了73% & rollup拆包8.4M降低至1000kb

问题三、rollupOptions.output.manualChunks 拆包不合理。json文件不参与构建,缩减构建时间,减少js文件体积。全局注册的组件不会被Tree Shaking.参考。其中①-⑫是其他场景下,需要引入的json文件。问题一、json静态资源使用import引入。,导致json文件被解析成js chunk.vendor.js拆分多个小文件。静态资源(json文件)提取至。全局组件注册,会导致全量构建。入口文件custom.js。插件分析,查看模块组成。其他组件按相同方式处理。

2025-05-29 09:06:35 23

空空如也

空空如也

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

TA关注的人

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