鸽了 3 年的 Egg 3.0 带来了一个好消息!

简介: 鸽了 3 年的 Egg 3.0 带来了一个好消息!

点击预约 NodeParty 线上直播哟👇🏾


8月8日,NodeParty 线上直播,多位 Node.js 领域专家邀你一起云端相聚,快来预约直播吧!

EggJS 开源已经 7 年了,它的初心是能帮助前端架构师孵化出适合团队业务场景的上层框架,为此它提供了一套 Loader 规范以及延伸出的插件和框架能力,并支持渐进式的研发模型,从而很好的帮助开发者解决了企业框架的差异化定制与统一维护问题。



在具体实现上,其实 egg-core 这个库才是框架的框架的承载者,egg 则是一个集成了常用插件列表的可以开箱即用的应用框架。这是当时设计上的一个局限性,虽然也正因如此让 EggJS 在社区使用更广泛,但毕竟给上层框架的定制带来了一些束缚。

同时在那个时代,Typescript 还不像今天这样成为事实标准,采用 JavaScript 并拥抱 TC39 的规范才是当时的主流共识。虽然我们后续通过 Declaration Merging 的方式,很好的解决了 Loader 动态加载带来的智能提示问题。但插件的 d.ts 生态这块一直没有很好的维护。在应用层可以完全使用 TS 的情况下,使用 TS 重写 EggJS 底层代码是一个 ROI 不太高的事,毕竟谁也没想到 ESM 在未来几年的时间内居然发展的如此之慢。尽管如此,EggJS 为什么不基于 Typescript 编写,以及何时能支持更加彻底的 Typescript 编程界面而非约定优先的 Javascript 挂载风格,类似这样的讨论几乎伴随着整个 EggJS 自身的发展周期内。

2019 年 4 月的时候,EggJS 3.0 的里程碑第一次被确立下来,彼时 EggJS 团队的声音还是倾向于基于 ES Module 开发,更好的支持云原生为主要的演进方向,因为我们判断 BFF 到了一个需要 Serverless 解决运维成本的时候了,更多精力投入到了这一块探索中,对于这一个目标而言,更多的投入是在于 PaaS 和 中间件服务 的云原生化,在应用框架这一层现有的定制能力基本能满足。

之后因为种种原因,EggJS 3.0 最终没能在当年预设的十月如期发布,可能发布 3.0 Milestone 的 贯高 自己也没想到,这一鸽就到了 2022 年。

直到 2021 年我们重启了 Egg 3.0 的项目,产出了第一份 3.0 RFC(https://www.yuque.com/egg/3.0/rfc-v1),又重新吸引回小伙伴们的目光,最后经过各方的讨论,我们决定在 RFC 的基础上继续做一个能更加彻底解决 EggJS 维护过程中的痛点,同时可以满足各个小伙伴所在公司需求的全新驱动内核,更纯粹的框架的框架。



  • 更纯粹的框架的框架:提供插件复用能力及上层框架封装能力,渐进式的研发体验,初心不能忘。
  • 协议请求处理模型:不再基于 Koa,同时剥离原来的各种协议相关的内置插件,不再局限于 HTTP 场景。
  • 基于 IoC 的挂载机制,拥抱 TypeScript。
  • 基于 Manifest 的加载机制,新增构建期行为,增强企业级的扩展能力。

正如同 Egg 是框架的框架,拉丁语是英语的源头,因此我们把这个框架起了一个新的名字:Artus,它来自于拉丁语的框架。

Artus 刚刚面世,还在持续完善中,不过也是时候跟大家打个招呼了,我们将在支付宝体验科技举办的 NodeParty 2022.08.08 线上直播中分享跟它相关的故事,欢迎关注。


相关文章
|
2月前
|
人工智能 监控 JavaScript
从零开始学MCP(4) | 连接 MCP 客户端:从聊天机器人到智能体
本指南详解2025年如何打通Claude、Cursor及自定义客户端,构建企业级AI智能体系统。涵盖MCP双向通信架构、主流客户端连接配置、智能体系统实战、安全认证、性能优化及部署方案,助你掌握下一代AI应用核心技术。
|
8月前
|
JavaScript 安全 前端开发
Gzm Design:开源神器!用 Vue3、Vite4、TypeScript 革新海报设计,免费开源的海报设计器,主流技术打造,轻松高效
海报设计在各个领域都有着广泛的应用,无论是商业广告、活动宣传还是个人创意表达。今天要给大家介绍一款免费开源的海报设计器——Gzm Design,它基于最新的主流技术开发,为用户提供了丰富的功能,让海报设计变得轻松又高效。
487 64
|
JSON JavaScript API
「AIGC」NodeJs使用openai流式请求与非流式请求
本文档是关于使用Node.js与OpenAI API交互的教程,涵盖了非流式和流式请求。非流式请求示例展示了如何一次性返回所有数据,适用于兼容性但可能需要较长时间。流式请求则演示了如何即时响应数据,提高交互体验,但可能不适用于所有系统。代码示例使用了axios库和http模块,展示了如何处理数据流。
877 0
|
XML IDE 前端开发
IDEA忽略node_modules减少内存消耗,提升索引速度
在后端开发中,IDEA 在运行前端代码时,频繁扫描 `node_modules` 文件夹会导致高内存消耗和慢索引速度,甚至可能会导致软件卡死。为了改善这一问题,可以按照以下步骤将 `node_modules` 文件夹设为忽略:通过状态菜单右键排除该文件夹、在设置选项中将其加入忽略列表,并且手动修改项目的 `.iml` 文件以添加排除配置。这些操作可以有效提高IDE的运行性能、减少内存占用并简化项目结构,但需要注意的是,排除后将无法对该文件夹进行索引,操作文件时需谨慎。
1046 4
IDEA忽略node_modules减少内存消耗,提升索引速度
|
运维 监控 Linux
Linux本地部署1Panel现代化运维管理面板并实现公网访问
Linux本地部署1Panel现代化运维管理面板并实现公网访问
792 1
|
监控 NoSQL MongoDB
mongodb查询100万数据如何查询快速
综上,提高MongoDB百万级数据的查询性能需要综合多项技术,并在实际应用中不断调优和实践。理解数据的特征,合理设计索引,优化查询语句,在数据访问、管理上遵循最佳的实践,这样才能有效地管理和查询大规模的数据集合。
671 1
|
JavaScript 前端开发
JS常用数据类型转换(数字型和字符串型之间转换)
JS常用数据类型转换(数字型和字符串型之间转换)
426 2
|
前端开发 JavaScript API
MonacoEditor 加载很慢该怎么优化?
MonacoEditor 加载很慢该怎么优化?
2677 0
|
存储 NoSQL 关系型数据库
何时使用MongoDB而不是MySql
MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统。MySQL 是一个关系数据库系统,以结构化表格格式存储数据。相比之下,MongoDB 以更灵活的格式将数据存储为 JSON 文档。两者都提供性能和可扩展性,但它们为不同的应用场景提供了更好的性能。
444 1
何时使用MongoDB而不是MySql
|
前端开发 JavaScript UED
浏览器之性能指标-CLS(一)
浏览器之性能指标-CLS
483 0