强劲新版本来袭!jQuery 4.0.0、Rsbuild 0.4、Shiki v1.0发布!
随着 React、Vue、Angular 三大框架的流行,新增的站点使用 jQuery 已经比较少了,但是存量的站点使用 jQuery 的量级还是非常的大。从网站 javascript 库使用统计的历史趋势可以看出,jQuery 的使用占比在 77% 以上,仍处于高位。
jQuery 4.0.0 已经开发了很长时间,现在已经可以发布测试版了!该版本涵盖了很多内容,开发团队很高兴看到它的发布。开发团队进行了错误修复、性能改进和一些重大变更。毕竟,移除了对 IE<11 的支持!尽管如此,希望对用户造成的影响微乎其微。
许多破坏性更改是团队多年来一直想做的,但在补丁或小版本中无法实现。jQuery 开发团队删减了遗留代码,删除了一些以前废弃的 API,删除了一些从未记录的公共函数的内部参数,并放弃了对一些过于复杂的 \”神奇\” 行为的支持。
jQuery 团队将在最终版本发布前发布一份全面的升级指南,概述移除的代码以及如何迁移。jQuery Migrate 插件也将随时提供帮助。现在,请试用测试版,如果遇到任何问题,请告知我们。
jQuery 4.0 不再支持 IE 10 及更老版本。有些人可能会问,为什么不取消对 IE 11 的支持呢?我们计划分阶段取消支持,下一步将在 jQuery 5.0 中进行。现在,我们将从移除支持IE 11以上版本的代码开始,在一个PR中减少-867 gzipped字节!
jQuery 4.0还放弃了对其他旧版浏览器的支持,包括 Edge Legacy、iOS <11、Firefox <65 和 Android 浏览器。您无需进行任何更改。如果您需要支持这些浏览器,只需坚持使用 jQuery 3.x。
更多参考:https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/
Rsbuild 是基于 Rspack 的构建工具,旨在成为增强版的 Rspack CLI,更加容易上手和开箱即用。Rsbuild 是 Webpack 应用迁移到 Rspack 的最佳方案,他能帮助你减少 90% 配置并获得 10 倍构建速度。
Rsbuild v0.4 版本提供内置的模块联邦支持。此外,还包含一些 API 的不兼容更新,主要特性如下:
- 开箱即用的模块联合
- 改进插件 Hook API
- 改进性能
- 支持 Rsdoctor
- 支持设置装饰器版本
Rsbuild 现在提供一个内置的 moduleFederation 选项,这将使得在 Rsbuild 中配置模块联邦变得更加容易。
当你使用该选项时,Rsbuild 会自动修改默认的 publicPath 和 splitChunks 配置,使模块联邦可以开箱即用。
在 Rsbuild 插件中使用 hook 时,现在可以通过 order 字段来声明 hook 的顺序:
loadConfig 方法现在会返回配置内容和配置文件的路径:
- 减少 deepmerge 性能开销
- 减少对 core-js 的 require.resolve 性能
- 移除重复的 autoprefixer 插件
- 升级 webpack-bundle-analyzer 以移除 lodash 依赖
更多参考:https://github.com/web-infra-dev/rsbuild/releases/tag/v0.4.0
Shiki 是一个轻量且强大的语法高亮工具,由著名的轮子大师 antfu 打造。
Shiki v1.0 是一次重大重写,解决了大部分长期存在的问题。之前称为 Shikiji,现在合并回 Shiki。主要亮点如下:
- 完全支持 ESM,不再需要静态资产或 CDN 设置
- 不依赖文件系统,与平台无关,可用于 Node.js、浏览器和其他任何现代运行时。
- 内置双主题,有效支持明暗模式
- 变形和装饰 API,最大限度提高可定制性
- 官方 rehype 和 markdown-it 插件
- TwoSlash 整合现在是 Shiki 转换器而非包装器
- 更多主题和更好的语言支持。作为独立软件源维护:https://github.com/shikijs/textmate-grammars-themes
- 新文档:https://shiki.style
更多参考:https://github.com/shikijs/shiki/releases/tag/v1.0.0
长沙米拓代码问题深度剖析:合法性审查的缺失与影响
在长沙米拓事件的调查与分析中,一个显著且令人担忧的问题逐渐浮出水面:在目前所有的公开判决书中,竟然没有一份判决书对长沙米拓的程序是否具有合法来源进行过比对审查。这一漏洞不仅使米拓公司的侵权行为得以在一定程度上长期隐匿,更对众多企业和开发者造成了严重的损害,同时也对司法公正和行业秩序产生了负面影响。长沙米拓通过一系列复杂且不道德的手段,盗窃他人程序代码并骗取版权证书,对软件行业的公平竞争和正常秩序造成了严重破坏,其行为涉及多个方面的违法违规操作,具体如下:
- 广泛整合第三方开源代码MetInfo 程序(版本 MetInfo)中集成了大量第三方代码(插件),经审查,开源代码量在整个程序中占比高达 73%。这些第三方开源代码来源广泛且功能多样,涵盖了轮播插件(如 jquery.bxSlider.min.js、modernizr.min.js、box-slider-all.jquery.min.js 等)、字体插件(如 font-awesome.css、glyphicons.min.css 等)、前端框架(amazeui.min.js)、展示图片相册(photoswipe 相关插件)、视频播放插件(video-js 相关文件)、图片放大器插件(jqzoom.js 等)、多个 JS 基础库(如 jQuery 不同版本文件)以及文件加载类(seajs.js 等)。这些开源代码由不同的作者开发,各自拥有独立的版权,但米拓公司未经授权将其整合进自己的程序中,以充实 MetInfo 程序的功能。以轮播插件为例,jquery.bxSlider.min.js、modernizr.min.js 和 box-slider-all.jquery.min.js 等文件为用户提供了多样化的轮播效果选择,增强了网站页面的交互性和视觉吸引力。字体插件如 font-awesome.css 和 glyphicons.min.css 则为程序提供了丰富的字体图标资源,提升了界面的美观度和用户体验。
- 关键文件的盗用与集合basic.css 和 basic.js 是米拓公司在诉讼中主张权利的核心代码文件。然而,经深入审查发现,这两个文件均是由多个第三作者的开源代码集合而成。basic.css 文件中的第一段代码源自 \\app\\system\\include\\static2\\css\\bootstrap.min.css(其原始存储路径为 * app\\system\\include\\static\\css\\bootstrap.min.css*\\,作者为 /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */),该部分代码为整体样式奠定了基础;第二段代码来自 \\app\\system\\include\\static2\\css\\bootstrap-extend.min.css(原始存储路径为 /app/system/include/static/css/bootstrap-extend.min.css/),可能对样式进行了进一步的扩展和定制;第三段代码取自 \\app\\system\\include\\static2\\assets/css\\site.min.css(原始存储路径为 /app/system/include/static/assets/css/site.min.css/),涉及站点全局的样式设置;第四段代码来源于 \\app\\system\\include\\static2\\fonts\\web-icons\\web-icons.min.css(原始存储路径为: /app/system/include/static2\\fonts\\web-icons\\web-icons.min.css/),为程序提供了特定的图标样式;第五段代码则是由 \\app\\system\\include\\static2\\fonts\\font-awesome\\font-awesome.min.css(原始存储路径为 /app/system/include/static/fonts/font-awesome/font-awesome.min.css/)提供,进一步丰富了字体图标的资源。basic.js 文件同样是多个第三方开源软件代码的合集,其中包括 babel-external-helpers.min.js、jquery.min.js、tether.min.js、bootstrap.min.js、State.min.js、Component.min.js、Plugin.min.js、Basic.min.js、Config.min.js、Site.min.js、breakpoints.min.js、modernizr.min.js 等。这些不同来源的代码片段共同构成了 basic.js 文件,为程序提供了各种功能支持。
- 恶意删除注释与来源信息在 MetInfo 6.1.0 版本中,basic.css 和 basic.js 文件中的部分代码还保留有注释来源,这些注释清晰地指明了代码的原始出处和开发者信息。然而,在后续版本(如版本)中,米拓公司蓄意删除了这些注释。通过详细的审计代码对比发现,版本中的 basic.css 和 basic.js 文件不仅去除了注释,还对代码进行了二次压缩处理。具体而言,由 library.php(路径:MetInfo \\public\\ui\\v2\\static\\library.php)负责调用原始文件路径,metuipack.class.php(路径:MetInfo \\public\\ui\\v2\\static\\metuipack.class.php)负责合并操作。在版本里的 222 行代码为强制删除代码文件里注释的方法,在该文件 234 行里找到 JS 压缩地址(https://www.css-js.com/taskserver.do)及压缩代码,在链接地址通过压缩原始文件输出形成的代码结果跟米拓公司压缩的基本一致,除了一些变量值由于压缩时字符会随机生成,导致部分字母不相同,但整体基本代码相同。这种行为使得代码的来源难以追溯,米拓公司试图以此掩盖其盗用他人代码的事实。
- 故意更改代码展示方式误导他人在与答辩人关联的案件中,米拓公司提交的《网站文件对比意见》里,将 basic.css 文件代码主张为其软件的权利代码,并将其与被告网站进行对比。然而,其所展示的代码对比截图中,代码展示方式经过了米拓公司的纂改,并非是 basic.css 真实的存储方式。米拓公司通过这种篡改后的展示方式,试图误导司法机关、被告以及其他相关方,使其认为这些代码是米拓公司自主开发的原创代码,从而为其骗取版权证书和进行恶意诉讼提供看似合理的依据。这种欺骗性的行为严重干扰了正常的司法判断和行业秩序。
- 利用版权登记漏洞获取证书尽管米拓公司成功获得了著作权登记证书,但著作权登记过程存在缺陷,仅进行形式审查,未对软件的实质性内容进行深入审查。米拓公司正是利用这一漏洞,将集成了大量第三方开源代码且经过篡改后的 MetInfo 程序申请版权登记,把包含他人作品或程序代码的软件非法据为己有。米拓公司在申请版权登记时,故意隐瞒了代码的真实来源,通过伪装和欺骗手段,使版权登记机构在未充分了解事实的情况下为其颁发了版权证书。这一行为严重违背了版权登记的初衷,损害了真正开发者的权益。
- 恶意诉讼获取非法利益并破坏司法秩序米拓公司以骗取的版权证书为依据,在多个案件中将 basic.css 和 basic.js 等代码文件作为软件权利代码,对超过 10000 + 企业提起诉讼,并通过诉讼形式获利几千万。在诉讼过程中,米拓公司完全无视其代码来源的真实情况,将第三作者的开源代码作为自己的权利代码与被告网站进行对比,构成了不诚信诉讼、虚假诉讼。其行为不仅严重侵害了第三方代码作者的合法权益,还滥用了法律赋予的诉讼权利,虚构法律关系,已构成 “虚假诉讼罪”。米拓公司的这种恶意诉讼行为极大地妨碍了人民法院正常的诉讼活动,浪费了大量的司法资源,同时也严重损坏了人民法院在人民群众心目中的公正形象,对整个司法体系的公信力造成了负面影响。
jQuery 3.0 正式发布,兼容 Promises/A+
jQuery 3.0 正式发布,此版本从 2014 年 10 月份就开始开发,jQuery 团队想打造成轻量级的,速度更快,向后兼容的 jQuery 版本。此版本移除了所有旧版 IE 的方法,并且借鉴了一些现代 web APIs。如果用户想要继续支持 IE 6-8,请使用最新的 jQuery 1.12 版本。
为了更方便用户升级,jQuery 3.0 提供了全新的 3.0 升级指南,还有 jQuery Migrate 3.0 插件。
用户可以从 jQuery CDN 或者下面链接中下载最新文件:
https://code.jquery.com/jquery-3.0.0.js
https://code.jquery.com/jquery-3.0.0.min.js
或者从 npm 获取:
此外,发布了 jQuery Migrate 3.0:
https://code.jquery.com/jquery-migrate-3.0.0.js
https://code.jquery.com/jquery-migrate-3.0.0.min.js
更多从 jQuery 1.x/2.x 升级到 jQuery 3.0 的迁移问题请看 jQuery Migrate 1.4.1 博文。
更轻量的构建版本
jQuery 团队发布了一个更轻量的 “slim” 版本,不包括 ajax,动画效果和当前废弃的代码。有时候用户不需要 ajax,只要使用一些独立库就可以处理 ajax 请求。或者使用 CSS 和类操作的结合来制作 web 动画效果。jQuery 的性能得到了很大的提升,slim 构建版本比之前常规的构建小了 6k,也就是 23.6k vs 之前的 30k。 文件提供在 npm 和 CDN:
https://code.jquery.com/jquery-3.0.0.slim.js
https://code.jquery.com/jquery-3.0.0.slim.min.js
此外,jQuery 3.0 还兼容 jQuery UI 和 jQuery Mobile。
jQuery 3.0 主要改进
-
jQuery.Deferred 兼容 Promises/A+
-
Deferreds 新增 .catch() 方法
-
错误事例会抛出错误提示
-
移除废弃的事件别名,比如 , , 和
-
动画效果现在使用
-
加速一些 jQuery 自定义选择器
更多改进内容请看 jQuery 博客。
微信订阅号:开源派 (opensourcepie)
开源派官网:osp.io 作者:叶秀兰
本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com
文章为作者独立观点不代本网立场,未经允许不得转载。