企业版Java核心概要简介
csdh11 2025-03-10 14:31 22 浏览
JakartaEE目前包含三个Profile,即Core、Web、Platform。三者之间存在包含关系,而每个Profile包含一堆JSR。关系图如下
核心概要文件(Core Profile)是企业版Java规范的一个子集,它的目标群体为微服务开发人员。
必要规范包括 Annotations, DI, CDI Lite, Interceptors, JSONP, JSONB, JAX-RS。
可选规范包括:JAXB(JAX-RS可选依赖), EL(CDI可选依赖)。
- Annotations
在JavaEE也被称为common-annotations,它是在JSR 175元注解规范出现后,为避免通用概念因不同厂商的技术实现带来不同的注解。
Annotations | Spring | 备注 | |
标记为资源 | jakarta.annotation.Resource | org.springframework.stereotype.Repository | Resource用于指定EJB、WebService、Persistence等资源 |
属性/方法注入 | jakarta.annotation.Resource | org.springframework.beans.factory.annotation.Autowired | @Resource默认按名称注入,找不到则按类型,支持从JNDI获取 |
顺序 | jakarta.annotation.Priority | org.springframework.core.annotation.Order | @Priority的负值作为特殊用途 |
构造函数钩子 | jakarta.annotation.PostConstruct | org.springframework.beans.factory.InitializingBean | Spring还支持其他init-method方式 |
析构函数钩子 | jakarta.annotation.PreDestroy | org.springframework.beans.factory.DisposableBean | Spring还支持AutoCloseable等destroy-method方式 |
数据源 | jakarta.annotation.sql.DataSourceDefinition | - | Spring可以通过在java配置类定义javax.sql.DataSource类型的bean |
权限:定义角色 | jakarta.annotation.security.DeclareRoles | - | Annotations还定义了其他权限相关注解 |
权限:资源角色 | jakarta.annotation.security.RolesAllowed | org.springframework.security.access.annotation.Secured | spring-security的PreAuthorize注解支持表达式可以达到相同效果 |
权限:角色 | jakarta.annotation.security.RunAs | - | Annotations还定义了其他权限相关注解 |
约束 | jakarta.annotation.Nonnull | - | 用于属性上则构造完不能/可能为null,用于方法上则返回值不能/可能为null |
可以看到Annotations规范定义的注解数量不多,但涉及面挺广,甚至有些注解平常用不到。
- DI & CDI vs spring-context vs guice
DI规范定义了一系列为bean的字段/方法/构造器上注入的注解。DI和CDI的参考实现为JBoss Weld,但glassfish使用的是hk2。
DI & CDI | spring-context | guice | 备注 | |
配置方式 | annotation, xml | xml, properties, jdbc, java | java | |
类标记为bean | jakarta.enterprise.context.NormalScope | org.springframework.stereotype.Component | - | JakartaEE中注解带有NormalScope、Stereotype都被当作bean |
定义bean | jakarta.enterprise.inject.Produces | org.springframework.context.annotation.Bean | com.google.inject.Provides | |
scope | jakarta.inject.Singleton | singleton, prototype; session, request, refresh; custom | com.google.inject.Singleton | 可以通过JakartaEE元注解jakarta.inject.Scope自定义scope |
限定注册到上下文类型 | jakarta.enterprise.inject.Typed | - | - | |
构造器注入 | jakarta.inject.Inject | org.springframework.beans.factory.annotation.Autowired | com.google.inject.Inject | spring支持Resource、Inject注解 |
属性注入 | jakarta.inject.Inject | org.springframework.beans.factory.annotation.Autowired | com.google.inject.Inject | |
方法注入 | jakarta.inject.Inject | org.springframework.beans.factory.annotation.Autowired | com.google.inject.Inject | |
默认bean | jakarta.enterprise.inject.Default | org.springframework.context.annotation.Primary | - | guice可以通过ImplementedBy来指定默认实现类型 |
限定名称 | jakarta.inject.Named | org.springframework.beans.factory.annotation.Qualifier | com.google.inject.name.Named | jakarta.inject.Qualifier在JakartaEE为元注解 |
可选依赖 | jakarta.inject.Provider | java.util.Optional | java.util.Optional | |
延迟加载 | jakarta.inject.Provider | org.springframework.context.annotation.Lazy | - | |
避免循环依赖 | jakarta.inject.Provider | - | ||
多实例注入 | jakarta.inject.Provider | java.util.Collection | - | |
bean销毁清理 | jakarta.enterprise.inject.Disposes | org.springframework.beans.factory.DisposableBean | - | spring支持对Closeable类型自动发现销毁方法进行调用 |
上下文初始化通知 | jakarta.enterprise.context.Initialized | org.springframework.context.event.ContextStartedEvent | - | |
上下文销毁前通知 | jakarta.enterprise.context.BeforeDestroyed | - | - | |
上下文销毁通知 | jakarta.enterprise.context.Destroyed | org.springframework.context.event.ContextStoppedEvent | - | |
产生事件 | jakarta.enterprise.event.Event | org.springframework.context.ApplicationEventPublisher | - | CDI中通过注入的Event来产生同步/异步事件 |
事件处理 | jakarta.enterprise.event.Observes | org.springframework.context.event.EventListener | - | |
SPI | jakarta.enterprise.inject.build.compatible.spi.Discovery | org.springframework.beans.factory.config.BeanFactoryPostProcessor | - |
CDI以元注解NormalScope标记常规范围,将DI的元注解Scope留作标记伪范围。CDI给JSF预留了ConversationScoped,此外还定义了一个特殊的伪范围Dependent。 DI和CDI规范没有定义prototype。
CDI为mvc架构模式,比如JSF,定义了内建的Stereotype:
jakarta.enterprise.inject.Model。
CDI允许销毁清理方法通过参数上的Disposes注解注入销毁对象或其它辅助对象。
开发、测试、生产环境需要生效的bean可能不一致(可参考Spring的@Profile,结合元注解@Qualifier自定义注解达到目的),或者值不一致(可参考Spring的@Value、@ConfigurationProperties)。
散落的配置写起来方便,阅读,特别是排查问题就麻烦,需要支持集中式配置(可参考Spring的@Configuration、@Import、@ImportResource)。
在JakartaEE中定义了Decorator类型bean,但他实现了业务逻辑接口类,所以无法像Interceptor那样关注横切点。 Decorator类型bean可以注入业务接口,并用Delegate注解来限定。 Decorator注解CDI Lite可以不支持。
- Interceptor vs spring-aop vs Aspectj
Interceptors规范定义了拦截器基本编程模型和语义。Interceptor参考实现为JBoss Weld。
Interceptors | spring-aop | Aspectj | |
织入时机 | runtime | runtime or load time | compile |
标记为切面 | jakarta.interceptor.Interceptor | org.springframework.aop.Advisor | org.aspectj.lang.annotation.Aspect |
标记为切点 | jakarta.interceptor.Interceptors | org.springframework.aop.Pointcut | org.aspectj.lang.annotation.Pointcut |
方法执行前 | - | org.springframework.aop.BeforeAdvice | org.aspectj.lang.annotation.Before |
方法执行后 | - | org.springframework.aop.AfterAdvice | org.aspectj.lang.annotation.After |
方法返回后 | - | org.springframework.aop.AfterReturningAdvice | org.aspectj.lang.annotation.AfterReturning |
方法异常时 | - | org.springframework.aop.ThrowsAdvice | org.aspectj.lang.annotation.AfterThrowing |
环绕方法 | jakarta.interceptor.AroundInvoke | - | org.aspectj.lang.annotation.Around |
JakartaEE支持将构造函数作为切点,允许环绕(AroundConstruct)和构造后(PostConstructor)处理。它们与销毁前(PreDestroy)处理,构成生命周期回调。
JakartaEE还支持超时回调: AroundTimeout。
AOP相关的框架、库还有JBoss AOP、AspectWerkz、Nanning等,它们和AOP联盟(aopalliance)一样,基本不再存活/更新。
- JSONB/JSONP vs jackson-json vs guava vs fastjson
JSONB即JSON Binding,用于规范java对象序列化成JSON消息,或JSON消息反序列化成java对象。参考实现为Eclipse Yasson。
JSONB | jackson-json | guava | fastjson | |
带参构造函数反序列化 | jakarta.json.bind.annotation.JsonbCreator | com.fasterxml.jackson.annotation.JsonCreator | objenesis | com.alibaba.fastjson.annotation.JSONCreator |
builder模式 | - | com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder | - | com.alibaba.fastjson.annotation.JSONType(builder = ) |
指定属性序列化时顺序 | jakarta.json.bind.annotation.JsonbPropertyOrder | com.fasterxml.jackson.annotation.JsonPropertyOrder | - | com.alibaba.fastjson.annotation.JSONType(orders = ) |
属性别名 | jakarta.json.bind.annotation.JsonbProperty | com.fasterxml.jackson.annotation.JsonProperty | com.google.gson.annotations.SerializedName | com.alibaba.fastjson.annotation.JSONField(alternateNames = ) |
忽略属性 | jakarta.json.bind.annotation.JsonbTransient | com.fasterxml.jackson.annotation.JsonIgnore | com.google.gson.annotations.Expose(serialize = false, deserialize = false) | com.alibaba.fastjson.annotation.JSONType(ignores = ) |
指定日期格式化方式 | jakarta.json.bind.annotation.JsonbDateFormat | com.fasterxml.jackson.annotation.JsonFormat | com.google.gson.GsonBuilder#setDateFormat | com.alibaba.fastjson.annotation.JSONField(format = ) |
指定数字格式化方式 | jakarta.json.bind.annotation.JsonbNumberFormat | com.fasterxml.jackson.annotation.JsonFormat | - | com.alibaba.fastjson.annotation.JSONField(format = ) |
泛型 | - | com.fasterxml.jackson.core.type.TypeReference | com.google.gson.reflect.TypeToken | com.alibaba.fastjson.TypeReference |
多态 | jakarta.json.bind.annotation.JsonbTypeInfo | com.fasterxml.jackson.annotation.JsonTypeInfo | - | com.alibaba.fastjson.annotation.JSONType(seeAlso = {}, typeKey = ) |
自定义反序列化 | jakarta.json.bind.annotation.JsonbTypeDeserializer | com.fasterxml.jackson.databind.annotation.JsonDeserialize | com.google.gson.JsonDeserializer | com.alibaba.fastjson.annotation.JSONType(deserializer = ) |
自定义序列化 | jakarta.json.bind.annotation.JsonbTypeSerializer | com.fasterxml.jackson.databind.annotation.JsonSerialize | com.google.gson.JsonSerializer | com.alibaba.fastjson.annotation.JSONType(serializer = ) |
包/类属性可见性 | jakarta.json.bind.annotation.JsonbVisibility | - | - | - |
中间对象转换 | jakarta.json.bind.annotation.JsonbTypeAdapter | - | com.google.gson.annotations.JsonAdapter | - |
属性名映射策略 | jakarta.json.bind.config.PropertyNamingStrategy | com.fasterxml.jackson.databind.annotation.JsonNaming | com.google.gson.FieldNamingStrategy | com.alibaba.fastjson.annotation.JSONType(naming = ) |
mixin | - | org.springframework.boot.jackson.JsonMixin | - | com.alibaba.fastjson.JSON.addMixInAnnotations(,) |
注入上下文对象 | - | com.fasterxml.jackson.annotation.JacksonInject | - | - |
引用 | - | com.fasterxml.jackson.annotation.JsonIdentityInfo | - | jsonpath |
JSONP即JSON Processing,用于规范JSON文档的解析、生成、修改及查询。参考实现为Eclipse Parsson。
JSONP | jackson-json | guava | fastjson | |
解析JSON | jakarta.json.stream.JsonParser | com.fasterxml.jackson.core.JsonParser | com.google.gson.stream.JsonReader | com.alibaba.fastjson.parser.DefaultJSONParser |
生成JSON | jakarta.json.stream.JsonGenerator | com.fasterxml.jackson.core.JsonGenerator | com.google.gson.stream.JsonWriter | com.alibaba.fastjson.serializer.JSONSerializer |
从API来看,JSONB、JSONP与jackson极其相似。
- JAX-RS/mvc vs spring-webmvc
JAX-RS即Java RESTful Web Services。参考实现为Eclipse Jersey。 MVC规范基于JAX-RS,所以此处将二者当作一个整体和其它规范/库进行比较。MVC规范的参考实现为Eclipse Krazo。
JAX-RS & MVC | spring-webmvc | 备注 | |
控制器 | jakarta.mvc.Controller | org.springframework.stereotype.Controller | spring-webmvc的Controller注解支持命名bean |
URL映射 | jakarta.ws.rs.Path | org.springframework.web.bind.annotation.RequestMapping | spring-webmvc的RequestMapping可以同时指定method, params, headers, consumes, produces |
限定为GET方法 | jakarta.ws.rs.GET | org.springframework.web.bind.annotation.GetMapping | 同上 |
限定为POST方法 | jakarta.ws.rs.POST | org.springframework.web.bind.annotation.DeleteMapping | 同上 |
限定为PUT方法 | jakarta.ws.rs.PUT | org.springframework.web.bind.annotation.PutMapping | 同上 |
限定为DELETE方法 | jakarta.ws.rs.DELETE | org.springframework.web.bind.annotation.DeleteMapping | 同上 |
限定为PATCH方法 | jakarta.ws.rs.PATCH | org.springframework.web.bind.annotation.PatchMapping | 同上。注意:非幂等,对资源进行部分修改 |
限定为OPTIONS方法 | jakarta.ws.rs.OPTIONS | - | spring-webmvc在HandlerMapping中识别预检请求,根据跨域配置决定放行还是拒绝 |
限定为HEAD方法 | jakarta.ws.rs.HEAD | - | 获取文件大小用。spring-webmvc无对应方式,可通过GetMapping变通实现 |
限定为TRACE方法 | - | - | |
限定消费的媒体类型 | jakarta.ws.rs.Consumes | org.springframework.web.bind.annotation.RequestMapping(consumes = ) | |
限定产生的媒体类型 | jakarta.ws.rs.Produces | org.springframework.web.bind.annotation.RequestMapping(produces = ) | |
绑定请求头 | jakarta.ws.rs.HeaderParam | org.springframework.web.bind.annotation.RequestHeader | Jakarta MVC的绑定参数如果是复杂对象,需要实现ParamConverterProvider并注册到容器 |
绑定Cookie | jakarta.ws.rs.CookieParam | org.springframework.web.bind.annotation.CookieValue | 同上 |
绑定session | - | org.springframework.web.bind.annotation.SessionAttribute | |
绑定简单查询参数 | jakarta.ws.rs.QueryParam | org.springframework.web.bind.annotation.RequestParam | |
绑定矩阵查询参数 | jakarta.ws.rs.MatrixParam | org.springframework.web.bind.annotation.MatrixVariable | |
绑定路径模板参数 | jakarta.ws.rs.PathParam | org.springframework.web.bind.annotation.PathVariable | |
绑定表单参数 | jakarta.ws.rs.FormParam | - | MIME类型需为" |
绑定请求体 | java.lang.Object | org.springframework.web.bind.annotation.RequestBody | Jakarta MVC支持将RequestScoped的bean作为属性注入Controller |
绑定上传的文件 | - | org.springframework.web.bind.annotation.RequestPart | Jakarta MVC无注解绑定文件 |
绑定请求属性 | - | org.springframework.web.bind.annotation.RequestAttribute | |
设置默认值 | jakarta.ws.rs.DefaultValue | org.springframework.web.bind.annotation.*(defaultValue = ) | spring-webmvc的RequestHeader、CookieValue、RequestParam、MatrixVariable支持默认值 |
返回视图 | java.lang.String | java.lang.String | Jakarta MVC的@View注解用于返回固定的默认视图 |
返回模型和视图 | jakarta.mvc.Models | org.springframework.web.servlet.ModelAndView | |
返回响应码 | - | org.springframework.web.bind.annotation.ResponseStatus | Jakarta MVC无对应注解,可通过 |
返回响应体 | java.lang.Object | org.springframework.web.bind.annotation.ResponseBody | Jakarta MVC通过在实现了MessageBodyWriter和MessageBodyReader的类上标记Provider来自动编解码 |
全局异常处理 | jakarta.ws.rs.ext.ExceptionMapper | org.springframework.web.bind.annotation.ExceptionHandler | Jakarta MVC需要用@Provider注解标记实现类,将其注册到容器 |
编码 | jakarta.ws.rs.ext.MessageBodyWriter | org.springframework.http.codec.HttpMessageWriter | |
解码 | jakarta.ws.rs.ext.MessageBodyReader | org.springframework.http.codec.HttpMessageReader | @Encoded仅用于标记无需解码 |
参数转换 | jakarta.ws.rs.ext.ParamConverter | org.springframework.http.converter.HttpMessageConverter | |
参数校验 | jakarta.validation.Valid | org.springframework.validation.annotation.Validated | spring-webmvc也支持规范的注解,但自定义注解支持分组校验;Jakarta MVC支持用MvcBinding,将违规约束放到注入的BindingResult |
跨域 | jakarta.mvc.security.CsrfProtected | org.springframework.web.bind.annotation.CrossOrigin | |
本地化 | jakarta.mvc.locale.LocaleResolver | org.springframework.web.servlet.LocaleResolver | Jakarta MVC支持注入MvcContext来过程控制 |
异步 | jakarta.ws.rs.container.Suspended | org.springframework.scheduling.annotation.Async | |
SSE | jakarta.ws.rs.Produces(MediaType.SERVER_SENT_EVENTS) | org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter |
在JAX-RS这种RESTful WebService规范出现之前,还有SOAP WebService规范,即JAX-RPC(Java API for XML-based RPC)和JAX-WS(Java API for XML-Based Web Services)。
JAX-RPC要求SEI(Service Endpoint Interface)必须继承java.rmi.Remote,方法必须抛出java.rmi.RemoteException。 而client可以从SEI或WSDL生成java代码,或使用
java.xml.rpc.ServiceFactory.loadService来获取stub,使用起来相当不便。
JAX-WS则定义了一系列注解,用于标记类为SEI的javax.jws.WebService,标记方法的javax.jws.WebMethod,标记参数的javax.jws.WebParam, 标记结果的javax.jws.WebResult和javax.jws.Oneway。 JAX-RPC要事先生成stub,而JAX-WS允许在运行时生成stub。 JAX-WS曾被纳入JavaSE。
- JAXB vs XStream vs jackson-dataformat-xml
JAXB即Java Architecture for XML Binding,它是JAX-WS的默认数据绑定技术, JAXB的参考实现为jaxb-impl。
JAXB使用java注解来标记java对象和XML之间的绑定关系,XStream和jackson-dataformat-xml也支持注解形式,此处就不再比较编写XML映射关系来生成代码形式的XMLBeans和JiBX。
JAXB | XStream | jackson-dataformat-xml | |
绑定attribute | jakarta.xml.bind.annotation.XmlAttribute | com.thoughtworks.xstream.annotations.XStreamAsAttribute | com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(isAttribute=true) |
绑定元素 | jakarta.xml.bind.annotation.XmlElement | com.thoughtworks.xstream.annotations.XStreamAlias | com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty |
绑定通配attribute | jakarta.xml.bind.annotation.XmlAnyAttribute | - | - |
绑定通配元素 | jakarta.xml.bind.annotation.XmlAnyElement | - | - |
映射元素值 | jakarta.xml.bind.annotation.XmlValue | com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText | |
映射附件 | jakarta.xml.bind.annotation.XmlAttachmentRef | - | - |
映射工厂方法到元素 | jakarta.xml.bind.annotation.XmlRegistry | - | - |
解组对象生成方式 | jakarta.xml.bind.annotation.XmlType(factoryClass= , factoryMethod=) | - | - |
包映射XML命名空间 | jakarta.xml.bind.annotation.XmlSchema | - | - |
标记类可编组为XML | jakarta.xml.bind.annotation.XmlRootElement | default | com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement |
映射类到XML Schema | jakarta.xml.bind.annotation.XmlType | com.thoughtworks.xstream.annotations.XStreamAliasType | - |
指定编组范围 | jakarta.xml.bind.annotation.XmlAccessorType | - | - |
忽略类/属性/方法 | jakarta.xml.bind.annotation.XmlTransient | com.thoughtworks.xstream.annotations.XStreamOmitField | - |
属性编组顺序 | jakarta.xml.bind.annotation.XmlAccessorOrder | - | - |
属性类型映射XML内建类型 | jakarta.xml.bind.annotation.XmlSchemaType | - | |
属性编组为XML ID | jakarta.xml.bind.annotation.XmlID | - | - |
属性编组为XML IDREF | jakarta.xml.bind.annotation.XmlIDREF | - | - |
属性编组为base64数据 | jakarta.xml.bind.annotation.XmlMimeType | - | - |
枚举值编组 | jakarta.xml.bind.annotation.XmlEnum | - | - |
list属性编组为简单类型 | jakarta.xml.bind.annotation.XmlList | - | - |
多态 | jakarta.xml.bind.annotation.XmlSeeAlso | com.thoughtworks.xstream.annotations.XStreamInclude | - |
混杂内容 | jakarta.xml.bind.annotation.XmlMixed | - | - |
编解组带包装元素 | jakarta.xml.bind.annotation.XmlElementWrapper | com.thoughtworks.xstream.annotations.XStreamImplicit | com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper |
CDATA | - | - | com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData |
自定义编解组 | jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter | com.thoughtworks.xstream.annotations.XStreamConverter | - |
相关推荐
- IDEA界面太丑??尝试一下这几个插件
-
前言IntelliJIDEA主要用于支持Java、Scala、Groovy等语言的开发工具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和Web应用的开发。IntelliJi...
- 小巧 Vue 页面滚动进度条组件ScrollProgress
-
今天给大家分享一个轻量级Vue.js全屏滚动进度条组件VueScrollProgress。vue-scroll-progress一款基于vue.js构建的页面滚动进度条组件,...
- 基于vue实现可视化拖拽编辑器,页面生成工具,提升前端开发效率
-
项目介绍基于vue实现的可视化拖拽编辑器,实现页面生成工具,提升前端开发效率。可以基层到移动端项目作为自定义json直接生成UI页面。项目特点功能特点...
- 优秀 vue+heyui 后端管理系统HeyUI-Admin
-
今天再给小伙伴们推荐一款成熟的企业中后台管理系统HEYUI-Admin。heyui-admin基于vue.js和heyui组件库构建的后台管理系统。包含基础表单/表格功能,拓展组件(图表、富文本编辑...
- 响应式 Vue.js 前端组件化框架Xvue-UI
-
今天给小伙伴们推荐一款超不错的Vue轻量级组件框架XVueUI。xvue-ui基于vue2.x构建的响应式前端组件化框架。轻量级、易于上手,提供...
- 《基于SpringBoot+Vue的在线视频系统设计与实现》开题报告
-
【计算机毕业设计案例】基于SpringBoot+Vue的在线视频系统设计与实现_哔哩哔哩_bilibili...
- 超好用 Vue.js 图片裁切组件Vue-ImgCutter
-
今天给小伙伴们分享一个超棒的Vue图片任意裁剪插件VueImgCutter。vue-img-cutter基于vue2.x构建的轻量级剪切图片组件。支持移动图像、放大缩小图片、任意移动图片、固定比...
- Vue 3 进阶用法:异步组件(vue 异步组件原理)
-
一、代码分割一个大型前端应用,如果所有代码都放在单一文件,体积会特别大,下载时间长,白屏时间久,用户体验差。...
- 源码补丁神器—patch-package(源码助手怎么用)
-
作者:张浩一、背景vue项目中使用vue-pdf第三方插件预览pdf,书写业务代码完美运行,pdf文件内容正常预览无问题。后期需求有变,业务需求增加电子签章功能。这个时候pdf文件的内容可以显示出...
- 经验分享:Vue2 项目升级 Vue3 + Element Plus,借助Deepseek手动升级
-
Vue3出来好久了,我开发的项目还在使用Vue2框架,一般情况下不考虑升级,但是最近需要接入工作流程引擎之类的,看了下Vue2生态下操作空间不是很好,那索性尝试升级Vue3吧。一番操作下来,升级成功,...
- 34K Star!史上最全JavaScript资源库 awesome-javascript
-
34KStar!史上最全JavaScript资源宝库大揭秘引言在GitHub上,有一个备受瞩目的JavaScript资源仓库,以其全面的内容和精心的分类,成为了众多开发者的必备参考。这个拥有超过...
- 基于 Vue.js 磁片栅格布局组件VueGridLayout
-
#头条创作挑战赛#今天给大家分享一个超优秀的vue.js拖拽栅格布局插件VueGridLayout。...
- 6款高颜值 Vue3 PC端UI组件库(vue3开发组件库)
-
马上到国庆了,还没学习或者想学习vue3的小伙伴们有安排上没?这次推荐几个比较流行的VUE3UI组件库,合理利用,又或者学习借鉴都是不错的选择。1、element-pluselement-plus...
- 高性能 vue.js+ztree 树形组件Vue-GiantTree
-
今天给大家分享一款超棒的Vue海量数据渲染树形组件VueGiantTree。vue-giant-tree基于ztree封装的Vue树形组件。轻松实现大数据高性能渲染,适合海量数据渲染场景。zTr...
- 【推荐】2024年推荐的6款开源免费 Vue 后台管理系统模板,建议收藏
-
前言在现今的软件开发领域,...
- 一周热门
- 最近发表
-
- IDEA界面太丑??尝试一下这几个插件
- 小巧 Vue 页面滚动进度条组件ScrollProgress
- 基于vue实现可视化拖拽编辑器,页面生成工具,提升前端开发效率
- 优秀 vue+heyui 后端管理系统HeyUI-Admin
- 响应式 Vue.js 前端组件化框架Xvue-UI
- 《基于SpringBoot+Vue的在线视频系统设计与实现》开题报告
- 超好用 Vue.js 图片裁切组件Vue-ImgCutter
- Vue 3 进阶用法:异步组件(vue 异步组件原理)
- 源码补丁神器—patch-package(源码助手怎么用)
- 经验分享:Vue2 项目升级 Vue3 + Element Plus,借助Deepseek手动升级
- 标签列表
-
- mydisktest_v298 (34)
- document.appendchild (35)
- 头像打包下载 (61)
- acmecadconverter_8.52绿色版 (39)
- word文档批量处理大师破解版 (36)
- server2016安装密钥 (33)
- mysql 昨天的日期 (37)
- parsevideo (33)
- 个人网站源码 (37)
- centos7.4下载 (33)
- mysql 查询今天的数据 (34)
- intouch2014r2sp1永久授权 (36)
- 先锋影音源资2019 (35)
- jdk1.8.0_191下载 (33)
- axure9注册码 (33)
- pts/1 (33)
- spire.pdf 破解版 (35)
- shiro jwt (35)
- sklearn中文手册pdf (35)
- itextsharp使用手册 (33)
- 凯立德2012夏季版懒人包 (34)
- 冒险岛代码查询器 (34)
- 128*128png图片 (34)
- jdk1.8.0_131下载 (34)
- dos 删除目录下所有子目录及文件 (36)