JavaScript全栈开发前景2023
#javascript #网络开发人员 #typescript #fullstack

年底是忘记过去的错误并对未来进行积极窥视的好时机。因此,作为一个狂热的JS/TS全栈开发爱好者,我决定鼓起勇气,并在未来一年做出一些预测。他们可能都非常有争议,因此希望他们能引起更有意义的讨论,我渴望听到您的意见。

边缘部署成为主流

无论您是否使用过它,您都必须反复听到有关2022年“在边缘上运行”的消息。Web开发生态系统继续被优化痴迷于优化,并支持在边缘运行,用于框架构建者,不仅是一件很酷的事情,而且现在必须是必须的:

  • Next.js将其“实验边缘” API路由毕业至GA。其Beta“ React Server组件”支持和新的数据加载模式完全兼容。
  • nuxt.js 3.0完全重建了其服务器引擎,并完全支持在Edge部署上运行。
  • 混音正在积极促进在Cloudflare工人等边缘服务上的部署。
  • Sveltekit 1.0经过如此漫长的等待,终于降落了,绝对没有错过Edge的支持。

从最简单的意义上讲,Edge被升级为支持运行自定义代码;因此,它不仅可以为客户提供静态资产,而且可以为客户提供动态内容。实施边缘计算的挑战是安全,便宜,始终如一地执行代码。

像CDN一样,边缘网络应该大规模部署并在许多租户中共享。这需要孤立的执行环境(因此数据不能在租户之间泄漏),占地面积很小(因此可以经常创建和处置上下文而不会伤害性能)。 Nodejs太肿了,无法成为可行的解决方案。 Slimmer JavaScript Runtimes,例如Next.js的edge runtime,Cloudflare的workerdDeno deploybun,是为了履行这一专业工作的创建。

今天,大多数Web应用程序仍在传统托管环境中部署。许多人很有可能会尝试部署边缘,有些人最终会安定下来。有了更适合开发人员友好的框架及其与托管提供商的更好集成,您通常可以在没有太大的代码更改并立即享受一些好处的情况下迁移到边缘:

  • SSR页面应立即在许多情况下加载速度
  • 边缘网络可以缓存您的数据以减少数据存储的负载
  • 内容个性化更容易实现,因为可以在边缘上做出决策
  • 您可能会获得更低的成本
  • ,您可能会获得更好的结果

但是边缘不是银弹。关于其未来的最大灰色区域之一是数据获取。当今的大多数数据库仍然不可分发,这很快就会改变。从边缘网络访问中央部署的数据库(如果不正确)可能会使性能变得更糟。查看以下视频进行测量测试:

这就是为什么Prisma甚至积极发展和倡导其面向边缘的Data Proxyhonestly claimed that

作为最佳实践,我们仍然建议通常尽可能地将您的数据库部署到API服务器,以最大程度地减少响应时间的延迟。

在移至边缘之前,绝对是您应该称重的东西。如Prisma所暗示的那样,缓解措施是将您的边缘网络局限于足够接近数据库的区域。某些框架,例如Next.js,已经支持在路线级别配置边缘区域。好吧,如果您已经在使用全球分布式的数据存储,我什么也没警告您,但请发送我的祝贺ð。

关于数据加载模式的辩论未解决

尽管开发人员仍在整理CSR,SSR,SSG,ISR等。这引起了很多兴奋,可以使未来的Web应用程序更好地表现,但无疑使事情变得更加令人困惑。但是,这个想法非常酷:服务器组件在服务器上呈现,它们的代码仍在上面。它可能会大大减少客户捆捆的大小,但同时使网络边界比以前更模糊。结果,您的应用程序的行为很难推理。

查看我的其他帖子,以对Next进行更全面的解释。JS13的RSC:

关于将数据加载到全栈网络应用程序中的最佳方法的无尽辩论,并且它将继续变得更加加热,因为没有一个最佳解决方案适合所有方案:

同时,不要忘记,如Vue和Svelte这样的非反应生态系统根本没有服务器组件的概念,他们的开发人员做得很好。另一个有趣的事件是Remix's joining Shopify。 Shopify的前端框架Hydroden最初押注RSC。至少目前,有效地获取混音意味着它正在改变方向。这是Vue的创建者的一个有趣评论:

Twitter from YouYuXi

那么,您应该如何在这个混乱的世界中生存?我建议根据其他方面评估您坚持的框架。通常,现代框架不会使您的数据加载机制严重失败。它们具有不同的偏好和重点,但通常具有足够好的解决方案,以适应大多数情况。我喜欢使用“杠杆”作为隐喻的Remix's idea

Data loading as levers

框架将提供所有杠杆,但要拉动您的责任。

API的褪色

当然,我并不是说API正在消失。它们是网络的生命线,将变得更加重要。但是,在使用JavaScript框架的全堆栈开发的背景下,明确设计和实施API的必要性越来越小。他们正在褪色。

例如,从技术上讲,Next.js的getServerSidePropsgetStaticProps是API,尽管您从未从客户端代码中明确调用它们。 Remix中的loaderaction以及Sveltekit中的load函数也是如此。网络通信(包括时机和格式)都非常封装,以至于您几乎不知道它们是API。您的客户端和服务器代码也自然共享类型定义(如果使用Typescript,是的,应该)。这些可能会解决您对SSR,SSG的所有要求以及客户端互动的一部分。

大多数框架还允许您创建“显式” API端点,以支持更灵活的客户端交互。您的最初本能可能是,我应该使用它构建静止的或GraphQl服务吗?但是,让我们再考虑一下:您的代码已经在monorepo中,客户端和服务器端代码紧密地坐在一起,用相同的语言编写。那么,为什么您要麻烦引入工具链并在它们之间建立如此庄严的沟通规范呢?

REST or GraphQL

tRPC提供了一种绝妙的方法,可以减少严格的解决问题。它可以充分利用您的设置:MonorePo,统一框架,通用语言(TS),并有效地将API构造变成写作方法并调用它们。这是让API以与框架无关的方式消失的另一种方法。

明显的牺牲是:您的API现在紧密地绑定到您的应用程序(甚至是特定框架),并且不容易被第三方消耗。但实际上,这通常不是太多关注。

框架的数据加载功能和从TRPC等野生想法的推动力更强,2023年,我们应该看到更多的人对构建API的“不太认真”感到满意,而更多地专注于构建他们的产品。

网络IDE的受欢迎程度

工具和框架的进步不仅为我们提供了更多解决问题的力量。他们在工作时也使它成为一种更挑剔的经历。值得您注意的特定领域是基于浏览器的IDE。

人们多年来一直在使用诸如jsfiddle之类的工具进行快速实验,但仅限于玩客户端的东西。但是,成熟的Web IDE在2022年快速成熟。你。 Gitpod采用了类似的技术,但在深入发展生命周期方面看起来更雄心勃勃。
最令人兴奋的是StackBlitz。使用Web组件(称为WebContainer)实施完整的NodeJS实现,它采取了勇敢的步骤。这样,您的后端代码可以直接在浏览器内部运行。无需旋转远程容器,也无需在整个网络上来回传输数据。这是一个真正的本地环境。这种方法听起来像是解决问题并将Web ID变成主流用法的唯一实用方法。

它仍然是一个不成熟的领域,但似乎正在快速发展。因此,我确实相信在2023年,至少对于诸如代码审查或临时错误解决的任务。

,都有认真的收养机会。

在末尾

我真诚地感谢大家在今年年底之前与我在一起。对于世界上许多地方来说,这是另一个粗糙的地方。该病毒仍在传播,通货膨胀率一直在高高,更糟糕的是,战争仍在进行。尽管世界充满了愚蠢,但您无法控制,学习,编程和分享想法一直是一个很好的安慰。技术的进步,尤其是在OSS开发中,不同民族联手并超越了他们的自身利益,证明我们仍然是一个充满希望的物种。

我祝大家新年快乐,并希望未来的生活繁荣。正如亚历山大·杜马斯(Alexandre Dumas)所说,所有人类的智慧都是用两个词来概括的:等待和希望。

新年快乐ð!


P.S。我们正在构建ZenStack - 一种工具包,用于使用Next.js + Typescript构建安全的CRUD应用程序。我们的目标是让您节省时间编写样板代码,并专注于构建重要的内容。