Я написал простой модуль , который можно импортировать (используя require в Node или теги script в браузере), который можно использовать для загрузки модулей как с клиента, так и с сервера.
Пример использования
1. Определение модуля
Поместите следующее в файл log2.js
внутри вашей папки статических веб-файлов:
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
с указанием пути к вашей папке статических веб-файлов (или там, где находится ваш модуль).
Сначала определите веб-страницу:
<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, я предлагаю вам взглянуть на модуль http.server
в Python 3 (или каково бы ни было ваше решение для развертывания суперскоростного сервера, командной строки, веб-сервера папок).
Если все пойдет хорошо, появится следующее: