在一个文件中创建节点模块和 <script>
Create node module and <script> in one file
如何编写我的源文件,以便它可以 "required" 和 <script src="">
来自同一个代码库?
我遇到了一个罕见的功能,该功能对应用程序的双方都有意义,并且只想维护一个版本。
假设脚本不使用任何平台特定功能,是否可以使脚本在双方都可用?
您也可以在客户端使用 requirejs,因此可以通过 <script>
中的 requirejs() 在您的页面上包含该模块,
脚本本身:
var myFunc = function(){
};
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
module.exports = myFunc;
现在您可以 require() 这个模块,或者使用 <script type="text/javascript" src="..."></script>
将它包含到您的网页中
检查模块是否存在,如果不存在,则使用 window。
(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;
}));
此外,如果您需要额外的依赖项,您可以将上面的内容更改为:
(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;
}));
如何编写我的源文件,以便它可以 "required" 和 <script src="">
来自同一个代码库?
我遇到了一个罕见的功能,该功能对应用程序的双方都有意义,并且只想维护一个版本。
假设脚本不使用任何平台特定功能,是否可以使脚本在双方都可用?
您也可以在客户端使用 requirejs,因此可以通过 <script>
中的 requirejs() 在您的页面上包含该模块,
脚本本身:
var myFunc = function(){
};
if (typeof module !== 'undefined' && typeof module.exports !== 'undefined')
module.exports = myFunc;
现在您可以 require() 这个模块,或者使用 <script type="text/javascript" src="..."></script>
检查模块是否存在,如果不存在,则使用 window。
(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;
}));
此外,如果您需要额外的依赖项,您可以将上面的内容更改为:
(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;
}));