开源软件(OSS)彻底改变了当今软件开发的方式。在数百万个开源GitHub项目中,要找到最适合需求的开源项目可能会让人不知所措。今天给大家列出2023年增长最快的前10个开源GitHub仓库。通过这些增长最快的开源项目,也可以从整体上了解一下目前技术的整体动向。1、PyGWalker:Jupyter Notebook中开源的Tableau替代品 PyGWalker是一个Python库,可以快速创建
前言去年年底,我写了一篇《如何做好一款管理后台框架》的文章,这是我对开发 Fantastic-admin 这款基于 Vue 的中后台管理系统框架两年多时间的一个思考与总结。很意外这么一篇标题平平无奇的文章能收获 30k 的浏览以及 600 多个收藏,似乎大家对这种非干货的文章也挺感兴趣。于是在这个三年的时间点上(没错,也就是1100天),我打算继续出来和大家唠唠,这一年我又做了些什么事,或者说,如
前言最近,我们部门在开发一个组件库时,我注意到一些团队成员对使用TypeScript表示出了抵触情绪,他们常常抱怨说:“TypeScript太麻烦了,我们不想用!”起初,我对此感到困惑:TypeScript真的有那么麻烦吗?然而,当我抽时间审查队伍的代码时,我终于发现了问题所在。在这篇文章中,我想和大家分享我的一些发现和解决方案。一、类型复用不足在代码审查过程中,我发现了大量的重复类型定义,这显著
前言最近有接到一个需求,要求前端支持上传制定后缀文件,且支持页面预览,上传简单,那么预览该怎么实现呢,尤其是不同类型的文件预览方案,那么下面就我这个需求的实现,分不同情况来讲解一下?具体的预览需求: 预览需要支持的文件类型有: png、jpg、jpeg、docx、xlsx、pptx、pdf、md、txt、audio、video,另外对于不同文档还需要有的功能。例如:pdf&
这篇文章,我们来聊聊 Java 语法糖。什么是语法糖?语法糖(Syntactic Sugar)是编程语言中的一种设计概念,它指的是在语法层面上对某些操作提供更简洁、更易读的表示方式。这种表示方式并不会新增语言的功能,而只是使代码更简洁、更直观,便于开发者理解和维护。语法糖的作用:提高代码可读性:语法糖可以使代码更加贴近自然语言或开发者的思维方式,从而更容易理解。减少样板代码:语法糖可以减少重复的样
前端有很多小而美的库,接入成本很低又能满足日常开发需求,同时无论是 npm 方式引入还是直接复制到本地使用都可以。2024 年推荐以下小而美的库。radash实用的工具库,相比与 lodash,更加面向现代,提供更多新功能(tryit,retry 等函数),源码可读性高,如果不想安装它,大部分函数可以直接复制到本地使用。use-debounceReact Hook Debouce 库,让你不再为使
需求背景最近项目上接到一个新的需求:实现一个在浏览器端通过连接蓝牙打印机打印文件的功能!以下是关于这个需求的详细描述:支持主流浏览器:如 Chrome、Firefox、Safari 等以及不同操作系统(如 Windows、macOS、Linux 等)。蓝牙连接:用户能够通过浏览器自动搜索并连接到附近的蓝牙打印机。文件打印:用户可以选择本地文件(如 PDF、Word、图片等格式)并通过蓝牙打印机进行
背景前两天分享了一篇自己的个人经历,没想到引来了那么多人共鸣,很多人留下了评论,大部分评论我都认真看了,并且也回复了,有的评论建议真的很棒,对我的帮助很大,很感谢。今天给评论给整理了一下,再加上自己有一些新的感悟,给大家分享分享,给迷茫的朋友一点建议。有很多东西想说,但是表达能力有限,只能写出一点。一个30岁老前端的人生经历(学习+工作+婚姻+孩子),给迷茫的朋友一点激励。前端是不是真的不行了有些
面试官:看你简历上做过图片或文件批量下载,那么假如我一次性下载几十个,如何去控制并发请求的? 让我想想,额~, 选中ID,循环请求?,八嘎!肯定不是那么沙雕的做法,这样做服务器直接崩溃啦!突然灵光一现,请求池!!! 我:利用Promise模拟任务队列,从而实现请求池效果。 面试官:大佬!废话不多说,正文开始:众所周知,浏览器发起的请求最大并发数量一般都是6~8个,这是因为浏览器会限制同一域名下的并
前几天咱们分享了 Vue 3.5 新特性 其中 useTemplateRef 这个 API 被很多同学所关注。那么这个 API 在源码中究竟是怎么实现的呢?今天咱们就来看一下!useTemplateRef 的作用useTemplateRef 是用来专门获取 dom 或者 组件示例 的。在之前,如果我们想要获取 dom ,那么需要这么做:先为 dom 指定 ref 属性,并且给定一个 value 值
这个问题是我在知乎上看到的,答案并不是一边倒,还是存在争议性的。其中,一些持反方观点同学的理由如下:(1)从硬件成本和维护成本上看,反而应该多个微服务尽可能地共用中间件和数据库。(2)微服务的独立数据库是指逻辑独立,而不是物理独立,在物理层面上是可以共用数据库的。btw:有点儿像《非诚勿扰》中葛优对舒淇说的话:“那你能允许我心在你这,身体上开点儿小差吗”?(3)你把数据库也看做一个微服务就好理解了
前言最近都在准备面试,好久没有写文章总结知识点了,这个点也是在面试中常见的问题:你了解Vue/React的hooks么? 这个时候我们可不能蒙啊,应该很有底气的和面试官说,hooks?那不是很简单嘛(可千万别乱说哦,被拷打了别来找我)。所以今天我们来聊聊hooks是什么东西吧,以及我们应该如何去实现一个复杂的hooks封装。何为hooks ?首先,在React中,我们一般把useXXX的API看成
引言当我们使用JavaScript进行编程时,经常会遇到不同类型数据之间的转换问题。在本文中,我们将讨论基本数据类型之间的转换,以及对象转换为原始类型的过程。基本数据类型之间的转换1. 转布尔在JavaScript中,可以使用逻辑非操作符(!)来将其他数据类型转换为布尔类型。值得注意的是,在JavaScript中,只有以下六个假值会被转换为false:false、null、undefined、0、
拷贝分为深拷贝(deep copy)和浅拷贝(shallow copy),这两种都为编程中常见的概念,特别是在处理数据结构和对象时很重要,本文将阐述这两者之间的区别,让你对这种初步认识起来像是复制粘贴似的玩意有更深的认知。深拷贝与浅拷贝首先需要知道,拷贝(copy) 这一概念通常只针对引用类型,是指将一个对象的值复制(或引用)到另一个对象中的操作,按修改原对象的值是否会影响到新对象分为浅拷贝和深拷
前言上次我们聊了在浏览器地址栏里输入URL后会有两个步骤,一个是请求资源的过程,一个是拿到请求资源后浏览器渲染的过程,上篇文章我们已经聊过了后半段过程,这篇文章我们把前半段也补上。正文当我们在浏览器输入www.baidu.com时,浏览器请求资源的过程主要分为4步。首先是域名解析得到服务器IP地址的过程,浏览器会先在本地域名服务器里查找缓存是否有服务器的IP地址,没有则到其他域名服务器里找可能是根
前言前端路由的作用就是将单页应用的状态处理成多页路由的样子,react 和 vue 的路由是一样的,一个地址对应一个组件,下面看看 react-router 的用法安装在 vue 中想要使用 router 需要进行安装,react 一样也需要安装目前 react-router 全称为 react-router-dom ,当前最新版是 6安装指令如下npm i react-router-dom@6L
常见的块级元素有:<div>:通用的块级容器。<h1> - <h6>:标题元素,从大到小表示不同级别的标题。<p>:段落元素。<ul>(无序列表)和 <ol>(有序列表)。<li>:列表项。<blockquote>:块引用。<form>:表单。<heade
前言虽然Vue3出来很久并且非常成熟了,但市面上的Vue项目中Vue2依然还是占半壁江山的。小弟当年刚入行时接触就是Vue2项目,后来Vue3流行之后慢慢开始在Vue3和Vue2项目中反复穿插。因此想通过整合最简单易懂的事例全面总结一下Vue2的传参方式。先直入主题列出有哪些传参方式,下面再通过事例一一讲解。props(父传子)$emit与v-on (子传父)EventBus (兄弟传参).syn
React Hooks 的心智负担在 React 中,状态管理一直是开发者关注的重点。React 的 useState 和 useEffect 虽然灵活,但当组件复杂度增加时,这种灵活性往往会变成负担。最常见的,如依赖关系处理不当会导致 useEffect 中的副作用反复执行或者未按照预期执行,甚至引发内存泄漏。因为 useEf
不管是Vue.js源码,还是UI组件库Element-plus,只要有多人协同开发,代码规范上多多少少都会有一些"百花齐放"。即使像Vue.js源码,不同开发者在function、enum、variable命名上也会附带个人风格。Vue.js部分枚举定义, 三个大牛,三种不同的风格。// Type结尾 enum TargetType { INVALID = 0, COMMON = 1,
引言在 JavaScript 中,类型转换是一个关键的概念,它影响着代码的行为和结果。理解如何在不同上下文中进行显式和隐式的类型转换不仅可以帮助你编写更可靠的代码,还能在面试中展示你的深入理解。在这篇文章中,我们将详细探讨 JavaScript 中的类型转换规则,包括显式类型转换、对象到原始值的转换,以及运算符中的类型转换。js中的类型转换机制是什么?js中有七种原始数据类型:Number、Str
在 JS 中存在着原始类型和引用类型,通常在开发过程中都会有类型转换这样一个操作,当我们人为地进行类型转换时,称为显式类型转换,另外是 v8 引擎在执行某些操作时会自动发生类型转换,这种我们称之为隐式类型转换。类型转换我们先来看下面一段代码;if ({}) { console.log(1); }很明显,在上面的代码中,自动地发生了类型转换,因为if里面只能为布尔值,说明对象被转换成了布尔值
什么是路由守卫?在 Vue.js 中,路由守卫是用来控制页面导航行为的函数。当我们在应用中切换路由时,路由守卫允许我们在路由改变之前或之后执行一些特定的逻辑。比如,我们可以用路由守卫来检查用户是否已登录,是否有权限访问某个页面,或者在离开当前页面之前提示用户保存未完成的工作等等。这相当于vue中的生命周期钩子函数一样,在路由被操作的时候,会逐一触发这些路由守卫。将路由跳转过程细分为每一个小过程,让
Vue.js 已经成为了前端开发领域中的热门框架之一。它的简洁、易用和高效让许多开发者爱不释手。让我们一起来探讨 Vue.js 的核心概念,包括组件、指令、模板和生命周期钩子,带你轻松掌握这个强大的框架。1. 组件:构建复杂应用的秘密武器组件是 Vue.js 的基石。Vue.js 使用组件来构建用户界面,它们就像乐高积木一样,可以组合成各种形状和大小的应用。组件化开发让我们的代码更具模块化,易于维
在当今快节奏的网络世界中,用户对于网页的响应速度和流畅性有着极高的要求。Web Worker 作为 HTML5 引入的一项关键技术,正成为优化网页性能和提升用户体验的强大工具。Web Worker 的工作原理Web Worker 本质上是在网页中创建的独立后台线程,它与主线程并行运行,且拥有自己独立的执行环境。这意味着 Web Worker 无法直接访问页面的 DOM 结构,也不能操作全局的 Ja
前言 在我们平常面试中,手写题是必不可少的一项环节,在本篇文章中,将会教大家手把手教会大家手写一部分手写题,希望对大家有所帮助.正文1.手写防抖节流 在JavaScript中,防抖(Debounce)和节流(throttle)是两种常用的优化高频触发事件的策略,它们通常用于窗口大小,
前言:在当今数字化的时代,用户体验的优化至关重要。物流信息的展示作为电商和供应链领域中的关键环节,其呈现方式直接影响着用户对货物运输状态的感知和满意度。纵向的物流时间轴效果能够以清晰、直观的方式向用户展示物流的各个关键节点,帮助用户更好地跟踪货物的运输进程。在 Vue 这一强大的前端框架中实现这样的效果,不仅能够提升开发效率,还能为用户带来更加流畅和交互性强的体验。物流时间轴效果在提升信息呈现的直
console.log('接收:', event.data); // { action: 'refresh' } };新增功能页面使用 postMessage 发送消息给 worker,worker 在发送给各个主线程:const sharedWorker = new SharedWorker('./worker.js', 'test'); const port = sharedWorker.po
写优雅的代码一道面试题大概两年以前,面试美团的时候,面试官让我写一道代码题,时间单位转换。具体的题目我忘记了。原题目我没做过,但是我写的业务代码代码里有类似的单位转换,后端返回一个数字,单位是kb,而我要展示成 KB,MB 等形式。大概写一个工具函数(具体怎么写的忘记了,不过功能比这个复杂点):function formatSizeUnits(kb) { let units = ['KB'
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号