- 博客(2933)
- 收藏
- 关注

转载 前端关于单点登录的知识
作者:An_an16347原文:https://juejin.im/post/6844903664264413198什么是单点登录单点登录(Single Sign On),简称为 SSO...
2020-08-24 08:32:50
1534

转载 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__
作者:蒋鹏飞链接:https://juejin.im/post/5e50e5b16fb9a07c9a1959af这篇文章主要讲一下JS中面向对象以及 __proto__,ptototyp...
2020-08-23 14:24:28
509

转载 前端模块化:CommonJS,AMD,CMD,ES6 学习
作者 | subwaydown地址 |https://juejin.im/post/6844903576309858318模块化的开发方式可以提高代码复用率,方便进行代码的管理。通常一...
2020-08-22 11:30:00
396

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

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

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

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

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

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

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

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

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

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

原创 解决Gradle:download特别慢或卡主不动的问题
解决Gradle:download特别慢或卡主不动的问题Gradle 在project创建的时候的时候会出现connect refused:connect或者卡在building gradle download https:等情况。 大多数的原因是因为我们Google对我们国内网络的限制: 解决办法:使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件修改项目根目录下的文件 build.gr
2017-06-10 21:14:34
20517
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
1303
转载 [特殊字符] 如何让 Cursor AI Agent始终遵守项目规范:使用自动规则生成技术
如何自动生成结构化的 Cursor AI 规则(.mdc 文件)。本指南将教你如何利用 AI 智能体和你已有的最佳实践文档,实现统一的代码规范执行。
2025-06-02 21:57:21
9
转载 不要再代码中滥用 useCallback 和useMemo
如果此时 handleSubmit 没有使用 useCallback 进行缓存, 那当 theme 更新之后,组件重新渲染,也就意味着函数重新执行,handleSubmit也就重新创建了,这会导致传递给子组件的props。,依赖频繁变化,就没有缓存的意义了,此时使用 useMemo 还带来了额外的开销,因为本身执行的时候也是需要开销的。首先这是一个 Hook ,所以要遵循Hook的规则,只能在顶层中使用,不能在循环或者条件语句中调用。是一个 React Hook,它在每次重新渲染的时候能够缓存计算的结果。
2025-05-29 09:06:35
8
转载 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
14
转载 面试官:前端批量请求失败 Toast 重复弹窗怎么解决?
"放弃第三方toast库的自动去重功能,选择自研方案以保持轻量(包体积减少30KB)"✅ 高情商表达:"通过协商制定重试策略+服务降级方案,建立前后端错误处理SOP""弹窗触发率降低98%,错误分类准确率提升70%,该方案被复用到订单中心模块""输出《前端错误处理规范》,推动团队建立统一拦截器,减少重复开发量""在电商结算页的批量请求场景中,5个接口并发请求面临网络波动风险""弹窗频率从3次/秒降为0.1次/秒,错误日志上报量减少85%""需要保证多个接口失败时,用户不被重复弹窗干扰"
2025-05-28 12:20:36
5
转载 前端也需要了解的 MCP 知识
随着越来越多的公司在招聘前端的时候,加入AI相关的技能要求,建议大家还是随时关注AI领域的最新技术发展,虽说现阶段AI还不会替换掉我们,但AI辅助编码基本已经正在成为各个公司的主流方向,对AI了解的越多,越能提高我们在新的AI时代的竞争力。就像上边的那张图片 MCP 提供一种标准的接入协议,只要是按照 MCP 开发的服务端就可以在 MCP 客户端中接入(这他么不是废话吗!这里实现两个简单的 MCP 服务一个时间时间工具 和 简单的 GitHub 搜索,把官网 MCP 服务端的两种写法都实践一些。
2025-05-27 09:01:50
23
转载 LLM与外部世界的交互能力
OpenAI的模型经过训练,可以根据用户的提示检测需不需要调用用户提供的函数,并且用一个很规范的结构返回,而不是直接返回常规的文本。但是,LLM是基于已有的数据进行训练的,所以LLM的知识仅限于训练数据的截止日期,无法获取真实世界最新的数据和信息,也不能对外界的进行任何的操作。标准消息与任务结构 (JSON-RPC 2.0) :所有通信基于 JSON-RPC 2.0,定义了 Task (核心单元)、Message (交互)、Part (内容单元)、Artifact (产物) 等标准结构。
2025-05-27 09:01:50
11
转载 前端 button 组件之按钮式进度条
在一些前端项目中,它们会涉及文件的上传 / 下载 功能,当文件在进行上传 / 下载时,我们该怎么更好的向用户进行进度反馈呢?,分别是进度条元素,图标元素,文本元素,我们将按钮设置为相对定位,将进度条元素设置为绝对定位,利用。到了这里,我们已经完成了进度条效果,但对比效果图还是差了那么一点点,当进度条到。通过对比上面三个图标元素,我们发现它们都有共同的类名为fa,而不同的是后面。很快,我们按钮的基本样式已经写出来了,接下来我们先实现进度条效果,在。元素添加点击事件,当按钮被点击时我们将按钮的。
2025-05-26 19:34:24
8
转载 你还不知道的大文件上传
上面说的这些功能,它都实现了,不管你用 vue2、vue3、react,还是 jquery 原生 js 开发项目,都能直接用,真正做到开箱即用。今天就给大伙唠唠前端大文件上传,讲讲它的原理、能解决啥问题、有哪些关键功能,再给大家推荐一个超实用的大文件上传库,让大文件上传不再是难题。简单来说,大文件上传就是把个头很大的文件,从咱们的客户端,像浏览器啥的,传到服务器上。文件上传完了,前端算一下文件的哈希值,比如 MD5 或者 SHA-256,再和服务器那边校验一下,保证文件没出问题。:网络这东西,时好时坏。
2025-05-26 10:27:05
10
转载 JavaScript 的新超能力:显式资源管理
JavaScript 新引擎 V8 引入了名为 Explicit Resource Management 的特性,该特性实现了对资源生命周期的显式管理,这有助于开发者更好地管理资源如文件句、网络连接等,并提高了代码的鲁棒性、性能与可维护性。它们可以让多个资源组成一个 “清理栈”,在栈被释放时,这些资源会以相反的顺序被释放,确保资源间依赖的正确处理。一个新的错误类型 SuppressedError,用于处理资源释放过程中发生错误的情况,同时保留原始错误信息和释放时产生的错误。然而在处理异常时,若忘记调用。
2025-05-25 21:58:57
12
转载 原子化的未来?了解一下全面进化的CSS attr函数
嗯...等到兼容性没有问题后,现在的原子化框架都得革新了 ,只需要极少部分原子CSS即可适配大量的样式,而不是这样生成大量用到的样式。最后,如果觉得还不错,对你有帮助的话,欢迎。最后就是回退值,非常类CSS变量,当属性不存在时(注意不能是空),采用回退值,比如。但是,有些值其实是不带单位的,比如颜色,并没有什么后缀单位,比如。不过,之前仅仅支持字符串形式,对于数字、颜色等都无法识别,例如。,支持颜色,也支持渐变,还支持图像,这里其实也能定义多种类型。其实相比之前的规则,多了两个可选参数,一个是。
2025-05-25 21:58:57
5
转载 Generative、Agentic、Agents:红烧肉教我区分三类AI的能力边界
🔍 当你理解生成式AI(Generative AI)、代理式AI(Agentic AI)与AI智能体(AI Agents)的区别之后,你才能更聪明地使用它们——比如“让AI帮我做一顿饭”,背后其实就是一个完整的智能协作流程。这一连串行云流水的配合,正是三种AI角色——生成式AI(Generative AI)、代理式AI(Agentic AI)与AI智能体(AI Agents)——各展所长的协作成果。它像一位“烹饪项目经理”,不仅理解目标,还会主动规划步骤,预判可能出现的问题,并给出优化策略。
2025-05-23 09:01:36
20
转载 2025年了!前端项目中代码格式还没统一?
在项目开发过程中代码统一是至关重要的,不然每次接手其他人的代码,第一眼过去就是 shit code ,不得不在动手修改前先格式化代码;试想一下,你从代码仓库中拉取代码在 vscode 中保存一下,结果全是修改,你只是保存了一下并没有修改,而后续你的修改也埋在当中,于是不得不先提交格式化修改....反复下去就是 shit code。是一个流行的代码格式化工具,旨在通过自动应用一致的代码风格来提高代码可读性和开发效率。对于一定规模的项目,毫无疑问是多人开发的,如果项目中的代码风格不统一,非常影响心情。
2025-05-23 09:01:36
21
转载 ESLint v9.26.0 发布,支持 MCP 了!
这样,像 GitHub Copilot、Cursor 这样的智能助手可以直接运行 ESLint,自动分析和修复代码。现在,AI模型和智能编程助手可以直接调用 ESLint,帮助开发者更快发现和修复代码问题。以前,AI 工具想用 ESLint,需要复杂的集成。现在有了 MCP,AI 只需一个接口就能用 ESLint。这样,开发者在写代码时,AI 可以实时给出更准确的代码建议。打开 Cursor 编辑器,进入 MCP 设置页面,确认 "Available Tools" 中已出现 ESLint。
2025-05-22 08:50:02
50
转载 Vite打包优化实践:从分包到性能提升
随着前端应用功能的增加,项目的打包体积也会不断膨胀,影响加载速度和用户体验。本文介绍了几种常见的打包优化策略,通过Vite和相关插件,帮助减少项目体积、提升性能,优化加载速度。,只在对应功能模块中使用,可以单独打包出来,用户使用对应功能,才会下载对应js脚本。属性,阀值设置为 20 KB,模块大小,大于20kb的才会单独打包成chunk。插件将外部依赖映射为全局变量,避免将其打包进最终文件,减小文件体积。插件,是一个可视化工具,以图表的形式,展示打包结果的模块构成与体积分布。
2025-05-22 08:50:02
42
转载 撸一个小程序运行容器
到这里我们已经可以转换好了每个页面对应的css,js和jsx,但wxml转换后的代码还需要被React包裹成组件才能执行,包裹一下就能得到完整的jsx文件代码。叠甲:本文实现思路参考smallapp,在其基础上解决了一些bug和删减,能跑起一个demo,主要讲解实现思路,中间还有很多可以优化和拓展的东西就不展开了。),每个APP的小程序都有自己的“语法”,虽然有细微的差别但大差不差,再叠:微信有自己的WMPF,它更偏向应用型,再拆一层就是我们要做的东西。
2025-05-21 12:31:15
15
转载 浏览器如何确定最终的CSS属性值?
理解这一点非常重要‼️。,这里就能够看到元素的所有CSS样式,尽管你什么样式也没写,它们也是有默认值的。如果能够正确回答出,并知道其中的原理,OK那么这篇文章要讲的内容你都掌握了,如果不能,那么这篇文章需要好好阅读并理解一番。想了想CSS值好像也只能从这三个地方来获取,再加上一个比较权重,我们是不是就可以确定一个CSS属性的值了?标签我们既没有声明他的文字颜色,用户代理样式表同样也没声明文字颜色,那么它的红色是从哪来的呢?,用户代理样式表也同样没有声明,它的父级元素同样没有声明,这也就说明对于。
2025-05-20 08:53:00
17
转载 简单盘点下前端日志采集的几种方式
对象,把要上报的数据编码到请求 URL 的 query 参数中,然后加载一个 1x1 的透明 GIF 图片(当然不需要真的返回一张图,后端 204 也行),重点是通过src请求资源的同时,让服务端记录.gif后的数据。前端日志采集,说简单也简单,说复杂也复杂,取决于业务想要什么粒度的数据,以及开发者能接受多少侵入性、延迟和兼容性问题。专门为这种场景设计的 API,可以在页面卸载(比如跳转、关闭)时,异步且可靠地把数据发送到服务器,不阻塞页面卸载流程。兜底,再加一些重试机制,做到不丢、不卡、可靠。
2025-05-20 08:53:00
22
转载 Mobile Bridge:让 WebView 拥有原生体验
Mobile Bridge 彻底改变了我们对 Web 与移动集成方式的看法 —— 它让我们可以拥有 Web 开发的灵活性与速度,同时为用户提供接近原生的流畅体验。在这篇文章中,我们会分享我们是如何解决传统 WebView 在性能、外观和集成方面的主要问题,以及 Mobile Bridge 如何成为我们移动开发策略中的关键工具,甚至帮助我们加速向 React Native 的迁移。Web 页面中的弹窗通常是覆盖在当前内容之上的,而在移动应用中,弹窗通常作为独立的屏幕出现,并伴随原生的过渡动画。
2025-05-19 12:08:01
43
转载 Cursor 内部工作原理
Cursor 会将你的问题转为一个向量,然后在向量数据库中查找最相近的片段,可能包括多个文件中的函数调用、定义、注释等。即便你配置了自己的 OpenAI API 密钥,请求仍会先经过 Cursor 的后端,这样系统才能添加系统指令、代码上下文以及专属格式,确保模型理解你的需求。介绍了 Cursor,一个结合了 AI 技术的代码编辑器,它通过深度学习和语义索引的方式,提升了开发者的工作效率。Cursor 通过与 VS Code 相似的界面和功能,以及自己的 AI 特性,实现了代码的智能化编辑和错误检查。
2025-05-18 21:30:32
63
转载 2025年了,npm 与 pnpm我们该如何选择
在前端开发的工具链中,包管理器是极为关键的一环,它就像一位高效的管家,帮助开发者管理项目中的各种依赖包。以一个包含 10 个项目的工作区为例,每个项目平均依赖 100 个包,使用 npm 时,node_modules目录总共可能占用 5GB 左右的空间,而使用 pnpm,这个数字可能会降至 1GB 以下,为开发者节省了大量宝贵的磁盘资源。pnpm 自称是 “高性能的 npm”,它通过创新的依赖存储和链接机制,实现了更快的安装速度和更少的磁盘占用,在中大型项目中优势明显,受到越来越多开发者的青睐。
2025-05-15 09:06:59
59
转载 开发神器 Cursor 最全配置指南:从入门到高效工作流!建议收藏
Include project structure:启用后会将当前项目的目录结构发送给 Cursor Agent,有助于它理解项目的整体架构,从而提供更上下文相关的建议。通过 MCP,你可以将 Cursor 与外部工具(如 Notion、Confluence、Jira 等)集成,扩展 AI 的上下文来源,提升其在特定领域的表现。启用如 GitLens 这类 Git 工具插件,可在代码中直接查看提交记录、修改历史和协作痕迹,有助于团队成员之间快速定位改动来源、追溯上下文,提升协作效率。
2025-05-15 09:06:59
749
转载 Node基础模块复盘,聊聊 zlib 压缩
接下来,就是实践的阶段了,虽然工作中没有使用Node.js开发的场景,但是自己可以创造项目,正好我有一个现成的小程序,可以开发一套文章管理后台系统。在过去一个月的学习中,虽然都是碎片化的学习,但是随着技术的积累,形成一套属于自己的学习体系,可以帮助更快更好的掌握新技术。我再官网给出的示例的基础上,将http的响应内容生成不同的文件,可以看出压缩过和未经过压缩的文件的文件大小是有区别的。对http请求和响应的压缩,我还有待在实际应用场景中研究和实践,单纯实现官网的例子,我感觉自己没有完全掌握。
2025-05-14 09:19:27
19
转载 干货 | 携程机票前端Web流式通信SSE全链路应用实践
仅仅只是简单接入SSE是远远不够的,离不开全链路(SSE技术选型,多层网络架构的适配,服务间的流式通信等等)的支持,所以最终决定联合携程框架、SRE、机票前后端团队共同来实现对SSE全链路的适配,真正意义上实现全公司通用的普适方案。关于SSE原生流解析 与 fes流解析是不同语言实现的这一点,我们也思考了语言差异对性能的影响,所以对响应数据的解析耗时做了实验,在相同机器和网络环境下,对比了原生 SSE 和 fes 处理数据流的耗时,实验结论是两者在耗时上没有明显差异(毫秒级)。
2025-05-14 09:19:27
25
转载 如何流畅地在浏览器中渲染100万个元素?深入浏览器底层渲染原理图文分享
若你能够理解上图所示的运行过程,那么你就了解了事件循环的大致流程,但这时又出现一个问题:已知我们可以通过其他线程执行异步任务,然后再通过回调函数推回任务队列,但是试想一个情况,我现在有很多由不同线程返回的回调函数在任务队列等待执行,但此时我点击了页面的一个按钮触发了回调函数,推入到任务队列中,在用户视角,为了即时响应用户操作我作为主线程是不是应该尽量马上执行这个回调函数?但前面还有这么多回调任务没执行,岂不是还要排队慢慢等?,如果在渲染过程中 JS 删除或增加了某个元素,那执行了一半的渲染线程应该怎么做?
2025-05-13 10:12:55
26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人