随易周刊第001期

📑 随易周刊介绍

这是一个由 前端之虎陈随易 维护的周刊,将会分享关于我以及我的所见所闻。

本周刊的原始版本发布在笔者的个人网站陈随易的个人网站上。

如果想获得更好的浏览体验,请收藏该网址。

如果你觉得周刊不错,可以给笔者提供打赏 (赞赏码在下方),以支持和鼓励笔者创作更多优质的周刊内容。

最后呢,本周刊正在寻找商业推广合作伙伴,如果你有兴趣,可以联系我。

  1. 周刊合作伙伴招募中,提供持续 1年,共 48期 服务 (最低购买40期,送8期)。
  2. 接受付费商业推广,以维持周刊的长期、持续、健康运转 (2个月内最多推荐1次)。
  3. 欢迎提交合法、合理、合规的内容,审核通过将被周刊录入 (免费推荐或100元以内心意红包即可)。

🐯 关于周刊作者

大家好,我是前端之虎陈随易。

目前是:

  • 农村程序员 (自 2020 年离职至今都在农村待着)
  • 独立开发者 (有多个已经在盈利中的产品)
  • 自由职业者 (睡到自然醒,困就马上睡)
  • 个人创业者 (注册了自己的公司,为产品服务)
  • 自驾爱好者 (经常自驾,边看风景边敲码)
  • 小说写作者 (断更 10年,目前构思新作品中)
  • 开源推进者 (自 2019 年持续开源至今)

欢迎跟我交朋友:

如果微信加不上,可以公众号留言你的微信号,我加你。

让我们一起积极向上,为自己而努力奋斗!

🍺 周刊合作伙伴

持续招募中...

🔥 行业事件摘要

✅ 知名软件 xz-utils 投毒事件

这是发生在 2024年3月底 的重大安全事件,攻击者 3年 磨一剑,以正常贡献者的身份提交了 3年 代码后,在近日开始发起极其隐秘的攻击。

而本次攻击中,有一段代码仅仅是多了一个句号而已,就能让编译失败,从而产生漏洞 (由此可知写代码一定要严谨啊!)。

幸运的是,一名工程师在测试是发现内存异常,从而顺藤摸瓜发现该问题并报告。

如果这个问题没被发现,其产生的后果将会是安全领域核弹级别的影响。

更多内容,可以访问 [了解更多](www.zhihu.com/question/65...) 进一步了解。

✅ 前端都爱听的 Web Worker 播客听友聚会

什么?你还不知道 Web Worker

听听这期 No.41 和 Vue.js & Vite 作者尤雨溪聊项目进展、开源社区协作和前端思考,这可是采访了 Vue祖师爷 的播客啊!

那么分享一下本次聚会的照片啦~

更多精彩内容,欢迎关注 前端都爱听的Web Worker播客 ~

Web WorderElectron-Vite 作者 草鞋没号 的播客对话

草鞋哥:

本人也是帅哥一枚,刚好正在找工作,大家有合适的机会可以捞一下。

那么本期 Web Worker草鞋哥 的采访链接在这里 www.xiaoyuzhoufm.com/episode/660...

大家可以听一下,感受一下大佬对技术,对开源,对生活的感悟。

✅ 科技行业的龙门客栈 昆仑巢

昆仑巢不是本周成立的,但是作为 随易周刊 的开刊之作,还是值得分享一下这个科技界比较重要的事件的。

昆仑巢 成立于 2023年11月18日,曾被央视新闻报道,是一个科技行业的 "龙门客栈",它将成为新时代的车库咖啡,再次为社会做出贡献。

它的使命是,帮助有梦想的人找人、找钱、找工作、找方向...

面向的群体是:

  • 🔌 科技行业失业者
  • 🎓 大学毕业生
  • 🚀 各类创业者
  • 🔍 寻找各种商机的人群
  • 💼 投资人

这是昆仑巢的官网 www.kunlunnest.cn,可以前往了解更多内容。

MoonBit月兔 AI 原生编程语言

这是编程语言大佬张宏波老师老师的新作。

MoonBit 是一个用于云计算和边缘计算的 WebAssembly 端到端的编程语言工具链。

主要优势:

  • 生成比现有解决方案明显更小的 WASM 文件。
  • 更高的运行时性能。
  • 先进的编译时性能。
  • 简单且实用的数据导向语言设计。

目前 MoonBit 的核心仓库 Star 还不多,大家可以动动小手指,一起助力国产编程语言的崛起。

仓库地址:https://github.com/moonbitlang/core

可以访问 https://try.moonbitlang.cn 获得 IDE 环境,无需安装任何软件,也不依赖任何服务器。

✅ 新的 JavaScript 运行时 Bun v1.1 发布

