我已经看到在某些项目中使用了常见的
var myModule = require('myModule');
但在其他一些情况下使用的方法如下:
require('myModule');
这两者之间的区别是什么?
答案 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
,则无法访问该连接,并且永远无法关闭它,这可能是一个问题。