【问题标题】:What are the main differences between installing a module vs including it using its url?安装模块与使用其 url 包含模块之间的主要区别是什么?
【发布时间】:2020-02-07 07:35:32
【问题描述】:

我想了解的是它们之间的主要区别是什么;

<script src="module_url.js"></script>

npm install module

是否有任何性能优势?或者其中哪一个更适合关注点分离?我的问题是针对 Node.js 的,但我们非常感谢其他平台、框架等的答案。

【问题讨论】:

  • 一个区别是在node中你不能使用带有

标签: javascript html node.js module difference


【解决方案1】:

你在比较苹果和橘子。他们做完全不同且不相关的事情。


一个脚本元素……

<script src="module_url.js"></script>

... 告诉 web 浏览器 从 URL 请求一些 JS 并在网页上下文中执行它。


使用 NPM 安装模块……

npm install module

... 告诉 npm 下载模块及其依赖项,并将它们存储在 Node.js 项目中。

【讨论】:

  • 你是绝对正确的,但我认为我的问题并不清楚。假设我想包含一些前端库,如引导程序。我可以安装它的 Node 模块,或者我可以将它包含在 script 标签中。我可能仍然在进行错误的比较,但最终这两种方法都会起作用。这就是我要比较的区别
  • @AtakanAtamert — 不,他们不会。安装节点模块不会把它放在浏览器附近的任何地方。您可以安装节点模块,然后在 node_modules 目录中查找 JS 文件,然后通过 URL 使其可用,然后使用 &lt;script&gt; 加载它……但您只是使用 &lt;script&gt; 元素。
【解决方案2】:

要使用任何 NodeJS 模块,您必须这样做 npm install &lt;module&gt;

脚本包含基本上用于客户端加载,即 UI 代码,因为这种方法减少了服务器上的负载(用于为库提供服务)。通常库托管在CDN 服务器上,这允许在该地理位置进行更快的下载。 有时,这些脚本可能无法以CDN 的形式使用,并且/或者您可能有库脚本的自定义版本,在这些情况下,您将希望使用bundlers,如webpackbrowserify 来为您的客户端库提供服务节点后端换前端或网络服务器。

Bundlers 基本上可以让您减少代码大小并加快服务速度。 参考:JS Bundlers

【讨论】:

  • 感谢您的澄清。但是,如果客户端无法获取代码,可以使用捆绑软件作为备份吗?他们是否有集成逻辑来做到这一点,或者我们需要编写自定义控制器?
  • 为了覆盖客户端无法使用CDN代码的情况,你必须使用Bundling。您可以使用 Node 后端服务器从公共文件夹中提供这些文件。检查我在答案中添加的链接,expressjs 正在提供来自public 目录的静态内容
猜你喜欢
  • 2014-02-23
  • 2017-11-11
  • 1970-01-01
  • 2019-09-13
  • 2011-06-10
  • 2016-07-08
  • 2011-04-10
  • 2010-10-02
相关资源
最近更新 更多