这是发生在 2024年4月1日 的事件,本人一度以为这是一个愚人节玩笑 (因为我从 2月15日 一直等到今天)。

没想到官方真的发布了令人激动的 v1.1 版本。

这个版本有什么特点呢?就是提供了原生的 windows 系统支持。

笔者作为 windows 系统的忠实用户,终于可以不用安装任何虚拟环境的情况下,体验到这个最具人性化的 js 运行时了。

注意到,4月1日 并不是上周的日期。

因为笔者原定周一发布周刊的计划因为去外面吃席两天而有所推迟。

所以,本周刊也会因为外部因素的影响,不会完全按照每周一发布。

💎 优秀作品推荐

kfadmin,多应用快速开发 sass 框架

基于 kfadmin 快速创建属于自己的多应用 Saas 框架。

kfadmin 是一套基于最新技术的研发的多应用 Saas 框架,支持在线升级和安装模块及模板拥有良好的底层架构、成熟稳定的技术解决方案、提供丰富的扩展功能。

以上截图中都是基于 kfadmin 框架快速开发的应用,有兴趣的就去看看吧。

简历bot,找理想工作,就用 简历bot

简历Bot 是基于 ai大模型 技术实现的新一代智能简历工作台,大厂高薪同学都在用的简历制作工具。

除了漂亮、专业的简历模板,还有 Ai 根据招聘要求一键生成简历内容、智能纠错、修改简历、综合评分、智能证件照等超多、超牛 ai 能力加持。

想找不到工作都难!

httpsok,便捷的 HTTPS 证书自动续签工具

行命令,一分钟轻松搞定 SSL 证书自动续期。

  • 简单高效一行命令,一分钟轻松搞定 SSL 证书自动续签。
  • 自动检测无需关心 nginx 配置,自动识别证书配置,适合老旧系统、复杂配置的生产环境。
  • 泛解析、多域名、多服务器轻松搞定。
  • 证书监控对于即将失效的证书,提供公众号推送提醒。
  • 兼容性好兼容主流的 Linux 系统 DebainCentOSUbuntuTencentOS 等。

ast-grep,搜索和重构代码利器

ast-grep 是一个基于 AST 的工具,用于通过模式代码搜索代码。

将其视为您的老朋友 grep,但它匹配 AST 节点而不是文本。

您可以像编写普通代码一样编写模式,它将匹配具有相同语法结构的所有代码。

您可以使用 $ 符号 + 大写字母作为通配符,例如 $MATCH,匹配任何单个 AST 节点。

将其视为 REGEX.,但它不是文本。

memfiredb,轻松构建小程序、Web 网站、移动应用

更加适合中国宝宝的一体化云开发平台,MemFire Cloud (memfiredb.com),可以轻松构建小程序、Web%25EF%25BC%258C%25E5%258F%25AF%25E4%25BB%25A5%25E8%25BD%25BB%25E6%259D%25BE%25E6%259E%2584%25E5%25BB%25BA%25E5%25B0%258F%25E7%25A8%258B%25E5%25BA%258F%25E3%2580%2581Web "https://memfiredb.com)%EF%BC%8C%E5%8F%AF%E4%BB%A5%E8%BD%BB%E6%9D%BE%E6%9E%84%E5%BB%BA%E5%B0%8F%E7%A8%8B%E5%BA%8F%E3%80%81Web") 网站、移动应用。

静态存储超限停止,避免恶意访问导致的巨额扣费。

自带了邮箱、短信、小程序和微信二维码登录认证体系,无需自己开发,开箱即用。

提供了实时数据库,可以非常简单方便地实现聊天室,实时通讯,互动小游戏等功能。

如果你需要快速启动项目,专注于自己的业务开发,不妨来试试它吧~

✒️ 干货文章分享

✅ 对于 Flutter 快速开发框架的思考

✅ 使用 GPTNode.js 重新润色的平滑文档

使用 gpt 大模型对 Node.js 文档进行了重新润色。

相比于官方文档,平滑文档更利于阅读和理解,小白也能看得懂。

v-model 原理详解

我们每天都在用 v-model,并且大家都知道在 vue3v-model:modelValue@update:modelValue 的语法糖。

那你知道 v-model 指令是如何变成组件上的 modelValue 属性和 @update:modelValue 事件呢?

v-model 指令转换为 modelValue 属性和 @update:modelValue 事件这一过程是在编译时还是运行时进行的呢?

✅ 为什么 defineProps 宏函数不需要从 vueimport 导入?

我们每天写 vue 代码时都在用 defineProps,但是你有没有思考过下面这些问题。

  • 为什么 defineProps 不需要 import 导入?
  • 为什么不能在非 setup 顶层使用 defineProps
  • defineProps 是如何将声明的 props 自动暴露给模板?

