繁体   English   中英

Node.js url 模块 vs Javascript URL

[英]Node.js url module vs Javascript URL

当我在 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和脚本文件不同的原因是什么?

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

  1. Node.js 中的 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运行时实际上可能表现不同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM