首页 > web前端 > js教程 > 正文

探索用于 JavaScript 模块管理的 JSR

WBOY
发布: 2024-07-26 13:08:23
原创
585 人浏览过

作者:Oyinkansola Awosan✏️

JavaScript 已成为世界上使用最广泛的编程语言。无论您想编程什么,JavaScript 通常都是首选语言。它几乎可以用于任何编程,其声誉取决于其在服务器、移动设备、机器人、浏览器等上运行的能力。

如果不提及用于管理重新存储的 JavaScript 包的 npm 包注册表,就很难讨论 JavaScript 的成功记录。 npm 拥有大约 250 万个软件包和数十亿次下载,从大多数指标来看,npm 都是有史以来最成功的软件注册表。

当然,这并不是说 npm 自 10 多年前创建以来一直是唯一的功能注册表。它之所以能脱颖而出,是因为它的价值主张大于其功能。

然而,npm 早就该有一个“接班人”了。 JavaScript 社区可以使用一种新的注册表,该注册表的设计更能满足当今的编程需求。在本文中,我们将介绍 JavaScript 注册表 (JSR),它是 Deno 用于现代 JavaScript 和 TypeScript 的开源包注册表。

软件注册系统简要回顾

首先,让我们对注册表概念进行高级概述,为 JSR 审查提供背景信息。

注册表是作为第三方包的银行提供的空间。目前,npm 是大多数 JavaScript 和 TypeScript 包的默认注册表。它是数百万个私人和公共包裹的所在地。注册表背后的想法是为开发人员提供解决简单编程问题的材料和发布其包的库。

注册系统通常作为开源库运行,受益于许多贡献者,这说明了它们的高质量。除了 npm 注册表之外,JavaScript 生态系统还有一个新的 TypeScript 和 JavaScript 注册表:JSR。

JavaScript 注册表 (JSR) 简介

与 npm 一样,JSR 旨在充当 JavaScript 和 TypeScript 包的注册表。 JSR 还被设计为 npm 提供的功能的升级。该注册表对所有人开放,可以通过公共测试平台进行访问。

JSR 存储包,主要是 JavaScript 模块的注册表。它采用了 ES 模块标准和其他最近的 JavaScript 创新来满足当前的编程需求。

编码体验的升级意味着 JSR 是发布具有原生 TypeScript 支持的 JavaScript 的地方。在将包转发到注册表之前,您可以编写无需转编译的代码,从而可以使用可重用的 JavaScript 代码进行编程。

此外,JSR 使用更现代的指南和方法来解决传统包管理器的缺点和低效率。 JSR 致力于使模块管理过程更快、更安全,并与当代 JavaScript 技术保持一致。

现代 Web 开发人员发现 JSR 是理想的替代品,因为它的设计强调消除冗余、提高性能和增强安全性。它是一个更复杂的模块管理工具,用于处理依赖项和 JavaScript 模块,超出了预期并超越了 npm、Yarn 或 pnpm 等传统包管理器。

这篇详细的文章通过检查 JSR 的主要思想、优点以及与其他常见包管理器相比的独特性,深入研究了 JSR。本指南将阐明为什么许多人认为 JSR 是 JavaScript 模块管理的未来。

为什么使用 JSR?

我们已经讨论了为什么开发 JSR 以及它如何改进其他包管理器的体验。现在,让我们更具体一点。

DX 改进

JSR 通过以下方式改善了开发人员体验:

  • 自动生成的文档 — 发布包后,JSR 将继续使用您的 JavaScript 文档自动生成文档。这消除了运行不同的文档站点来维护您的包的需要
  • 包评分系统 — JSR 为其用户提供每个包的个性化分数。不同包的得分率鼓励发布包时的最佳实践,并且用户会被告知他们希望探索的包
  • 运行时兼容性标签 — JSR 旨在与多个运行时配合使用。鉴于其与 npm 的兼容性,JSR 与任何 npm 运行时(如 Node、Bun、Cloudware Workers、浏览器等)兼容。但是,JSR 设计时使用 Deno 作为其本机 TypeScript 运行时。使用注册表时,这不会停止其他运行时标签的功能。运行时兼容性标签使用户更容易清楚地知道包适用于哪个运行时。
  • 更好的可审核性 — 通过 JSR 的 ES 模块设计,您可以直接访问包的源代码,而不是转编译和缩小的文件,从而增强了可审核性
  • 减少冗余 — JSR 最重要的组件之一是依赖管理,它不允许冗余。冗余一直是包管理器面临的挑战,因为它们通常会生成加载了相同依赖项的多个副本的大型节点模块。 JSR 通过使用更有效的解决方法来解决此问题,该方法消除了无意义的重复,生成更受控制的更小的项目文件夹。
  • 快速安装 — JSR 的增强性能减少了软件包的安装时间并改进了可靠性管理。此外,JSR 通过消除冗余和应用智能方法帮助开发人员专注于功能开发,使他们免于等待可靠性解决