🧊 开源更新资讯

knip 前端项目剪裁。

  • 🌐 github https://github.com/webpro/knip
  • 📦 发布版本 v5.2.2 - v5.7.0
  • 🎉 亮点更新
    • 引入了新的模块解析器 resolve 作为默认解析器。
    • 添加了对 jest 插件的 testSequencerglobalSetup 的支持。
    • 新增了 wrangler 插件。
    • 引入了 --include-libs 标志以包含库文件的分析。
    • 支持了标记重新导出和动态导入,以更好地处理未解析的导入。
    • 添加了新的命令行选项,如 --files,简化了用户操作

这是一个在 JavaScriptTypeScript 项目中查找未使用的文件、依赖项和导出内容的工具。

这个工具的更新一直非常勤快,目前一共发布了 300多个 版本。

本周一共发布了从 v5.2.2 - v5.7.0 之间的 8个 版本,可谓是版本狂魔。

这些更新展示了 knip 在功能扩展、问题修复、性能优化和用户体验提升方面的持续进步。

verdaccio 轻量级 Node.js 私有代理注册表

  • 🌐 githubhttps://github.com/verdaccio/verdaccio
  • 📦 发布版本 v5.30.0v5.30.1v5.30.2
  • 🎉 亮点更新
    • 在版本视图上,有一个允许语义版本控制筛选的新筛选器。

简而言之,这是一个可以让你部署一个属于自己的 npm包 仓库的软件。

本周发布了 v5.30.0v5.30.1v5.30.2 几个版本,看的出来主要是更新了 v5.30 版本和对其打补丁。

本次更新的最大亮点就是,在版本视图上,有一个允许语义版本控制筛选的新筛选器。

其余的变化就是功能上的完善,问题修复和依赖更新了。

下一个大版本 v6 已经发布了 v6.0.0-beta.2,不知道会带来哪些变化呢?让我们拭目以待,笔者将会持续报道。

redis-smq 基于 RedisNode.js 消息队列库

  • 🌐 github https://github.com/weyoss/redis-smq
  • 📦 发布版本 v8.0.0-rc.0 - v8.0.0-rc.20
  • 🎉 亮点更新
    • 发布候选版本。

这是一个简单,高性能,基于 Redis 实现的 Node.js 消息队列库。

2023年3月26日 发布的 v7.2.3 版本后,这个库已经有一年多没有发布新的版本了。

而从 2024年12月19日 发布了 v8.0.0-rc.0 以来,一直到本周,一共发布了 20个RC(候选) 版本。

新的大版本,包涵了方方面面的更新和调整,由于 8.0 正式版还没发布,那么我们暂且先拭目以待吧。

mikro-orm,支持各种数据库的 Node.js ORM

  • 🌐 githubhttps://github.com/mikro-orm/mikro-orm
  • 📦 发布版本v6.1.12
  • 🎉 亮点更新
    • 修复了实体赋值和 $and 条件内联的 Bug
    • 改进了 CLI 命令的反馈信息。
    • 引入了新的装饰器用法和 PostgresJSON 操作符。
    • 提升了 Postgres 外键加载的性能。

这是一个 ORM 界的多面手,支持 MongoDBMySQLMariaDBPostgreSQLSQLite 数据库,可以说是数据库界的大半壁江山了。

那么什么是 ORM 呢?

ORM,全称为 对象关系映射 (Object-Relational Mapping),是一种编程技术,用于在关系型数据库 (如 MySQLPostgreSQL 等) 和对象之间进行数据转换和映射。它的主要目的是简化数据库操作,允许开发者使用面向对象的方式来处理数据,而不需要编写大量的 SQL 语句。

happy-dom,没有图形用户界面的 Web 浏览器的 JavaScript 实现

  • 🌐 github https://github.com/capricorn86/happy-dom
  • 📦 发布版本 v14.3.9
  • 🎉 亮点更新
    • 修复了监视存储中属性的问题。

咋一看有点懵逼,什么是没有图形界面的 Web 浏览器的 JavaScript 实现呢?

言简意赅地说就是:模拟浏览器

看一段代码。

javascript 复制代码
import { Browser, BrowserErrorCaptureEnum } from 'happy-dom';

const browser = new Browser({ settings: { errorCapture: BrowserErrorCaptureEnum.processLevel } });
const page = browser.newPage();

// 跳转到一个网址
await page.goto('https://github.com/capricorn86');

// 点击网址中的某个链接
page.mainFrame.document.querySelector('a[href*="capricorn86/happy-dom"]').click();

// 点击完毕后,等待所有事件(包括页面加载,接口请求等)完成
await page.waitUntilComplete();

// 输出 "GitHub - capricorn86/happy-dom: Happy DOM..."
console.log(page.mainFrame.document.title);

// 中断所有操作并关闭浏览器
await browser.close();

发现它适合用来干嘛了吗?没错,爬虫!

当然啊,场景当然不会如此单一,自动化测试,网页签到等等,那就看你的想象力了。

glances,跨平台的系统监控

  • 🌐 github https://github.com/nicolargo/glances
  • 📦 发布版本 v3.4.0
  • 🎉 亮点更新
    • 这个更新内容没看懂,去年 3月份 发过一次 v3.4.0 版本,本周又发布了同样的版本,更新内容也没有变化。

Glances 是一个开源系统跨平台监控工具。它允许实时监控系统的各个方面,例如 CPU内存磁盘网络使用情况 等。

它还允许监视正在运行的 进程登录用户温度电压风扇速度 等。

它还支持 容器监控,它支持不同的容器管理 DockerLXC 等系统。

信息显示在易于阅读的仪表板中也可用于通过 Web 界面或命令对系统进行远程监控线路接口。

它易于安装和使用,并且可以自定义为仅显示您感兴趣的信息。

RxDB,一个快速、本地优先、反应式 JavaScript 应用程序数据库

  • 🌐 github https://github.com/pubkey/rxdb
  • 📦 发布版本 v15.13.0 - v15.16.0
  • 🎉 亮点更新
    • 更新 dexie.js4.0.1 版本。
    • 弃用 LokiJS RxStorage
    • 重构了 RxServer 包。
    • 添加了 RxServerKoa 适配。
    • 添加了 RxServerFastify 适配。
    • 添加 PreactSignalsRxReactivityFactory 以使用自定义反应性与 Preact 信号而不是观察对象。
    • 添加 VueRxReactivityFactory 以使用自定义反应性与 Vue 浅引用而不是观察对象。
    • 添加将引用传递给 RxDatabase 以从 Observable() 创建。

RxDB 是一个为 JavaScript 应用设计的快速、本地优先的反应式数据库。它支持离线操作和实时数据同步,能够在多种环境下运行,包括浏览器和 Node.js

RxDB 的主要特点包括:

  • 本地优先:在本地存储数据,支持离线使用,并能在恢复网络连接时同步到远程服务器。
  • 反应性:数据库变化可以实时反映到应用界面,提供流畅的用户体验。
  • 跨平台兼容:适用于 Web、移动和桌面应用,确保数据在不同设备间的一致性。
  • 灵活的架构:支持丰富的数据结构和查询功能,易于扩展和维护。

RxDB 适用于需要高效数据管理和实时数据交互的应用场景,如在线/离线兼容的应用程序、实时协作工具、内容管理系统等。

更新点评

本周更新内容还是比较大的,尤其是弃用 LokiJS 和更新 dexie.js4.0.1 版本。

因为 dexie.js 也是本周才更新到 v4 版本的,rxdb 能够这么快就跟进,属实神速啊!

那么还有一个内容,不得不说了,那就是还处于 Beta 中的 RxDB Server,可以把本地的数据同步到后端。

这样呢,做本地优先,然后又能进行云端同步的应用就非常方便啦。

vite,下一代前端构建工具,讲究一个字 "快"!

  • 🌐 github https://github.com/vitejs/vite

  • 📦 发布版本 v5.2.7

  • 🎉 亮点更新

    • 常规:弃用 splitVendorChunkPlugin 插件。
    • 新特性 (热模块替换):当创建或删除 HTML 文件时重新加载。

更新点评

本次更新,创建或删除 HTML 文件重新加载,倒是一个小亮点。

至于弃用 splitVendorChunkPlugin 插件,这是一个比较久的遗留问题了。

而在 Vite 6 到来之后,这个插件将会从 Vite 中彻底移除。

Vite v2.8 之前,打包策略是将 chunk 分割成 indexvendor 两部分。

这对一些 SPA 来说是好的策略,但是要对所有应用场景提供一种通用解决方案是非常困难的。

Vite 2.9 起,manualChunks 默认情况下不再被更改。

你可以通过在配置文件中添加 splitVendorChunkPlugin 来继续使用 分割 Vendor Chunk 策略。

那么本周呢,这个插件也被从 Vite 中被标记为废弃了。

问题来了,我们应该用什么进行分割打包呢?

官方的建议是直接使用 build.rollupOptions.output.manualChunks 配置自定义分割策略。

daisyui,基于 Tailwind CSSUI 组件库

基本介绍

