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

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

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

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

2020-08-24 08:32:50 1560

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

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

2020-08-23 14:24:28 520

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

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

2020-08-22 11:30:00 406

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

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

2020-08-21 08:36:14 1245

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

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

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

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

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

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

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

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

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

原创 javascript之原型链详解

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

2018-09-07 17:06:41 647

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

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

2018-09-06 18:08:48 1013

原创 LayoutParams基本使用

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

2018-08-05 23:17:31 9756

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

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

2018-07-29 15:56:07 1062

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

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

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

2018-07-24 10:22:23 5123

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

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

2017-06-10 21:14:34 20559 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 1316

转载 prompt 的参数调优入门指南 - 小白也能轻松掌握

本文将用最简单的语言,以AI生成网页为例,教你掌握AI参数调优的核心技巧,让你的AI助手变得更加聪明和贴心。,没有标准答案,只有更适合的配置。从一个简单的项目开始,应用本文的方法,相信你很快就能生成高质量的网页代码。Temperature高时,Top-p要适当降低,避免过度随机!就是你给这个助手的"工作指南",告诉它应该如何思考和回答问题。Token越多,API调用费用越高,要在质量和成本间平衡!想象一下,AI就像一个非常聪明但需要明确指导的助手。同样的需求,别人生成的就是比你的好?

2025-08-04 11:32:30 3

转载 通过代码看 React 的历史

他最初做了一个叫 “FaxJS” 的个人项目,后来改名为 “FBolt(Functional Bolt)”,再后来,它就成了 “React”。虽然大部分(大概 90%)广告相关的功能都可以用 Bolt 实现,但在项目中仍有一些情况,团队不得不脱离自己的框架,采用不太声明式的解决方案。多年来,我在使用 React 的过程中也一直有同样的疑问,直到某一天,突然恍然大悟。多年来聆听 React 核心团队的交流,再加上对这个工具演变过程的观察,终于让我彻底理解了它的设计逻辑。在 Web 的发展历程中由来已久。

2025-08-03 22:41:31 6

转载 我为什么在团队里,强制要求大家用pnpm而不是npm?

它的安装速度,尤其是在有缓存的情况下,或者在安装一个已经存在于全局仓库里的包时,几乎是“秒级”的。在一个团队里,工具的统一,是为了保证环境的一致性和协作的顺畅。因为大部分依赖都是通过“链接”的方式实现的,而不是“复制”,所以pnpm在安装依赖时,大大减少了磁盘I/O操作。:用npm的同事,可能会不小心写出依赖“幽灵依赖”的代码,而用pnpm的同事拉下来,代码直接就跑不起来了。所以,这个“强制”,不是为了搞独裁,而是为了从根本上提升我们整个团队的开发效率和项目的长期稳定性。,它在你的硬盘上也只占一份的空间。

2025-08-01 12:29:23 14

转载 从双端到一次搞定,一个老码农的真香体验

iOS那边出了新的SDK,Android这边又发布了新的API,为了保证应用的兼容性和用户体验,我们不得不花费大量的时间去学习新的东西。首先是FinClip 下面的IDE工具 FinClip Studio 接入了大模型,通过几行简短的自然语言就可以帮助我们生成小程序前端的UI界面,真是大大的提升了开发效率,有时候1天一个小程序的雏形就能完全搭建好了。如果你也像我一样,曾经被多端开发折磨得死去活来,那么不妨试试FinClip吧,相信我,用过之后,你一定会跟我一样,忍不住说一句:“FinClip,真香。

2025-07-31 11:55:58 10

转载 localStorage 你很好,我选 IndexedDB

如果你想了解如何一步步在项目中引入 IndexedDB 或封装 localForage,欢迎留言交流,我可以写一篇实战教程来补上这块拼图 👀。不用再手动序列化、反序列化。直接存对象,存 Blob,存 Buffer,存你想存的一切。下一次存储用户数据时,不妨尝试一下 IndexedDB 吧,它可能会让你彻底“改观”。如果你在做离线应用、缓存图片资源、预存图谱模型,这就是你最好的选择。localStorage,你很好,但我选 IndexedDB。简单的 API,直接调用就能存数据,写起来干净利落。

2025-07-30 15:50:20 7

转载 做 DOCX 预览?这个神库别错过!

