var bar = require(' myModule')之间有什么区别,只需要(' myModule')?

时间:2016-01-05 15:11:25

标签: javascript node.js require

我已经看到在某些项目中使用了常见的

var myModule = require('myModule');

但在其他一些情况下使用的方法如下:

require('myModule');

这两者之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

一个人将模块分配给一个变量,另一个只需要它。加载并运行脚本。

使用require('foo'),您需要模块并加载入口点脚本。这将在模块第一次加载时评估该脚本中的任何静态代码。您无法访问任何导出,也无法在以后再次引用该模块,而无需再次使用该模块。

var bar = require('foo')的行为类似,只不过它会保留对导出的引用,并允许您稍后使用它们。

当“模块”实际上是某种其他类型的资源(例如CSS文件)时,经常会看到require-without-assign表单,并且require运行一些代码以将CSS加载到当前页面中。在常见的JS模块中,没有任何初始化代码,require-without-assign表单将预先加载模块,但不做其他事情。

采取以下模块:

let connection = new ServerConnection();

export default class Connection {
  static getConnection() {
    return connection;
  }
}

require-without-assign表单将加载脚本,运行脚本并创建连接。你将无法使用它,但它会存在。

require-with-assign表单将加载,运行,创建和提供引用。您可以致电bar.getConnection()并访问该连接。

在上面的示例中,如果您在没有分配的情况下使用require,则无法访问该连接,并且永远无法关闭它,这可能是一个问题。