【问题标题】:Why are so many JavaScript libraries talking about command line installation?为什么这么多 JavaScript 库都在谈论命令行安装?
【发布时间】:2016-06-05 16:20:24
【问题描述】:

我显然错过了 JavaScript 文化的转变;现在我看到 JavaScript 库(例如 modernizr 或其他一百万个)谈论通过 npm 的命令行安装它们。这当然与<script src ='...'></script> 的简单概念大不相同。

我的问题不是“什么是 npm”,而是 JavaScript 开发文化中正在发生的事情 - 范式转变本身。

如果这一切都是关于 node.js 的,那么为什么这些库不在他们的下载页面(或任何地方)的顶部清楚地声明他们的库是 node.js 库?

命令行?你在说什么!? ...它是 JavaScript!

【问题讨论】:

  • modernizer 的文档不是说清楚了吗? npm install 是一个工具,可让您自定义构建modernizr,其中仅包含您想要包含的功能。
  • 为了说明这一点,“js 开发文化中正在发生的事情”对于 SO 来说是题外话。
  • @Quentin,他不知道“npm install”是什么,node js 本身相对较新,大多数人都不知道。
  • @seahorsepip — 来自问题:“我的问题不是‘什么是 npm’,而是 js 开发文化中发生了什么”
  • 当我想到“自定义构建”时,我会想到使用 Eclipse 进行 IDE 开发......如果我想自定义我下载的一些库,我只需打开 .js 文件并更改它.. . javascript 文化中“自定义构建”的概念似乎错位了......因此我的问题

标签: javascript theory


【解决方案1】:

JavaScript 发生的事情与 Maven 的 Java 和 pip 的 Python 已经发生的事情完全相同(仅举两个例子)。复杂的软件具有依赖关系,满足这些依赖关系可以通过以下三种方式之一解决:

  1. 在软件包中包含所有依赖项
  2. 让开发人员搜寻、下载并整合所有依赖项
  3. 以标准化的方式描述依赖关系并使用软件自动安装依赖关系

第一个选项存在代码大小和将依赖项和子依赖项更新到较新版本的复杂性问题(例如,如果我要更新包 A,它依赖于不需要更新的 B 和 C,请执行然后我需要重新下载捆绑的 B 和 C 吗?)。第二个选项是客户端 JavaScript 中的最新技术,如果您有大量依赖项,那将是一个巨大的痛苦。第三个选项是包管理器,如 NPM、Maven、pip 或类似 GNU/Linux 发行版的软件管理器。

至于诸如“命令行??我的客户端脚本不是在浏览器中运行吗?”之类的问题。 -- 是的,您在浏览器中运行代码,但是您使用在命令行上运行的包管理器工具获取您的依赖项。命令行工具正在解决下载许多软件库的问题,这是一项完全独立于代码实际运行的上下文的任务。

【讨论】:

  • 所以 npm 是一个工作站问题......我在工作机器上开发期间做了什么?
猜你喜欢
  • 2010-11-08
  • 1970-01-01
  • 2020-05-20
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 1970-01-01
相关资源
最近更新 更多