Node.js url 模块对比 Javascript URL

Node.js url module vs Javascript URL

当我在 JavaScript 和 Node.js 上找到 URL 时,我正在搜索 URL 模块。
我有几个问题:

  1. JavaScript URL 与 Node.js URL 不同吗?
  2. Node.js中的URL模块和Node.js中的模块有什么区别 JavaScript?
  3. 的特征
  4. 在编写的文档中,URL 被称为全局对象。所以 您不再需要 url 模块?

Browser-compatible URL class, implemented by following the WHATWG URL Standard. Examples of parsed URLs may be found in the Standard itself. The URL class is also available on the global object.

在全局对象平台里面,我还看到了httppathos等模块
我想使用 ospath 模块而不需要(因为它们在全局对象中)但是我的文件执行失败:

> node test.js
console.log(path); // ReferenceError: path is not defined

我也写了下面的代码,但是在输出中打印了未定义的值:

console.log(global.path); // undefined

但是当我在 REPL 中使用它们时,returns 输出如下:

<ref *1> {
  resolve: [Function: resolve],
  normalize: [Function: normalize],
  isAbsolute: [Function: isAbsolute],
  join: [Function: join],
  relative: [Function: relative],
  toNamespacedPath: [Function: toNamespacedPath],
  dirname: [Function: dirname],
  basename: [Function: basename],
  extname: [Function: extname],
  format: [Function: bound _format],
  parse: [Function: parse],
  sep: '\',
  ...
  ...

感谢您的关注。期待您的回复。

  1. Node.js 中的 URL 对象旨在与您在浏览器中获得的对象兼容。
  2. 任何可见的差异都应在 URL class 的文档中提及。好像没有。
  3. 这是正确的 - 如果您只需要 URL class 或 URLSearchParams,则不需要 require('url')

你提到一些模块在全局对象中:

http, path, os, etc.

但是,文档并未在任何地方说明这一点。相反,这些是您需要自己 require() 的模块。 URL 被记录为全局对象的一部分,这是真的 - 它是一个随处可用的 class,很像 String、Number、Buffer 和其他一些对象。这样做是为了与 Web 平台兼容。

REPL 很特别 - 它包含一个可用性功能,如果它看到对核心模块的引用,就会加载它们。此处有更多详细信息:https://nodejs.org/api/repl.html#accessing-core-nodejs-modules
这意味着一些代码实际上可以在 REPL 中表现不同,当 运行 直接通过 node.