CommonJS使用同步的require()
语句,但是如果你有这样的模块怎么办:
function asyncFunction() {
var promise = ...;
return promise;
}
module.exports = asyncFunction();
这里会出现什么样的问题?你应该总是为module.exports
对象返回同步代码吗?例如,如果module.exports = {}
它始终是同步的,但在上面的例子中,module.exports是一个promise,假设是不被认为是同步的。如果您需要导入本质上异步的模块,是否有充分的理由在服务器端使用requireJS?
答案 0 :(得分:1)
这里会出现什么样的问题?
这违反了CommonJS惯例,对开发人员来说会让人感到惊讶。它表明您不区分代码和数据。服务器上的节点中的代码可以并且应该同步加载。数据可以而且应该使用promises,callbacks等。
是否有充分的理由在服务器端使用requireJS
不是我见过的。就个人而言,requireJS很糟糕,如果你的模块介绍它,我绝对没有机会在我的节点项目中使用它。
如果您需要导入天生异步的模块?
您需要提供具体信息。我从未见过一个节点模块本质上是异步的,至少不是那些了解代码和数据之间差异的人,并且意识到动态地将远程代码加载到正在运行的node.js服务器中应用程序是大多数部署希望避免的,包括可靠性和安全性等。