发个没什么意思的,如何写出“一次编写,到处运行”的JS

当年,为了消除不同架构指令集的差异,人们发明了C语言,写出了可以迁移的操作系统

为了消除操作系统的差异,人们发明了web标准,让浏览器统一标准

现在,又有了各种serverless平台,它们已经套了一层层的抽象,提供不同的Runtime API。

现在,就连JS本身,也不是“一次编写,到处运行”了!JS已经是终端用户手中兼容性最高的语言,但是serverless平台又让它无法到处运行。

我们都知道,如果我们要写一些简单的API,我们可以用Cloudflare Workers、Netlify Functions、Vercel Functions这些serverless的服务,它们免费提供很多次API调用,让你免费托管你的API或者是GitHub镜像站、DockerHub镜像站之类的东西。

但是,如果有一天,你想把你的服务迁移到其他平台呢?甚至,如果你想要写一个大项目,其中涉及到KV数据库等等,并且你还希望能够适应不同的平台呢?

这种方法是存在的!

[Hono](https://hono.dev/)是一个纯JS的Web框架,它可以让你的同一份代码经过较小的改动在不同平台运行。此外它的API很简洁。

此外,还有一个更加全面的选手,[Nitro](https://nitro.unjs.io/),它将KV数据库、SQL数据库、WebSockets等也提供了跨运行时的封装,这意味着你可以用同一份代码操作Cloudflare和Vercel的KV数据库。这个组织叫unjs,意为Unified JavaScript Tools,他们真的想要实现“一次编写,到处运行”的愿景,可谓志向远大。他们的KV层[unstorage](https://unstorage.unjs.io/)也可以单独使用,实现跨运行时的持久化存储。

当然,这些只是愿景,它们能不能真的打破serverless平台之间的隔阂,还很难说。不过,起码有人在尝试。

你说的Nitro是Discord的吗,快送我一年Nitro

技术大佬 支持一把

思路挺好的,但如果这个框架本身死了那就是灾难了。 js会因为兼容性根本 无法运行。