DaisyUI 是一个基于 Tailwind CSSUI 组件库,提供预设的、可定制的组件,用于快速构建响应式的网页界面。

  • 🌐 github https://github.com/saadeghi/daisyui
  • 📦 发布版本 v4.8.0 - v4.9.0
  • 🎉 亮点更新
    • 支持在 iOS 15 上的 Safari 浏览器中使用 OKLCH 颜色。
    • 复选框/切换按钮即使设置了 checked="true",也不会强制视觉上显示已选中的值了。

我自己还没用过这个 UI 框架,但是我对前端比较知名的技术都有所关注。

对于使用 tailwindcss 的朋友来说,这个框架对于开发提效非常显著,也能做出效果不错的前端效果。

dbeaver,通用数据库管理工具

基本介绍

DBeaver 是一个通用数据库管理工具,支持多种数据库系统,提供直观的用户界面,用于执行查询、浏览数据、管理数据库结构和导入导出数据。

它适用于开发者、数据库管理员和数据分析师,旨在简化数据库操作和提高工作效率。

  • 🌐 github https://github.com/dbeaver/dbeaver
  • 📦 发布版本 v24.0.0 - v24.0.1
  • 🎉 亮点更新
    • 支持嵌套的 CASE 语句。
    • 增加了对共享 SSH 会话的支持。
    • 支持 INSERTUPDATEDELETE 的高亮显示、验证和大纲。
    • 支持 QUALIFY 关键字。
    • 为新的外键自动创建引用列。
    • 增加了对 SVG 图标的支持。

这是全新的 v24 版本,3周前 发布了 v24.0.0,本周进行了小幅修订发布了 v24.0.1

长久以来,在数据库工具领域,企业级+免费 一直是硬币的两面,难以共存。

但是,DBeaver 做到了,免费版已经提供了大量企业级的功能,而且更新如此勤快,真乃开源界劳模。

不过,美中不足的就是,软件体验略慢,不过跟它提供的功能比起来,这个缺点不足一提了,加大电脑内存就是了。

tmuxp,基于 Tmux 的命令行工具

  • 🌐 github https://github.com/tmux-python/tmuxp
  • 📦 发布版本 v1.44.0 - v1.45.0
  • 🎉 亮点更新
    • py(deps):libtmux 升级 0.35.1 -> 0.36.0
    • Linting:激进的 ruff pass (ruff v0.3.4)

Tmuxp 是一个基于 Tmux 的命令行工具,用于快速配置和管理 Tmux 会话。

它允许用户通过预定义的配置文件 (称为 profiles) 来保存和加载复杂的 Tmux 会话布局,从而简化了 Tmux 的使用和配置过程。

Tmuxp 使得开发者能够高效地组织多个终端窗格和窗体,提高工作效率。

随易点评

这个不是前端界的软件,是 linux 相关的内容。

虽然我是一个前端,但是我对后端、运维、测试等都保持着关注。

朋友们,要开括眼界,不要死守一个阵地,你可以不会,但你最好知道有这么个东西。

如果你不知道,那么关注随易周刊就对了,每周来开开眼,让眼界升华。

farm,用 Rust 编写的极快的 Vite 兼容 Web 构建工具

  • 🌐 github https://github.com/farm-fe/farm
  • 📦 发布版本 v1.0.0 - v1.0.11
  • 🎉 亮点更新
    • 发布了 v1.0.0

Farm 是一个用 Rust 编写的非常快速的 vite 兼容 Web 构建工具。

它旨在快速、强大和一致,旨在为 Web 开发提供最佳体验,这是真正的下一代构建工具。

由于采用的事 monorepo 的模式管理项目,一个仓库中有多个包的更新内容,所以只挑选了一个最重要的特点分享,那就是发布了 v1.0.0 正式版。

Farm2022年6月26日 初始化仓库以来,一直到 v1.0.0 发布,已经走过了 627 个日夜。

感谢这些在技术圈默默耕耘的大佬们。

随易点评

或许 Farm 目前还不够知名,但是它的创造者也是业内鼎鼎有名的大佬,在技术和质量上都是有所保障的。

目前 Farm 也有它的微信交流群,可以访问官网加入,也可以加我好友,我邀请你。

vue-data-ui,一个新兴的 vue 可视化图表组件库

  • 🌐 github https://github.com/graphieros/vue-data-ui
  • 📦 发布版本没有使用版本模式发布
  • 🎉 亮点更新
    • Tooltip Slot 支持大量组件。
    • 动画效果提升。

Vue-Data-UI 是一个基于 Vue3 的数据可视化组件库,旨在提供用户友好的界面,以优雅地讲述数据故事。

该库赋予用户创建和展示数据可视化的能力,使得数据交流更加直观和有说服力。

