我编写了一个简单的模块,可以导入该模块(使用Node中的require或浏览器中的脚本标签),您可以使用该模块从客户端和服务器加载模块。
用法示例
1.定义模块
将以下内容log2.js
放在静态Web文件文件夹内的文件中:
let exports = {};
exports.log2 = function(x) {
if ( (typeof stdlib) !== 'undefined' )
return stdlib.math.log(x) / stdlib.math.log(2);
return Math.log(x) / Math.log(2);
};
return exports;
就那么简单!
2.使用模块
由于它是双边模块加载器,因此我们可以从双方(客户端和服务器)加载它。因此,您可以执行以下操作,但无需一次执行两项操作(更不用说按特定顺序进行了):
在Node中,很简单:
var loader = require('./mloader.js');
loader.setRoot('./web');
var logModule = loader.importModuleSync('log2.js');
console.log(logModule.log2(4));
这应该返回2
。
如果您的文件不在Node的当前目录中,请确保loader.setRoot
使用静态Web文件文件夹(或模块所在的位置)的路径进行调用。
首先,定义网页:
<html>
<header>
<meta charset="utf-8" />
<title>Module Loader Availability Test</title>
<script src="mloader.js"></script>
</header>
<body>
<h1>Result</h1>
<p id="result"><span style="color: #000088">Testing...</span></p>
<script>
let mod = loader.importModuleSync('./log2.js', 'log2');
if ( mod.log2(8) === 3 && loader.importModuleSync('./log2.js', 'log2') === mod )
document.getElementById('result').innerHTML = "Your browser supports bilateral modules!";
else
document.getElementById('result').innerHTML = "Your browser doesn't support bilateral modules.";
</script>
</body>
</html>
确保您没有直接在浏览器中打开文件;由于它使用AJAX,因此建议您看一下Python 3的http.server
模块(或您的超快速,命令行,文件夹Web服务器部署解决方案)。
如果一切顺利,将显示:
