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()?的主要内容,如果未能解决你的问题,请参考以下文章

要求('反应')与要求('反应')

node入门学习

nodejs require 语句中的 const 与 var

var删除还是不删除?

我应该缩小 node_modules 还是应该使用为在客户端部署提供的缩小版本?

npm require 的问题