【问题标题】:Node.js url module vs Javascript URLNode.js url 模块 vs Javascript URL
【发布时间】:2021-11-10 12:15:43
【问题描述】:

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

  1. JavaScript URL 是否与 Node.js URL 不同?
  2. Node.js 中的URL 模块与 JavaScript 的特点?
  3. 在文档中,URL 被称为全局对象。所以 您不再需要 url 模块?

浏览器兼容的 URL 类,按照 WHATWG URL 实现 标准。已解析 URL 的示例可以在标准本身中找到。 URL 类也可用于全局对象

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

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

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

console.log(global.path); // undefined
  • 是什么原因?

但是当我在 REPL 中使用这些时,它会返回以下输出:

<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: '\\',
  ...
  ...
  • REPL和脚本文件有区别的原因是什么?

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

【问题讨论】:

    标签: javascript node.js url global-object


    【解决方案1】:
    1. Node.js 中的 URL 对象旨在与浏览器中的 URL 对象兼容。
    2. 应在 URL 类的文档中提及任何可见的差异。似乎没有。
    3. 没错 - 如果您只需要 URL 类或 URLSearchParams,则无需 require('url')

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

    http、路径、操作系统等

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

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

    【讨论】:

    • 非常感谢。这就是我要的。 @Robert Kawecki
    • 看不懂你的句子:The URL object in Node.js is designed to be compatible with the one that you get in browsers.
    • 表示“URL”构造函数和构造对象的行为应该相同,无论您是在 Node.js 中还是在 Chrome、Firefox 等浏览器中使用它。
    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 2013-10-07
    • 2020-06-16
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 2020-03-29
    • 2012-04-19
    相关资源
    最近更新 更多