Node.js url module vs Javascript URL



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

  1. JavaScriptURL与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对象被设计为与浏览器中的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模块
这意味着一些代码在REPL中和直接通过node运行时实际上可以有不同的行为。

最新更新