Word 文档的格式复杂、内容丰富、排版细节繁多,想要还原得像 Office 一样,还真不是件容易的事。今天,我要安利两个宝藏级的开源库,它们几乎可以覆盖你所有的 Docx 预览场景 —— 不管你是要“原汁原味的展示”,还是“提取语义结构做内容编辑”,都能轻松搞定。如果你正在开发一个在线文档预览器,或者希望用户可以在 Web 页面中“像在 Word 里一样看文档”,那。是预览库,不如说它是一个“语义提取工具”。这两个库都是轻量纯前端实现,不依赖服务端转换,适合所有现代浏览器,能极大简化你的开发流程。

2025-07-29 15:27:09 27

原创 别再乱用 as 了,TypeScript 的 satisfies 更香!

今天就带大家认识一个更安全、更优雅的写法——satisfies 操作符,让你的类型检查更严谨,代码更健壮!还在用 as 盲目断言类型?它让你的类型检查更严格,推断更精准,代码更安全。在 TypeScript 项目里,你是不是经常下意识地用 as 或类型断言来“安抚”编译器?需要 TypeScript 4.9 及以上版本,升级你的依赖就能用上啦!多余属性不会报错:对象里多写了字段,编译器也不会提醒你。类型检查形同虚设:只要你断言,TS 就不再帮你兜底。as:你100%确定类型,TS 实在推断不出来时用。

2025-07-28 17:22:09 425

转载 2025 年现代 Node.js 开发模式

现代的 Node.js 更加拥抱 Web 标准,减少对外部依赖的需求,并带来了更直观的开发体验。通过采用这些现代化模式,你写下的代码将不仅更具现代风格,还更容易维护、性能更优,同时与更广泛的 JavaScript 生态系统保持同步。流(Streams)一直是 Node.js 最强大的特性之一,如今它们已经演变为更加符合 Web 标准的形态,并提供了更好的互操作性。这种写法摆脱了过去到处可见的 “立即执行的异步函数(IIFE)” 模式,让你的代码更加线性、逻辑更清晰,也更容易理解。

2025-07-27 21:01:23 30

原创 Node进阶,一定要学下这个10+万Star项目!

📌 GitHub 地址:https://github.com/goldbergyoni/nodebestpractices。一份涵盖架构、安全、性能、测试等 100+ 条 Node.js 最佳实践合集,且每条都讲清楚了背后的“为什么”。下面我们挑选三条“对性能提升立竿见影”的实践,看看怎么做才是专业的 Node.js 开发。是 CPU 密集型操作,那么整个事件循环就会卡住,其他请求也跟着“排队”,体验极差。代码更清爽,异常处理更优雅,维护成本也大大降低。这个项目不仅告诉你该怎么做,更重要的是,它告诉你。

2025-07-25 14:03:04 312

转载 Proxy 有哪些东西是无法拦截的?深入解释 Reflect 与陷阱盲区

是一把极其强大的API,允许你劫持对象的读取、赋值、删除、函数调用等等。保留了原始对象操作的行为语义,确保原型链正确、上下文正确(特别是 setter / getter 中的 this)。这是一个非常冷门的行为,通常只有你在 try-catch + sandbox 时才会踩到。要改变 instanceof 的行为,只能返回一个特殊的构造器对象。,甚至有些你以为能拦的操作,背后根本就没调用 proxy。除非你拦截的是一个函数调用的属性访问阶段,否则基本无解。是静态操作,不触发运行时 hook。

2025-07-24 11:58:30 18

原创 Node.js 架构讲解最通俗的一次

如果你已经读了很多篇博客,看遍了 不少视频教程,但 Node.js 对你来说仍像个黑盒子 —— 那你看这篇文章就对了。注意:这个队列不属于 libuv,它是 Node.js 自己的部分, 对于执行顺序有着决定性的影响。比如你关闭一个 socket 或文件流, 它的 'close' 回调会进入这个队列,在事件循环的。它的作用就是:把你写的 JS 代码转换为超级快的机器码,供计算机直接运行。操作系统会异步处理,Node 等待通知就好。搞懂这些,你不只是会写 Node.js,而是真正理解了它在做什么。

2025-07-23 12:14:21 843

原创 只用 JavaScript,我写了一个无需后端的网页数据爬取神器!

所以我动手用 JavaScript 写了一个 Chrome 插件,一键提取网页上的数据,清洗整理后直接导出成表格。如果你也想快速抓取网页数据,不妨试试 JavaScript + Chrome 扩展这个组合 —— 效率极高,体验极爽!它不需要部署,不需要服务器,完全运行在浏览器中,使用门槛极低。当然,为了安全和隐私,插件只在用户主动点击时运行,并且在。Chrome 插件的能力被很多人低估了,搭建门槛很低。我只想打开网页,点个按钮,立刻拿到结构化数据。虽然不是核心功能,但样式清爽,用户体验会更好。

2025-07-22 12:34:34 354

转载 一个非常有用的设计模式——有限状态机

大家有没有做过流程管理,比说做抢火车票抢红包,或者多弹窗这样的场景,如果用if else来管理,那么最后就是一团乱麻,而如果我们用有限状态机来管理就非常的简洁明了了。我们需要弄一个状态管理器,在管理器内部保存这当前状态,还有跳转到下一阶段的静态方法,当跳转时会执行前一个状态的onEnd,后一个状态的onEnter。:某些FSM在状态转换或进入某个状态时会产生相应的输出。例如,一个交通灯有“红灯”、“黄灯”和“绿灯”三种状态。:导致状态机从一个状态转换到另一个状态的。:从一个状态到另一个状态的。

2025-07-21 11:56:40 26

转载 Nuxt 4 正式发布!

Nuxt 4 是一次以稳定和开发体验为核心的进化,它没有一味追求“炫酷”的新特性,而是逐步打磨每一处细节,让开发者写得更安心、改得更省心、跑得更顺心。这是一个专注于稳定性和开发者体验的重大版本更新,在提升性能、代码结构、类型系统等方面做出了诸多优化。,将 app、server、shared、builder 等上下文分离,提高类型推断准确性。Nuxt 4 推出了一种新的默认项目结构,把你的应用代码集中到。✅ 如果你不想迁移,Nuxt 也会自动识别旧结构,保持兼容!运行你的测试、查看构建结果,根据 升级指南(

2025-07-20 22:47:05 186

转载 Tree Shaking 是如何工作的?带你读懂 Webpack 的源码逻辑

接下来,Webpack 会进行 删除未使用代码(Dead Code Elimination)的优化,这个过程在 Tree Shaking 的最后阶段,确保未被使用的代码从最终的打包结果中移除。具体来说,它会遍历项目中的所有模块,对每个模块进行分析,确定该模块导出了哪些变量(如函数、类、常量等),以及这些导出是通过什么方式实现的(如直接导出、重命名导出、星号导出等)。这个精确的导出使用分析是 webpack 实现高效树摇的关键环节,确保最终包中只包含实际使用的代码,显著优化应用性能和加载时间。

2025-07-20 22:47:05 32

转载 前端登录token到底应该存在哪?LocalStorage、SessionStorage还是Cookie?一篇说透!

攻击者通过某种方式(比如评论区)向你的网站注入了恶意的JavaScript脚本。,所以银行服务器会认为这个请求是你本人发起的,于是转账就成功了。只要你的网站存在XSS漏洞,存在里面的任何数据都能被轻易窃取。综合以上所有分析,我们终于可以给出当前公认的最佳、最安全的方案了。但这种方便的背后,隐藏着巨大的风险。允许在“顶级导航”(如。**:生命周期很短(如15分钟),用于访问受保护的API资源。一个错误的选择,可能会直接导致你的网站出现严重的安全漏洞。**安全** (防XSS+CSRF), **体验好**

2025-07-18 12:34:13 72

转载 作为前端Team Leader,我是如何做技术选型、项目排期和新人培养的?

硬要上React,那我得先掂量掂量,有没有时间搞培训,大家愿不愿意学,项目等不等得起。一个冷门的技术,可能文档都找不到几篇,遇到问题,谷歌都搜不到,那真是叫天天不应。但看的目的不是为了批评他,而是借着他的代码,告诉他我们团队的编码规范是什么样的,为什么要这么写。我刚工作时就遇到过这种,一个人对着一堆过期的文档,两眼一抹黑,连个问题都不知道该问谁,那种无助感现在还记得。以前自己写代码,好坏都是自己的事,代码烂了,加班补上就行。当老板找我谈话,说想让我带前端团队的时候,说实话,我第一反应是“完了”。

2025-07-17 11:50:17 28

转载 我在 microApp 和 wujie 中选择了 wujie:深度技术对比与选型思考

经过技术指标、性能数据和实际场景的全面对比,wujie 在沙箱安全性、通信效率、框架适配性等方面展现出明显优势。其创新的 WebComponents + iframe 混合架构,既保留了 iframe 的隔离优势,又通过 WebComponents 实现了良好的开发体验。对于需要长期迭代的复杂前端系统,wujie 提供了更面向未来的解决方案。近年来微前端架构逐渐成为大型前端工程化的主流解决方案,在众多微前端框架中,microApp 和 wujie 凭借其独特的设计理念脱颖而出。

2025-07-16 12:06:23 44

原创 踩坑无数后,我终于总结出这份最全的 Vue3 组件通信实战指南

本文将通过8个实战案例,带你彻底掌握Vue3组件通信的精髓,让你的代码更优雅、更易维护!Pinia是Vue3生态的官方状态管理库,比Vuex更简单、更type-safe。作用域插槽让子组件可以向父组件暴露数据,父组件决定如何渲染,实现真正的关注点分离。在实际开发中,往往需要多种方案组合使用,才能构建出既优雅又高效的Vue3应用。当你需要在组件树的多个层级间共享数据时,Provide/Inject是最优解。别急,这些问题,99%的Vue开发者都遇到过。有时候需要直接调用子组件的方法,模板引用是最直接的方式。

2025-07-15 11:55:17 637

原创 没想到!CSS 现在也能写 if / else 了

CSS 功能的不断增强,很多新特性(如 has()、subgrid 等)虽然强大,但并不是所有浏览器都已全面支持。从 Chrome 137 开始,CSS 引入了一个全新的函数 —— if(),让我们可以在样式里写 if / else 逻辑了!在日常开发中,我们经常需要根据不同条件切换样式,比如响应式布局、特性检测、主题切换等。这种大量的媒体查询分散在不同地方,维护起来比较麻烦,很多时候逻辑和样式分离, 阅读和修改也不直观。函数和 CSS 变量,我们可以只通过一个属性来控制全部状态样式 — 更优雅也更灵活。

2025-07-14 12:18:33 348

转载 前端开发的你,其实并没有真的掌握img标签!

访问控制主要是通过服务器端的 cookies 验证来实现的,crossorigin 属性是告诉浏览器如何发送请求,只是确保在网站中正确发送 cookies 的一个机制。当浏览器请求图片时,服务器返回的是图片的二进制数据(binary data) 并且这些二进制数据可能是各种格式,比如JPEG、PNG、WebP 等。解码是浏览器原生支持的,不同浏览器使用不同的图片解码引擎,现代浏览器都是支持多种图片格式的解码。:不带凭证,请求图片是不会发送任何凭证信息(cookie等),适用于公开的图片资源、

2025-07-13 22:25:48 60

原创 这是我告别 nvm 后,用过最省心的 Node.js 版本管理工具

nvm 本身是基于 Unix 系统开发的,虽然 Windows 也有 nvm-windows 版本,但实际上兼容性并不好,安装、切换版本经常会出问题。nvm 只管理 Node.js,不支持 npm、yarn、pnpm 等工具的版本管理,复杂项目环境下,工具链很容易混乱。在前端和全栈开发中,我们常常需要在多个项目之间来回切换,而每个项目所依赖的 Node.js 版本可能并不相同。如果你现在还在使用 nvm,或者每次切换项目都需要查版本、改配置,不妨试试 Volta,真正做到只需一次配置。

2025-07-11 11:50:19 323

转载 9个高级前端必会的性能优化API你都知道几个?

是浏览器提供的一个 API,用于异步观察一个元素(target element)与其祖先元素或顶级文档视口(viewport)之间的交集变化。简单来说,它可以监听某个元素是否进入或离开视口,以及可见部分的比例。:当元素进入视口时,触发 CSS 动画或 JavaScript 事件。隐藏不在视口中的元素,减少不必要的渲染,提高滚动性能。支持流式传输,减少等待时间,适用于大文件加载。,不会阻塞主线程,也不会影响动画和用户交互。:当图片或组件进入视口时才加载,提高性能。:监测滚动到底部,自动加载新内容。

2025-07-10 11:50:28 26

原创 面试官:为什么在 Vue3 中 ref 变量要用 .value?

这是个非常好的开始,既然你用过,我们不妨一起把这个问题拆开,一步步搞清楚它背后的原理。: 因为 Proxy 可以监听到更多类型的变化,比如新增属性、数组索引等等。: 而 Vue3 的响应式追踪,依赖收集,和视图更新,全部基于对这个。: 这个......就是 Vue3 的语法吧,我平时都是这么用的。繁琐,但当你理解了它的设计哲学,就会觉得这是个合理的权衡。,但这种语法是可选的,不是强制的。他愣了一下,脑袋快速思考,好像没有检索到更好的答案。Proxy 无法直接代理基本类型,必须包装成对象。

2025-07-09 11:59:31 818

空空如也

空空如也

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

TA关注的人

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