当前位置: 首页 > news >正文

2025远离Deno和Fresh

原创作者:庄晓立(LIIGO)
原创时间:2025年6月6日
原创链接:https://blog.csdn.net/liigo/article/details/148479884
版权所有,转载请注明出处!

相识

Deno,是Nodejs原开发者Ryan Dahl重新设计并组织开发的JS/TS运行时平台。

Fresh,是专用于Deno平台的基于Preact实现的WEB开发框架。

这二者都是小众项目。Deno甚至还不如后生小子Bun知名度大;Fresh更不用提了,听过的人很少。

考虑到Deno是破旧立新的开源项目(相对于Nodejs),再加上其传奇的设计师,以及使用Rust语言开发,它对我有天然的吸引力,我对它有天然的亲近感。从0.1到1.0到2.0,我一直关注着它的开发进展,始终报以期望。感觉他们一步一个脚印,开发进展还是很快很扎实的。

2023年初我有一个小项目要做微信公众号后台,技术选型时选到了Fresh,那是我第一次接触Fresh。当时觉得Rust/CSharp/Nodejs的方案都重,Fresh更轻量级。

选型Fresh起到决定性作用的是如下两篇Deno官方博客上的技术文章:

  • You Don’t Need a Build Step (Fresh没有构建步骤)
  • A Gentle Introduction to Islands (Fresh支持岛屿架构)

为了它我忍了类React/JSX前端(当时有偏见后来觉得真香)。后来又陆续用它做了几个小项目(部分日常使用至今),总体感觉这个Fresh很不错,开发和部署门槛都低,都好用。Fresh引导我首次接触React/Preact,JSX,useState(),我很感激它。

相离

使用Fresh过程中发现了它的一些小毛病,但也无伤大雅:

  • 例1,React/Preact不支持双向数据绑定,需要手动监听表单事件读取新值赋值给状态变量。
  • 例2,Fresh的各种handlers方法签名杂乱不一。
  • 例3,JS中if-else是语句不是表达式不方便嵌入JSX。

部署至Deno Deploy时也遇到过一些棘手的维保问题,不提了,毕竟咱也不是付费用户。

前面说过“没有构建步骤”是Fresh吸引我的一大亮点,是我当初选用Fresh的决定性因素之一。可是2024年初,他们自己阉割了这一特性。让我说什么。我也忍了。

2023年底至2025年初这一年多时间里,Fresh没有实质开发进展。开发人员先是去做JSR,晾了Fresh几个月;回来后挖了个大坑(发起Fresh2),不久又去做Deno2,又晾了Fresh几个月;JSR和Deno2都完事后,依然没有回归开发Fresh2的任何迹象;几个月后才知道人家又被调去开发Deno Deploy新版啦,无语!持续关注一年半,我(LIIGO)几乎天天翻它的源码仓库啊,收获的只是一遍遍的失望。三番五次的被他们“耍”,你说我该不该爆粗口,再痴等傻等我是那个!至此已基本确定放弃关注Fresh。(当然我知道这是开源项目,不该有超出常规的企望。)

fresh-commits

压倒骆驼的最后一根稻草来了。是Deno老大ry前些天发布的一篇辟谣文章,是对近期网络传言“DENO将死”的官方辟谣。读完这篇文章,居然给我一种“辟谣就是实锤”的颠倒感。在辟谣文中,他承认Deno Deploy最初可用全球部署区域是25个,高峰时高达35个,现在仅剩6个了。他解释为这是成本驱动(不挣钱只能压缩成本?)也是使用量驱动(用户跑了?)。他承认以前追求的边缘部署策略已被证实不合时宜(用户不买账呗?),需要重新设计实现。他承认DenoKV不算成功,将来可能要大改。他承认Fresh开发延宕太久让用户失望。再考虑到从Deno 1.0的“反Nodejs”到Deno 2.0的“完全兼容Nodejs”的一百八十度大转身,以上种种,似乎多处印证了这种感觉:他们的重大决策多有失误,数次押宝没押对。是时候反思他们的技术和产业前瞻性了。

2025年,我要远离Deno和Fresh。同时我也送上祝福,希望它们早日凤凰涅槃,卷土重来。希望将来有一天,我还会拥抱它们。

http://www.xdnf.cn/news/908875.html

相关文章:

  • 5G 核心网中 NF 选择机制:基于优先级、权重与负载分担的策略解析
  • 靶场(十九)--靶场体会小白分享--Billyboss
  • Langgraph实战--在Agent中加入人工反馈
  • OLED(SSD306)移植全解-基于IIC
  • 零基础完成 Token 创建的全流程教学
  • 芋道源码 - 本地文件上传配置与实现
  • 【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
  • 配置sudo免密却不生效的问题
  • 【图论 强连通分量】P1653 [USACO04DEC] Cow Ski Area G|普及+
  • for(;;) 和while(1) 的无限循环用法对比,优缺点说明
  • PHP:Web 开发的强大基石与未来展望
  • 给网站添加live2d看板娘
  • 当主观认知遇上机器逻辑:减少大模型工程化中的“主观性”模糊
  • WHAT - script type=“module“
  • 通过Spring AI框架搭建mcp服务端说明
  • 【Block总结】DBlock,结合膨胀空间注意模块(Di-SpAM)和频域模块Gated-FFN|即插即用|CVPR2025
  • FineReport模板认证找不到模板
  • pyarmor加密python程序
  • 【DAY41】简单CNN
  • 深入浅出Java ParallelStream:高效并行利器还是隐藏的陷阱?
  • 【使用conda】安装pytorch
  • python:基于pyside6的桌宠源码分享
  • java面试场景提题:
  • 全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学
  • 数字孪生:如同为现实世界打造的“克隆体”,解锁无限可能
  • RabbitMQ 队列模式
  • CRM管理软件的审批流程设计与优化:提升企业运营效率的关键策略
  • DLL动态库实现文件遍历功能(Windows编程)
  • 浅谈不同二分算法的查找情况
  • hot100 -- 8.二叉树系列