slo*_*obo 36 javascript amd commonjs
有没有办法创建一个javascript微库(没有依赖的库),它支持以下所有模块格式:
Mar*_*arc 49
是的,我对ded和他令人敬畏的模块的答案是:
(function(name, definition) {
if (typeof module != 'undefined') module.exports = definition();
else if (typeof define == 'function' && typeof define.amd == 'object') define(definition);
else this[name] = definition();
}('mod', function() {
//This is the code you would normally have inside define() or add to module.exports
return {
sayHi: function(name) {
console.log('Hi ' + name + '!');
}
};
}));
Run Code Online (Sandbox Code Playgroud)
然后可以使用它:
在AMD中(例如使用requireJS):
requirejs(['mod'], function(mod) {
mod.sayHi('Marc');
});
Run Code Online (Sandbox Code Playgroud)在commonJS中(例如nodeJS):
var mod = require('./mod');
mod.sayHi('Marc');
Run Code Online (Sandbox Code Playgroud)全局(例如在HTML中):
<script src="mod.js"></script>
<script>mod.sayHi('Marc');</script>
Run Code Online (Sandbox Code Playgroud)这种方法需要得到更多的宣传 - 如果jQuery和co.开始使用它生活会容易得多!