worker-timers,页面切换后依旧可以定时的库

  • 🌐 github https://github.com/chrisguttandin/worker-timers
  • 📦 发布版本 v7.1.6
  • 🎉 亮点更新
    • 主要是依赖更新和文档更新。

当站点失去焦点时,使用 setTimeoutsetInterval 会让事情会变得混乱。

在这种情况下,ChromeFirefox 和其他公司会将他们调用这些计时器的频率限制为每秒最多一次。

但是,这仅适用于主线程,不会影响 Web Worker 的行为。

因此,可以通过使用工作线程来执行实际计划来避免限制,这就是 worker-timers 要解决的问题。

wxt,下一代浏览器扩展开发框架

  • 🌐 github https://github.com/wxt-dev/wxt
  • 📦 发布版本 v0.17.8v0.17.9v0.17.10v0.17.11
  • 🎉 亮点更新
    • 使用 defu 合并用户配置。
    • 自动打开 stats.html 文件。
    • 升级到 vue-tsc v2 版本。
    • 增加 {{mode}} 模板变量

开发浏览器扩展,使用这个工具将会非常方便,它具备以下特点:

  • 支持所有浏览器。
  • 支持 MV2MV3
  • 开发模式热重载和快速的页面重新加载。
  • 基于文件的入口。
  • TypeScript
  • 自动导入。
  • 自动化发布。
  • 支持主流前端框架。
  • 快速启动一个新项目。
  • 打包分析。
  • 下载并捆绑远程 URL 导入。

bullmq,基于 Redis 的消息队列

  • 🌐 github https://github.com/taskforcesh/bullmq
  • 📦 发布版本 v5.4.6v5.5.0
  • 🎉 亮点更新
    • 添加 getWorkersCount 方法。

bullmq 是一个基于 Redis 的企业级 Node.js 消息队列框架,提供了多种不同的免费和商业版本。

被众多知名企业使用,对于需要在 Node.js 中使用消息队列的朋友来说,这个是非常靠谱和优秀的。

remeda,为 JavaScriptTypeScript 打造的工具库

  • 🌐 github https://github.com/remeda/remeda
  • 📦 发布版本 v2.0.0-beta.15 - v2.0.0-beta.20
  • 🎉 亮点更新
    • 使用 tsup 进行构建。
    • 使用 type-fest 检测项目。
    • 支持 TypeScript 5.4

这是一个 数据优先 的函数库,什么意思呢?看下方代码对比。

javascript 复制代码
// Remeda
R.pick(obj, ["firstName", "lastName"]);

// Ramda
R.pick(["firstName", "lastName"], obj);

// Lodash
_.pick(obj, ["firstName", "lastName"]);

目前来说,lodash v5 遥遥无期,Remeda 可以作为 lodash 的替代品,拥有更现代化的管理机制和技术驱动。

但是,v2 版本有不兼容性变更,我建议还是等 v2 版本正式发布后再用。

alacritty,跨平台 OpenGL 终端模拟器

  • 🌐 github https://github.com/alacritty/alacritty
  • 📦 发布版本 v0.13.2
  • 🎉 亮点更新
    • 大量问题修复和完善。
    • Vi 模式下的默认 Home/End 绑定分别映射到 First/Last

Alacritty 是一个现代终端仿真器,具有合理的默认值,但允许进行广泛的配置。

通过与其他应用程序集成,而不是重新实现其功能,它设法提供一组灵活的高性能功能。

目前支持的平台包括 BSDLinuxmacOSWindows

看版本就知道了,本次发布仅是一个修订版本。

所以,大的变更是没有的了,主要是 bug 修复和功能完善。

axumRust 语言专注于人体工程学和模块化的 Web 应用程序框架

  • 🌐 github https://github.com/tokio-rs/axum
  • 📦 发布版本 v0.7.5
  • 🎉 亮点更新
    • 修复了直接调用 axum::serve 时克隆层的问题,路由器或方法路由器。
    • h2 不再作为依赖项拉取,除非 http2 功能已启用。

axum 是一个专注于人体工程学和模块化的 Web 应用程序框架。

  • 使用无宏 API 将请求路由到处理程序。
  • 使用提取器以声明方式解析请求。
  • 简单且可预测的错误处理模型。
  • 使用最少的样板生成响应。
  • 充分利用中间件、服务和实用程序的 towertower-http 生态系统。

特别是最后一点是 axum 与其他框架的不同之处。

axum 没有自己的中间件系统,而是使用 tower::Service

这意味着 axum 免费获得超时、跟踪、压缩、授权等。

它还使您能够与使用 hypertonic 编写的应用程序共享中间件。

代码案例

rust 复制代码
use axum::{
    routing::{get, post},
    http::StatusCode,
    Json, Router,
};
use serde::{Deserialize, Serialize};

#[tokio::main]
async fn main() {
    // initialize tracing
    tracing_subscriber::fmt::init();

    // build our application with a route
    let app = Router::new()
        // `GET /` goes to `root`
        .route("/", get(root))
        // `POST /users` goes to `create_user`
        .route("/users", post(create_user));

    // run our app with hyper, listening globally on port 3000
    let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap();
    axum::serve(listener, app).await.unwrap();
}

// basic handler that responds with a static string
async fn root() -> &'static str {
    "Hello, World!"
}

async fn create_user(
    // this argument tells axum to parse the request body
    // as JSON into a `CreateUser` type
    Json(payload): Json<CreateUser>,
) -> (StatusCode, Json<User>) {
    // insert your application logic here
    let user = User {
        id: 1337,
        username: payload.username,
    };

    // this will be converted into a JSON response
    // with a status code of `201 Created`
    (StatusCode::CREATED, Json(user))
}

// the input to our `create_user` handler
#[derive(Deserialize)]
struct CreateUser {
    username: String,
}

// the output to our `create_user` handler
#[derive(Serialize)]
struct User {
    id: u64,
    username: String,
}

next.jsReact 全栈框架

  • 🌐 github https://github.com/vercel/next.js
  • 📦 发布版本 v14.2.0-canary.41 - v14.2.0-canary.54
  • 🎉 亮点更新
    • 添加实验性客户端路由器缓存配置。
    • pprstaleTimes 实验标志添加遥测事件。
    • 正确设置 nextconfigoutput
    • 传递无副作用包的名称。
    • 继承路由的根布局段配置。
    • 自动映射 optimizePackageImports 到页面的 transpilePackages
    • 添加 Next.js 版本到流程标题。

Next.js 被世界上一些最大的公司所使用,它使您能够通过扩展最新的 React 功能并集成强大的基于 RustJavaScript 工具来创建全栈 Web 应用程序,以实现最快的构建。

截至目前,Next.js 一共发布了 2400 多个版本,由此也可以理解为什么 v14.2.0 版本有 50多个canary 版本了。

soybean-admin,清新优雅、高颜值且功能强大的后台管理模板

  • 🌐 github https://github.com/soybeanjs/soybean-admin
  • 📦 发布版本 v1.0.0-beta.1 - v1.0.1
  • 🎉 亮点更新
    • 添加全局搜索组件。
    • 支持 Vite5
    • 添加 gen-route 脚本命令。
    • 添加请求刷新令牌和注销。
    • 添加 sortRoutesByOrder 函数。

一个清新优雅、高颜值且功能强大的后台管理模板,基于最新的前端技术栈。

包括 Vue3Vite5TypeScriptPiniaNaiveUIUnoCSS

很凑巧,本周发布了 1.0 正式版,整体完善,跟进到支持 vite5

hono,小型、简单且超快的跨运行时 Web 框架

  • 🌐 github https://github.com/honojs/hono
  • 📦 发布版本 v4.1.4 - v4.2.1
  • 🎉 亮点更新
    • JWT 支持的算法从 3个 增加到 13 个。
    • 新增 methodOverride 中间件,支持覆盖请求方法。
    • 新增 trimTrailingSlash 中间件,支持去掉尾斜线。

这是一个非常先进的跨 js 运行时 web 框架,具备以下特性:

  • 非常快,路由器 RegExpRouter 非常快。,不使用线性循环。
  • 轻量级,hono/tiny 预设低于 13kBHono 具有零依赖性,并且仅使用 Web 标准 API
  • 多运行时,适用于 Cloudflare WorkersFastly ComputeDenoBunAWS LambdaLambda@EdgeNode.js
  • Hono 具有内置中间件、自定义中间件和第三方中间件。
  • 令人愉快的体验,超级干净的 API,一流的 TypeScript 支持。

根据我最近的调研,bunhono 都在人性化体验上面提供了非常好的支持。

所以,我准备基于 bun+hono 来写我的后端接口应用了,如果你也喜欢,不妨也试试。

ant-design,企业级 UI 设计语言和 React 组件库

  • 🌐 github https://github.com/ant-design/ant-design
  • 📦 发布版本 v5.16.0
  • 🎉 亮点更新
    • 新增 Input.OTP 组件。
    • Tag 组件支持在 closable 中配置 aria 属性。
    • Table 增加 rowHoverable 开启或关闭 hover 效果。
    • Typography 组件支持异步复制。
    • Progress 组件 circle 模式下支持 steps
    • Table 支持 onScroll 事件用于监听表单内容滚动。
    • Typography 省略支持展开和收起。
    • ConfigProvider 支持配置 FloatButton.GroupcloseIcon 属性。
    • Table 支持配置排序的 sorterTooltipTarget 属性。
    • Cascader 支持 optionRender
    • Notification 组件支持在 closable 中配置 aria-*
    • Popovertriggerfocusclick 时能被 ESC 按键所关闭。

