假设我在require.js中有模块A,B和C.模块A导出新对象。
define(function() {
// constructor
function F() {
this.prop = 'some';
}
// module exports
return new F();
});
模块B和C从A:
导入F()的实例define(['A'], function(f_inst) {
// code
});
出于某种原因,我需要F成为单身人士。我还没有认真了解require.js的工作原理。所以,这是我的问题:在这种情况下,我是否需要为F()使用单例模式?
答案 0 :(得分:5)
AMD模块define
d,只有一次。即使您需要多次,也只会评估一次。
您可以查看此示例:
<强> F.js 强>
define(function() {
// constructor
function F() {
this.prop = 'some';
}
// module exports
console.log('evaluated!');
return new F();
});
<强> A.js 强>
define(['./F'], function(F) {
return 'A';
});
<强> B.js 强>
define(['./F'], function(F) {
return 'B';
});
<强> main.js 强>
require(['./A', './B'], function(A, B) {
console.log(A, B);
});
<强>的index.html 强>
<!doctype html>
<html>
<head>
</head>
<body>
<script data-main="main" src="require.js"></script>
</body>
</html>
'已评估'消息仅打印一次。