Gle*_*ift 2 javascript singleton module requirejs
假设我在require.js中有模块A,B和C. 模块A导出新对象.
define(function() {
// constructor
function F() {
this.prop = 'some';
}
// module exports
return new F();
});
Run Code Online (Sandbox Code Playgroud)
模块B和C从A导入F()的实例:
define(['A'], function(f_inst) {
// code
});
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我需要F成为单身人士.我还没有认真了解require.js的工作原理.所以,这是我的问题:在这种情况下,我是否需要为F()使用单例模式?
AMD模块defined,只有一次.即使您需要多次,它也只会被评估一次.
你可以查看这个例子:
F.js
define(function() {
// constructor
function F() {
this.prop = 'some';
}
// module exports
console.log('evaluated!');
return new F();
});
Run Code Online (Sandbox Code Playgroud)
A.js
define(['./F'], function(F) {
return 'A';
});
Run Code Online (Sandbox Code Playgroud)
B.js
define(['./F'], function(F) {
return 'B';
});
Run Code Online (Sandbox Code Playgroud)
main.js
require(['./A', './B'], function(A, B) {
console.log(A, B);
});
Run Code Online (Sandbox Code Playgroud)
的index.html
<!doctype html>
<html>
<head>
</head>
<body>
<script data-main="main" src="require.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
"已评估"消息仅打印一次.
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |