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

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

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

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

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

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

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

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

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

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

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

原创 回调地狱解决方案之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
34689
1

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

原创 解决Gradle:download特别慢或卡主不动的问题
解决Gradle:download特别慢或卡主不动的问题Gradle 在project创建的时候的时候会出现connect refused:connect或者卡在building gradle download https:等情况。 大多数的原因是因为我们Google对我们国内网络的限制: 解决办法:使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件修改项目根目录下的文件 build.gr
2017-06-10 21:14:34
20530
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
1308
原创 URL地址末尾加不加 “/“ 有什么区别
Google 等搜索引擎确实可能将不同的 URL 视为重复内容(duplicate content),但它们也提供了相应的工具和方法来规范化这些 URL。)通常会返回该目录下的默认文件(如 index.html),且相对路径会基于该目录进行解析。)可能被当作文件来解析,或者被重定向到带有斜杠的目录 URL,可能会导致相对路径解析错误。, 确保网站的所有页面都指向规范的 URL,避免因未做重定向而造成的索引重复问题。)看似一个小细节,但它会影响网页加载、路径解析、SEO 和 API 请求的行为。
2025-07-04 14:12:56
214
原创 Vue3 新特性:原来watch 也能“暂停”和“恢复”了!
是 Vue 响应式体系中的核心工具,很多人用了一两年,却不知道它在 Vue 3.5 中悄悄变得更强大了。或者 watch 的回调里手动清理异步任务,写起来很啰嗦。是监听复杂对象变化的唯一方式,但它往往性能开销较大。如果你还不知道这些新特性,那这篇文章就是为你准备的。:每次响应式值变化,自动调用上次的清理函数。带来的这些升级,不是“炫技”,而是源于对。掌握这些新特性,你的 Vue 应用会更。在 Vue 3.5 之前,要么持续监听,要么彻底停止。现在,Vue 3.5 给。大批量修改数据时统一处理。
2025-07-03 11:54:42
86
转载 【附源码】牺牲两天摸鱼时间,我做了款大屏
target=https%3A%2F%2Fptop.only.wip.la%3A443%2Fhttps%2Fsd-tourism-dashboard-open.vercel.app%2F "https://sd-tourism-dashboard-open.vercel.app/这个大屏虽然只有一个页面,但是做的时候,相关的图表配置调整还是挺多的。的地址,如果你没有挂梯子的话,会访问不了。是一个平面的地图,想要立体效果,可以通过堆叠地图,并且设置位移的方式实现。因为这个项目的地图,基本没有交互,就纯纯的数据展示。,找到数据可视化学院,在里面找到需要的行政区,把它的。
2025-07-02 12:05:21
9
转载 ECMAScript 2025 正式发布!这 6 个新特性值得你关注
本文将带你快速了解 ECMAScript 2025 中最值得关注的几个新特性,掌握这些功能,你的 JavaScript 技能将再次进阶!这为浏览器端模块生态注入了新的灵活性,未来也可能扩展到 CSS、WASM 等模块。: 并集(合并两个集合,不重复),可使用于:合并用户标签、兴趣、权限来源等。,用于导入非 JavaScript 类型的模块,第一批支持的是 JSON。等),就可能导致正则语法错误或匹配行为异常,甚至可能被恶意利用。:差集(返回只存在于当前集合、不在 other 中的元素)
2025-07-01 11:53:15
27
转载 像高手一样调试程序
当然,打印不是最强大的调试手段,也不是最复杂的工具,有时候它不够用 —— 这时候你可以升级到更强的调试器。在日常工作中,我们很容易停留在自己熟悉的那一套工具里,不去了解别的选择,不去查看更新日志,也不知道其他人都在用什么工具解决类似的问题。有不少人告诉我,他们的同事说 “打印是不好的做法”,但在我讲完之后,也有人跑来和我说 “太高兴有人告诉我,打印其实不是错的”。我认为调试是一种双重技能:一方面是前面讲到的思维方式和流程,另一方面就是强大的工具,只有两者结合,才能高效地发现并解决问题。
2025-06-30 11:50:29
9
转载 组件通讯要注意内存泄露
特别是在组件销毁时,如果没有移除监听器,组件可能无法被垃圾回收,从而导致内存泄露。事件总线是一种轻量级的发布-订阅模式,通过创建一个空的 Vue 实例作为事件中心,兄弟组件可以在事件中心上监听和触发事件。通过在组件销毁时移除事件监听器,可以有效地避免内存泄露问题。一个兄弟组件可以通过事件将数据发送到父组件,父组件再将数据传递给另一个兄弟组件。触发一个事件,将数据传递给父组件。在父组件中,监听该事件并接收数据。在父组件中,将接收到的数据通过。在另一个兄弟组件中,使用。在一个兄弟组件中,使用。
2025-06-29 21:51:17
9
转载 快速掌握 Docker:前端开发者也能轻松玩转容器化
简单讲,就是我们软件开发的时候需要依赖一些环境,比如前端需要 Node.js,后端可能需要 Java、Python 或数据库(如 MySQL、Redis)等。这些环境如果直接安装在本地,不仅配置繁琐,而且可能出现版本冲突,导致“在我电脑上没问题”的尴尬情况。你可以把它理解为“打包好的应用运行环境”,用完即扔,既干净又高效。然后我们可以在终端执行命令,启动一个容器并访问了,我们就可以访问 localhost 了。Docker 的出现目的就是为了解决这种配环境的问题,他就是一个。,拉取需要用的容器镜像名称。
2025-06-29 21:51:17
16
转载 面试官:Teleport 是怎么实现的?为啥它能把组件“传送”走?
虽然你看到的真实 DOM 被挂载到了别的地方,但在虚拟 DOM 中,它依旧留在原地。如何让组件的逻辑归属保持一致,同时 UI 渲染位置灵活可控,从而实现真正的样式隔离与结构解耦。面试官翘着二郎腿,掀了掀眼皮,语气轻飘飘地问我: “Vue3 的 Teleport 用过?Teleport 的核心机制:逻辑归属原地,DOM 传送目标地,响应式照常运作。将组件的渲染内容“传送”到 DOM 的其他位置,解决布局样式隔离问题。但 Vue 是如何实现的。,但它的 type 并不是普通组件,而是一个特殊实现对象 ——?
2025-06-27 12:01:50
7
原创 pnpm 正逐步走出差异化路线,难怪其月下载量已经逼近 1 亿!
随着前端项目日益庞大、模块拆分加剧,依赖管理已成为开发效率与构建稳定性的重要基础设施。而在众多包管理工具中,下分别存储依赖,虽然确保了隔离,但当多个项目使用同样的包时,会导致磁盘浪费和重复解压。接下来,我们将带你快速了解这些新特性,看看它们如何进一步提升项目管理体验。错误提示更人性化,会展示版本 diff 差异,方便调试。每种依赖组合会生成唯一的哈希目录,内含所有硬链接包。:只能使用 catalog 中的依赖,否则报错。缓存键已更新,旧缓存不再兼容,会重新生成;中集中管理版本号,避免各包间版本不一致。
2025-06-26 12:25:36
901
原创 AI 编程时代,我仍离不开的 VSCode 插件清单(2025 版)
当你在代码中犯错时,这个插件会在你出错的那一行直接显示错误信息,而不仅仅是底部的状态栏。比如有同事托管 AI 写完代码,没仔细检查,结果误改了别人负责的模块,事后还说“我没动过”。安装GitLens 插件之后在每行代码的末尾,GitLens 都会公开最后一次提交的作者、提交的时间以及其他详细的备注信息。但即便如此,有一些 VSCode 插件我依然每天在用,它们不是用来替代我写代码的,而是。如果你也是一位和 AI 并肩写代码的开发者,不妨试试这些插件,或许能看代码能更舒适。作用:自动补全文件路径。
2025-06-25 11:51:20
554
原创 说个多年老前端都不知道的标签正确玩法——q标签
为什么它一直活在 HTML 规范里,却像个「隐形人」一样没人提起?兼容性曾有历史包袱: 某些旧浏览器不会显示引号,引发过“信任危机”。别再埋没这些原生语义标签了,也许你忽视的,不只是。其实稍微修饰一下就可以焕然一新的。不仅不用手动写引号,还能根据语言环境智能区分单双引号。样式太朴素: 看起来和普通文本没区别,很容易被忽视。通过MDN 可以看到这个标签的兼容性已经很不错了。马上就有了辨识度,瞬间就有了中文引用的风格。,而是整个前端体系里写得更好的可能性。引用,已经不写 HTML 了。就没点优雅点的写法了吗?
2025-06-24 11:50:32
371
转载 NodeJS+LLM搭建一个属于自己的知识库
它还支持多种索引类型,包括基于LSH的索引、基于KD树的索引、基于哈希的索引等。看了很多知识库的文章,但是一直不了解知识库是如何使用NodeJS搭建的,索性就自己使用NodeJS搭建一个知识库。Qdrant是一个开源的向量数据库,它可以存储和检索大量的向量,并提供高效的搜索和聚类功能。由于各个模型之间需要的参数格式不一样,这边还需要两个对查询结果格式进行转换的函数。以上的服务端代码编写完成之后,我们还需要写一个对应的客户端代码才行,这里采用。这里就正式开始写代码了,首先开始写服务端的代码。
2025-06-21 22:27:24
44
转载 移动端布局避坑指南:从100vh到dvh,彻底解决动态视口适配难题
但在移动端,情况却大不相同。在移动互联网浪潮下,前端开发者常常遭遇「桌面完美,移动翻车」的尴尬困境:精心设计的页面在手机端频繁出现内容截断、布局抖动,甚至因浏览器工具栏的显隐引发「位移惨案」。因此,在实际开发中,建议进行充分的测试,并为不支持这些单位的浏览器提供合适的备用方案,以确保页面在各种移动设备上都能有良好的显示效果。幸运的是,随着 CSS 技术的发展,我们有了更好的解决方案。但是,在移动设备上的表现就差强人意了,移动设备的视口大小会受动态工具栏(例如地址栏和标签栏)存在与否的影响。
2025-06-20 12:07:26
85
原创 三行CSS代码把网页像素化
最近在浏览网页时,Element-plus 官网那极具 “fashion” 感的页面效果深深吸引了我。顶部导航栏区域在页面滚动时,经过该区域的内容瞬间变成 “像素画” 的神奇效果,简直让人眼前一亮。最终,人眼看到的是:部分图片清晰,部分被白色圆点+模糊叠加,就像一个“低分辨率”的像素画效果。创意和视觉效果的实现往往能带来意想不到的惊喜,有些效果很惊艳但是实现原理往往可能朴实无华!成功复刻了这一效果,下面就为大家详细剖析其中的奥秘。这个像素化效果的关键是:用一层带有模糊和网格背景的遮罩,覆盖在图片上方。
2025-06-19 14:44:03
141
原创 “复制党”完了!前端这6招让你的网站内容谁都复制不走!
不过对高级用户来说,只要获取到字体文件,分析映射关系后仍然可以还原。如果你使用过 WPS 在线文档、部分阅读器,就可能体验过这种“你看得到,但复制不到”的渲染方式。于是——只要你敢按 F12,我就敢把你页面直接关了。让咋们无法使用F12打开控制台,打开控制台后再打开链接,就会关闭网页,确实挺狠。你写的技术干货、原创文案、独家数据,别人一复制一粘贴直接换壳上线?你看到的不是 DOM,而是一张图,选区功能彻底失效。这种方案难度高,SEO 炸裂,但安全性拉满。,浏览器渲染后你看到的是正常的“你好”。
2025-06-18 12:29:31
348
原创 从卡顿到丝滑,AI 应用体验跃升的幕后推手是它!
同时,也有一些跨平台的推送服务,如个推、极光推送、友盟推送等,帮助开发者在不同平台上实现统一的推送功能。这时候,用户就只能干等着,体验很一般。SSE(Server-Sent Events)就是服务端推送的「轻骑兵」,基于 HTTP 协议,部署简单,特别适合。—你问一句,它现场推理、现场生成答案,然后再把结果打包成 JSON,通过 HTTP 协议丢给前端。:就是服务器发流的地址,写上它,浏览器立刻自动给你搭通道,一有消息就往下传。服务端推送,顾名思义,就是服务器主动把消息“推”给你,而不是你一直去问。
2025-06-17 11:50:29
679
转载 Vue3 + 一个冷门 API,实现了浏览器多屏投屏,效果太惊艳了!
看着这个图的第一时间我就去找产品掰扯,想让他把这个功能pass掉。我在想浏览器怎么访问到系统的参数。当我去翻阅文献的时候发现国外有大佬做出来了这个功能而且很全面。但是使用原生的html写的。我决定参考他的demo把他搬到大屏的项目里头。最近接了个大屏项目,产品想在不同的显示器上展示大屏项目不同的页面,做出来的效果图大概长这样。链接:https://juejin.cn/post/7490588889947865142。vue组件代码就很简单了就不展示了。在指定的显示器新开一个窗口。
2025-06-16 12:06:01
50
转载 出了兼容性问题,被领导叼了
该参数项的写法和.browserslistrc 配置是一样的,主要是为了定义目标浏览器。Babel 提供了对 TypeScript(通过 @babel/preset-typescript)和 React 的 JSX 语法(通过 @babel/preset-react)的解析与转换能力,无需依赖其他编译工具。项目上线后跑了应该有两三个月了,接到生产报事,页面进不去了,用户设备是iPhone8 iOS13.1,用户很气愤,领导也很不乐意,我也很气愤,刚来这项目组就被报事,艹太。研究以前的代码,加配置呗。
2025-06-14 20:17:56
15
转载 Set集合新特性,快速实现一个商品SKU(单品)规格选择器
利用集合我们可以不用关注已选中的规格中是否具有相同的规格属性、选择规格的顺序等不确定性,可以很大程度上为我们省去一大部分的计算工作。上图中主要描绘了单个属性是否可选的判断流程,关键在于把属性自身和当前已选中的属性组成一个新集合,然后遍历单品清单,新集合逐个和单品集合进行取交集,如果存在一个交集长度和新集合。实例参数,并返回一个包含此集合和给定集合中元素的新集合,也就是返回两个集合的交集。,则单品中存在该属性与已选中属性组合的单品,即该属性可选,反之则不可选。完全相交,即该属性是可选的,反之则不可选。
2025-06-13 12:37:49
20
原创 TS进阶!深入探索 TypeScript 工具类型:内置神器与高阶扩展
TypeScript 的类型系统是其最强大的特性之一,它提供了丰富的内置工具类型(Utility Types),让我们能够以声明式的方式操作和转换类型。本文将带您了解 TypeScript 常用的内置工具类型,并基于它们构建强大的高阶TS类型扩展。TypeScript 的工具类型系统就像是一个强大类型转换工厂,内置工具类型提供基础能力,而基于它们实现的高阶扩展则可以用更优雅、更安全的方式构建复杂系统。- 从类型T中排除可赋值给类型U的类型。- 从类型T中提取可赋值给类型U的类型。
2025-06-12 12:26:34
353
转载 你以为的 Tailwind 并不高效,看看这些使用误区
Tailwind 写得越多,越觉得混乱”“组件样式重复一堆”“设计师完全看不懂这坨 className”…“blue-500” 具体代表什么品牌色?Tailwind CSS 被誉为“实用优先的 CSS 框架”,然而在实际项目中,对 UnoCSS 完全不了解(其实比 Tailwind 更自由,兼容性好)Tailwind 并不是魔法,它只是一个极致实用主义的 CSS 工具包。🎨 误区三:直接使用 Tailwind 默认色板,导致主题难以统一。✅ 正确的 Tailwind 使用思维:构建语义原子设计系统。
2025-06-11 12:15:08
34
转载 做个大屏既要不留白又要不变形还要... 我怒斥领导,大屏适配就这四种模式!
大屏适配是一个复杂的问题,不同的项目有不同的需求。在实际开发中,我们需要根据项目的具体需求和用户体验来权衡,选择最合适的适配方案。今天,我们就来聊聊大屏适配的四种常见模式,以及如何根据实际需求选择合适的方案。如果内容的宽高比与视口不一致,会在视口内出现空白区域(黑边)。是一个视口自适应的 JavaScript 插件,它支持多种适配模式,能够快速实现大屏自适应效果。:内容不会被拉伸变形,当内容超出视口时会添加滚动条。:内容不会被拉伸变形,当内容超出视口时会隐藏超出部分。:内容会被拉伸变形,以完全填充视口框。
2025-06-10 12:18:03
30
转载 使用 Puppeteer 实现文件下载
所以需要一个能够运行 Puppeteer 的 Docker 镜像,虽然官方文档里面提供了在 Docker 里面运行的一些配置,但当初踩了很多坑。利用 Puppeteer 提供的截图功能,在报错的时候截一张图,把图片一起贴到告警邮件里面。去年有过这么一个需求,我们需要到某合作方网站(某国银行)下载文件,他们只提供了帐号密码,没有提供下载的接口,需要我们自己去分析接口来调用。虽然我们已经发送了告警邮件,但还是无法知道问题出在了哪一步,比如网站可能刚好半夜维护了,或者网站改版了,对这个脚本都是一个致命的打击。
2025-06-09 12:02:04
39
转载 Cursor 1.0 重磅发来袭(毛骨悚然,开始学习你如何编码)
通过 BugBot 的智能代码审查、Background Agent 的异步任务处理,以及 Jupyter 的原生支持,Cursor 正在重新定义开发者的工作流程。如果您是 MCP 开发者,可以通过在文档和 README 中添加"添加到 Cursor"按钮,轻松让您的服务器对开发者可用。现在您可以在 Cursor 中一键设置 MCP 服务器,结合 OAuth 支持,您可以轻松认证支持该功能的服务器。通过新的仪表板,您可以查看个人或团队的使用分析,更新显示名称,并按工具或模型查看详细统计信息。
2025-06-09 12:02:04
44
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人