如您所见,减少冗余、提高安全性和 ES 模块等功能使 JSR 极大地提高了 DX。这可以保证项目保持安全和高性能,降低遇到问题的可能性,并帮助使用 JSR 处理依赖关系。

管理传统包管理器的缺点

尽管 npm、Yarn 和其他传统的包管理器极大地帮助了 JavaScript 生态系统的发展,但它们也有一定的缺点:

  • 冗余和膨胀 — 很多时候,这些传统的包管理器会生成巨大的 Node 模块,其中包含大量不必要的依赖项 — 有些甚至是重复的 — 从而增加了项目规模
  • 性能开销 — 对于大型应用程序来说,依赖项安装和解析可能非常耗时
  • 安全问题 - 随着包数量的增加,依赖安全已成为主要困难

JSR 通过应用更有效的模块管理技术(利用当代 JavaScript 标准和实践)来解决这些问题。

采用ES模块

采用 ES 模块使 JSR 令人兴奋,因为 ES 模块比 CommonJS 提供了多种优势,而 CommonJS 是 Node.js 的默认模块。让我们看几个例子,说明采用 ES 模块对于 JSR 和 JavaScript 开发者社区来说是一个巨大的胜利:

  • 浏览器和当代 JavaScript 引擎自然支持 ES 模块,无需捆绑器或转译器
  • ES 模块允许对导入和导出进行静态分析,支持改进的工具和优化
  • ES 模块的固定结构有助于更有效地抖动树,通过省略无用的代码来降低包大小

JSR 与 ES 模块的深度集成保证了开发者可以轻松利用这些优势,生成更易于管理、更高效的代码库。

JSR 的模块管理方法

JSR 的模块管理风格集中于以下基本思想:

  • 快速解决依赖关系 — JSR 依赖关系解决技术比其他技术更有创意,因为它保证最有效地解决依赖关系并降低冗余。因此,它会产生更小的node_modules目录和更快的安装时间
  • 增强的安全措施 — 现代软件开发很大程度上取决于安全性。 JSR 的安全功能包括验证包完整性以确保已安装的包未被更改,以及频繁自动扫描依赖项以查找已知漏洞并生成可操作的通知
  • 平滑的 ES 模块集成 — ES 模块支持已从头开始包含在 JSR 中。这意味着我们可以使用使用标准化 ES 模块语法指定的模块,而不需要任何额外的设置,这可能会很烦人并减慢开发过程。此外,这保证了浏览器、Node.js、其他 JavaScript 运行时和其他环境的兼容性
  • 性能大幅提升 — JSR 的核心关注点是性能;它通过减少重复项并使用有效的算法进行可靠性解析,大大减少了安装和控制依赖项所需的时间

探索 JSR 的成长和成熟度

JSR 自从首次以其独创的方法和明显的优势吸引开发者以来,一直在不断变化。早期采用者重视增强的安全措施、更快的安装时间以及节点模块目录中更少的冗余。这些好处尤其受到从事安全性和效率至关重要的大型项目的人们的赞赏。

此外,Node.js 系统和浏览器中包含 ES 模块加速了 JSR 的扩展。随着越来越多的项目转向 ES 模块,对该模块系统的本机支持成为 JSR 包管理器的关键组件,从而简化了模块管理任务,而无需配置其他工具和设置。

几年后,JSR 从一个正在开发的包管理器发展成为一个可靠的包管理器。该团队改变了设计以适应更复杂的用例,并根据反馈和实用示例修改了其功能。

这些变化导致更多的人参与开发并在其他社区中分享与 JSR 相关的最佳实践。这种创新和持续的开发使开发人员能够满足 JavaScript 生态系统不断变化的需求。

JSR 现在和未来的可能性

JSR 展示了现代模块管理对于创新开发的巨大可能性。对于许多想要有效控制依赖性并且避免其他注册表系统中常见问题的程序员来说,它已成为可靠的资源。

当前的 JSR 版本提供原生 ES 模块支持和智能依赖关系解析,并增强了安全措施。这些功能增强了开发人员的体验,因此 JSR 更适合当代 JavaScript 项目。

关于未来,随着 JavaScript 生态系统的变化,JSR 具有扩展和解决新问题的良好潜力。扩展其生态系统可以让 JSR 提供​​更加和谐、简化的开发体验。

提高 JSR 与其他工具或平台的兼容性是需要付出更多努力的领域。这需要与通用构建系统、开发环境和 CI/CD 管道进一步合并。

增强可扩展性和性能是未来发展的另一个关键领域。了解 JSR 系统如何在其复杂性和规模变化时有效地管理依赖关系至关重要。进一步消除冗余并不断优化依赖关系解决技术将保证 JSR 仍然是大型项目的合理选择。

未来,JSR团队希望提供更高级的安全选择,例如重要安全补丁的自动更新和实时依赖漏洞监控。这些修改将帮助开发人员维护安全的代码库并降低可能的危险。