ant-design 是一个家喻户晓的前端 React UI 框架,具备以下特性:

  • 提炼自企业级中后台产品的交互语言和视觉风格。
  • 开箱即用的高质量 React 组件。
  • 使用 TypeScript 开发,提供完整的类型定义文件。
  • 应用开发框架和设计工具配套。
  • 数十个国际化语言支持。
  • 基于 CSS-in-JS 的主题定制能力。

经过了 v5.15 的几个小版本迭代后,在最近发布了 5.16 版本,新增了很多小的新功能,修复了很多问题,是一个值得升级的版本。

express,快速、不固执、极简的 Node Web 框架

  • 🌐 github https://github.com/expressjs/express
  • 📦 发布版本 v5.0.0-beta.2 - v5.0.0-beta.3
  • 🎉 亮点更新
    • res.download() 中添加 root 支持。
    • 动画效果提升。
    • 默认 查询解析器 设置为 简单
    • 需要 Node.js 4+
    • 使用 mime-types 进行文件到内容类型的映射。

expressNode.js 早期布道时期的示范性 web 框架,停留在 v4 很长一段时间,我曾一度以为 v5 不会再问世了,没想到如今距离 v5 版本的发布,应该也不会太远了。

而且,作为最低支持 Node.js v4+ 版本的框架来说,这兼容性也是无敌了。

但是呢,我个人还是不建议使用 express 的,因为它很多东西都需要自己手动配置。

很多人会说,手动配置挺好的,用什么就配什么,多方便啊。

我想说的是,不同的人,水平,经验,习惯不用,配置出来的东西具备浓浓的个性。

几乎没有多少迁移性,扩展性,团队配合性,很多时候只是自我感觉良好而已。

那么我推荐使用集成度,或者生态更集中的框架,比如:nestfastifyhono 等。

不要用 express 啦,也不要用 koa,它俩一个半斤,一个八两。

当然,请不要误会,并没有贬低的意思。

只是说,作为一个负责人的软件工程师,开发项目请认真选择,不要儿戏。

wewe-rss,优雅的微信公众号订阅方式

  • 🌐 github https://github.com/cooderl/wewe-rss
  • 📦 发布版本 v2.0.0 - v2.2.3
  • 🎉 亮点更新
    • 使用 v2 API
    • 更新后自动冻结帐户。
    • 添加文章重试。
    • 支持更新全部。
  • v2.x 版本使用全新接口,更加稳定。
  • 支持微信公众号订阅 (基于 微信读书)。
  • 后台自动定时更新内容。
  • 微信公众号 RSS 生成 (支持 atom.rss.json 格式)。
  • 支持全文内容输出,让阅读无障碍。
  • 所有订阅源导出 OPML

更优雅的微信公众号订阅方式。

很有意思的项目,对于喜欢阅读微信公众号的朋友来说,用这个的体验提升了一大截。

不过,这个需要自己部署,并不是注册账号就能用,对于编程经验还没有那么丰富的朋友来说,还是有点难度的。

bullmq

  • 🌐 github https://github.com/graphieros/vue-data-ui
  • 📦 发布版本 v2.0.0-beta.15 - v2.0.0-beta.20
  • 🎉 亮点更新
    • shiy
    • 动画效果提升。

🎲 有趣好玩一览

✅《吞噬星空 2·起源大陆》发布

stellarium,开源的星空星图查看软件

相关推荐
monkey_meng2 分钟前
【遵守孤儿规则的External trait pattern】
开发语言·后端·rust
虾球xz14 分钟前
游戏引擎学习第20天
前端·学习·游戏引擎
Estar.Lee17 分钟前
时间操作[计算时间差]免费API接口教程
android·网络·后端·网络协议·tcp/ip
我爱李星璇20 分钟前
HTML常用表格与标签
前端·html
疯狂的沙粒23 分钟前
如何在Vue项目中应用TypeScript?应该注意那些点?
前端·vue.js·typescript
小镇程序员39 分钟前
vue2 src_Todolist全局总线事件版本
前端·javascript·vue.js
野槐41 分钟前
前端图像处理(一)
前端
程序猿阿伟1 小时前
《智能指针频繁创建销毁:程序性能的“隐形杀手”》
java·开发语言·前端
疯狂的沙粒1 小时前
对 TypeScript 中函数如何更好的理解及使用?与 JavaScript 函数有哪些区别?
前端·javascript·typescript
瑞雨溪1 小时前
AJAX的基本使用
前端·javascript·ajax