当我在JavaScript和Node.js上都找到URL
时,我正在搜索URL
模块。
我有几个问题:
- JavaScript
URL
与Node.js URL不同吗 - Node.js中的
URL
模块与JavaScript的特性 - 在编写的文档中,
URL
被称为全局对象。所以您不再需要url
模块
浏览器兼容的URL类,通过遵循WHATWG URL实现标准解析URL的示例可以在标准本身中找到。URL类也可用于全局对象。
在全局对象平台内部,我还看到了http
、path
、os
等模块
我想在不需要的情况下使用os
和path
模块(因为它们在全局对象中(,但我的文件执行失败:
> 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和脚本文件之间存在差异的原因是什么
感谢您的关注。我期待着你的答复。
- Node.js中的URL对象被设计为与浏览器中的URL兼容
- 任何可见的差异都应该在URL类的文档中提及。似乎没有
- 这是正确的-如果您只想要URL类或URLSearchParams,则不需要
require('url')
您提到了全局对象中的一些模块:
http、路径、操作系统等
但是,文档中并没有说明这一点。相反,这些模块是您自己require()
所需要的。URL
被记录为全局对象的一部分,这是真的——它是一个在任何地方都可用的类,就像String、Number、Buffer和其他一些类一样。这样做是为了与Web平台兼容。
REPL是特别的——它包括一个可用性特性,如果它看到对核心模块的引用,就会加载这些模块。更多详细信息请点击此处:https://nodejs.org/api/repl.html#accessing-core nodejs模块
这意味着一些代码在REPL中和直接通过node
运行时实际上可以有不同的行为。