var module = require() 还是 const module = require()?
Posted
技术标签:
【中文标题】var module = require() 还是 const module = require()?【英文标题】:var module = require() or const module = require()?var module = require() 还是 const module = require()? 【发布时间】:2020-05-31 15:50:39 【问题描述】:这两个 require 方法有什么区别:
1. var xx = require('module')
2. const xx = require('module')
我看到第一个 onde 我可以访问 xx 作为变量,所有脚本都由模块导出..第二个 xx 未定义。如何访问第二个“方法”或者它是一种方法太构造模块来使用
谢谢
【问题讨论】:
做const xx = require('module');
。您正在做的是获取模块的 xx
字段。 const xx = require('module');
与 const xx = require('module').xx
相同
【参考方案1】:
第一个将完整的模块句柄放在名为 xx
的变量中。
第二个从模块句柄中获取xx
属性并将其放入名为xx
的变量中。因此,第二个将与以下内容相同:
const xx = require('module').xx;
第一个使用var
,第二个使用const
,但我假设您已经知道这种区别。
换一种说法:
这个:
const xx = require('module');
是一个捷径:
const xx = require('module').xx;
当您想从模块中获取一堆属性并将它们全部分配给模块中的***变量时,使用require()
作为快捷方式最有用,如下所示:
const xx, yy, zz, aa, bb, cc = require('module');
如果你不使用对象解构语法,这显然需要比单行更多的代码来复制。
仅供参考,所有这些都只是对象解构的一种形式(ES6 中添加到 javascript 的一个特性)。这不是 require()
的特定内容,只是 require()
经常返回一个对象,其中包含人们感兴趣的一堆属性。请参阅这篇文章 "A Dead Simple into to Destructuring" 了解对象解构作用的一个很好的总结。
【讨论】:
很好!!!这意味着,如果我尝试使用“const ricardo = require('express')”,console.log(ricardo) 将是未定义的,因为 express 中没有类“ricardo”。如果制作一个文件 "modal.js" = class test exports.test = test;和一个 "test.js" = const test = require("./modal.js") console.log(test) 它返回 [Function: test] !!很好解释!谢谢!! @RicaGurgel - 是的,看来你现在明白了。我建议阅读有关对象解构的一般知识,因为它是一种在许多其他上下文中也很有用的语言特性。 是的!有链接!!阅读“对象解构”并测试一切!非常感谢!【参考方案2】:这是因为你的模块被导出为一个没有方法 xxx 的对象。 示例:
module.exports =abc : ()=>
-
var xx = require('module') , 可以通过 xxx.abc() 调用函数 abc
你只能通过 const abc = require('module') 调用 abc
在情况 2 中不能调用 xxx,因为没有名称为 xxx 的方法
【讨论】:
【参考方案3】:这两者在两个方面有所不同:
xx
的常量:在第一种情况下,添加语句 xx = 5;
是合法的,但在第二种情况下则不合法,因为您将 xx 声明为 const。
在第二个示例中,您使用解构。解构从对象中获取元素并将它们直接分配给变量。例如:
var a = "x": 1, "y": 2;
var y = a;
// This is equivalent to:
var y = a.y;
然后你的第二个语句只是从你的模块中获取xx
属性,就像你这样做一样:
const xx = require('module').xx;
【讨论】:
【参考方案4】:1. var xx = require('module')
2. const xx = require('module')
首先var
是一个变量类型,定义后可以修改其值; const
值在定义后不能修改。
第二,var xx
指的是module
的主导出; const xx
指的是module
的导出属性。
示例 1. 模块
const xx =
module.exports = xx
示例 2. 模块
const xx =
const yy =
module.exports =
xx,
yy,
否则……
示例 1. 模块
const xx =
export default xx
示例 2. 模块
const xx =
const yy =
export default
xx,
yy,
【讨论】:
以上是关于var module = require() 还是 const module = require()?的主要内容,如果未能解决你的问题,请参考以下文章
nodejs require 语句中的 const 与 var