Reputation: 173
How can I write my source file so that it can be "required" and <script src="">
from one code base?
I have hit a rare function that makes sense on both side of the app and would like to only maintain one version.
Is it possible to make a script be usable on both sides assuming it does not use any platform specific functions?
Upvotes: 0
Views: 109
Reputation: 95054
Check for module to exist, and if it doesn't, use window instead.
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
module.exports = factory();
} else {
window.myObj = factory();
}
}(function (){
// your code here, return what should be exported.
var myObj = {foo:"Bar"};
return myObj;
}));
Additionally, if you need to require in additional dependencies, you could change the above to this:
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
module.exports = factory(require('somemodule'));
} else {
window.myObj = factory(window.somemodule);
}
}(function (somemodule){
// your code here, return what should be exported.
var myObj = {foo:somemodule("Bar")};
return myObj;
}));
Upvotes: 1
Reputation: 381
The script itself:
var myFunc = function(){
};
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
module.exports = myFunc;
Now you can either require() this module or just include it into your web-page with <script type="text/javascript" src="..."></script>
Upvotes: 3
Reputation: 27490
You can use requirejs on client side too and so to include that module by requirejs() from <script>
on your page,
Upvotes: 0