除此之外,JSR 团队还致力于创建一个充满活力且专注的社区。对社区的投资将使 JSR 能够稳步增加世界各地开发人员的贡献,通过详尽的文档和客户支持来支持开发工作,并建立一个鼓励创新与合作的强大生态系统。

对于 JSR 团队来说,拥抱插件、扩展和其他社区创建等项目来提高其能力并使其可持续发展非常重要。

JSR 与其他包管理器

为了更好地理解 JSR 的优势,我们将其与 npm、Yarn 和 pnpm 等知名包管理器进行比较。尽管总体上令人印象深刻,但这些传统的包注册表具有各种优点和缺点,需要考虑这些优点和缺点才能做出更明智的决策:

npm Yarn pnpm
Description For many years, Node.js used npm as its default package manager. It offers a massive collection of packages, which streamlines looking for outside libraries. Facebook created Yarn, a package manager, to fix some of NPM's problems. It provides faster, safer, and more dependable dependency management. pnpm is another package manager designed for speed and efficiency. It uses an innovative method of handling dependencies, reducing redundancy, and boosting efficacy. It is also similar to npm. Let us quickly take a brief dive into the strengths and drawbacks of pnpm.
Strengths Boasts one of the biggest JavaScript package registries, giving developers many choices. Many users use Node.js as their default package manager, so npm’s popularity is backed by JavaScript community members. Incredibly user-friendly and requires no particular prior knowledge. Its commands are clear-cut, even for a novice wishing to install, update, or manage packages. Thanks to its parallelized dependency resolution, Yarn has come to provide rapid installation time. Deterministic installs — This ensures that the same dependencies are installed even in different contexts, lowering "works on my machine" problems. Yarn adds various security and dependability-boosting elements, such as package integrity verification and offline caching. Great efficiency — Using a content-addressed storage approach helps to reduce repeated copies of dependences through pnpm, hence reducing the size of node module directories. Relatively fast — It is commonly known that pnpm has an efficient dependency resolution system and fast installation times. Deterministic installations — Like Yarn, pnpm guarantees consistent installation of dependencies across many environments.
Drawbacks Duplicate copies of dependencies cause bloat by expanding the size of the node modules directory. Speed — Particularly on big projects, dependability resolution and installation could take some time. Safety — While the security system has advanced, maintaining the integrity of every dependent still presents a great challenge. Although Yarn has numerous functionalities, it might be more difficult to set up and utilise than npm. Redundancy — Yarn can still result in big node module directories even if it eliminates some redundancy issues. Adoption — pnpm is less extensively embraced than npm or Yarn, which can result in less community support even as it is becoming more well-known. Certain tools and libraries may not be compatible with pnpm. Thus, an extra setting is needed.

结论

JSR 的创建是为了更好地适应 2024 年的编程环境,而 npm 无法做到这一点。它并不是为了 fork npm 而设计的,而是为了与 npm 一起工作。据其创建者称,JSR 的设计成本低廉,在云服务上运行,旨在随着时间的推移进行社区调节和管理。

使用 JSR 管理 JavaScript 模块已经取得了长足的进步。采用 ES 模块等当代标准使 JSR 成为一种更高效、更安全、更简化的依赖关系管理方法,解决了传统包管理器的限制。

如果您想最大化流程,那么使用 JSR 是一个明智的决定。其智能可靠性解决方案、扩展的安全功能和其他功能增强了 DX 以及项目性能。

尽管 npm、Yarn 和 pnpm 等传统包管理器已经为开发者社区提供了良好的服务,但 JSR 的创造性方法以及与现代 JavaScript 技术的密切联系在模块管理的发展中名列前茅。

采用 JSR 将帮助开发人员享受更低的冗余、更快的安装时间和更安全的开发环境,从而获得更好的可维护性和可扩展性系统。随着时间的推移,JSR 将继续证明为什么它是更快、更安全开发的最佳选择,特别是在包安装和使用方面。


您是否添加新的 JS 库来构建新功能或提高性能?如果他们反其道而行怎么办?

毫无疑问,前端变得越来越复杂。当您向应用程序添加新的 JavaScript 库和其他依赖项时,您需要更多的可见性以确保您的用户不会遇到未知问题。

LogRocket 是一个前端应用程序监控解决方案,可让您重放 JavaScript 错误,就像它们发生在您自己的浏览器中一样,以便您可以更有效地对错误做出反应。

Exploring JSR for JavaScript module management

LogRocket 可以与任何应用程序完美配合,无论框架如何,并且具有用于记录来自 Redux、Vuex 和 @ngrx/store 的其他上下文的插件。您无需猜测问题发生的原因,而是可以汇总并报告问题发生时应用程序所处的状态。 LogRocket 还监控您的应用程序的性能,报告客户端 CPU 负载、客户端内存使用情况等指标。

自信地构建 - 开始免费监控。

以上是探索用于 JavaScript 模块管理的 JSR的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!