我正在尝试编写一个可以加载的javascript模块:
我相信它几乎是正确的,但是我不确定它在node.js中应该如何工作,因为我没有使用它。
目标:
更具体地说,我想创建一个名为“myns”的命名空间:
代码如下所示:
myns名字-before.js:
(function(exports) {
exports.before = "myns before";
if (typeof define === 'function' && define.amd) {
define('myns-before', exports);
}
})(typeof exports !== 'undefined' ? exports : this['myns'] = this['myns'] || {});
myns.js:
(function(exports) {
exports.hello = "Hello myns";
if (typeof define === 'function' && define.amd) {
define('myns', exports);
}
})(typeof exports !== 'undefined' ? exports : this['myns'] = this['myns'] || {});
myns名字-after.js:
(function(exports) {
exports.after = "myns after";
if (typeof define === 'function' && define.amd) {
define('myns-after', exports);
}
})(typeof exports !== 'undefined' ? exports : this['myns'] = this['myns'] || {});
然后我会以不同的方式对这3个脚本进行说明。
1。在普通浏览器中:
<body>
<script src="myns-before.js"></script>
<script src="myns.js"></script>
<script src="myns-after.js"></script>
<script>
console.log("myns before:", myns, myns.before);
console.log("myns:", myns, myns.hello);
console.log("myns after:", myns, myns.after);
</script>
</body>
2。在浏览器中作为AMD模块:
<body>
<script src="libs/require.js"></script>
<script>
require(["myns-before", "myns", "myns-after"], function(myns){
console.log("myns before:", myns, myns.before);
console.log("myns:", myns, myns.hello);
console.log("myns after:", myns, myns.after);
});
</script>
</body>
第3。在node.js中:
var myns1 = require('./browsers/myns-before');
var myns2 = require('./browsers/myns');
var myns3 = require('./browsers/myns-after');
console.log(">", myns1, myns1.before, myns1.hello, myns1.after);
console.log(">", myns2, myns2.before, myns2.hello, myns2.after);
console.log(">", myns3, myns3.before, myns3.hello, myns3.after);
所以,在前2个案例(浏览器lodaed)中,我可以正确输出:myns.before,myns.hello和myns.after
但是在node.js中,我没有找到实现相同目标的方法。 似乎我只能逐个加载脚本,每个脚本都设置为一个变量。
所以问题是,如何在node.js中加载需要在浏览器中工作的这3个脚本,并能够输出我的3个属性:before,hello和after?
有什么想法吗?