首页 > 解决方案 > var module = require() 还是 const {module} = require()?

问题描述

这两种 require 方法有什么区别:

1. var xx = require('module')
2. const {xx} = require('module')

我看到第一个我可以访问 xx 作为变量的 onde,所有脚本都由模块导出..第二个 xx 未定义。如何访问第二个“方法”或者它是一个方法太构造模块来使用{}

谢谢

标签: javascriptnode.jsnode-modulesrequire

解决方案


第一个将完整的模块句柄放在一个名为xx.

第二个xx从模块句柄中获取属性并将其放入名为 的变量中xx。因此,第二个将与以下内容相同:

const xx = require('module').xx;

第一个是 using var,第二个是 using 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”,了解对象解构作用的一个很好的总结。


推荐阅读