Napisałem prosty moduł , który można zaimportować (albo używając wymaga w węźle, albo znaczników skryptu w przeglądarce), którego można użyć do załadowania modułów zarówno z klienta, jak iz serwera.
Przykładowe użycie
1. Definiowanie modułu
Umieść następujące elementy w pliku log2.jsw folderze statycznych plików internetowych:
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;
Proste!
2. Korzystanie z modułu
Ponieważ jest to moduł ładujący moduły dwustronne , możemy go ładować z obu stron (klienta i serwera). Dlatego możesz wykonać następujące czynności, ale nie musisz wykonywać obu naraz (nie mówiąc już o określonej kolejności):
W węźle jest to proste:
var loader = require('./mloader.js');
loader.setRoot('./web');
var logModule = loader.importModuleSync('log2.js');
console.log(logModule.log2(4));
To powinno wrócić 2.
Jeśli twój plik nie znajduje się w bieżącym katalogu węzła, pamiętaj, aby zadzwonić loader.setRootze ścieżką do folderu ze statycznymi plikami internetowymi (lub gdziekolwiek znajduje się moduł).
Najpierw zdefiniuj stronę internetową:
<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>
Upewnij się, że nie otwierasz pliku bezpośrednio w przeglądarce; ponieważ używa AJAX, sugeruję, aby spojrzeć na http.servermoduł Pythona 3 (lub cokolwiek, co jest twoim superszybkim, wierszem poleceń, rozwiązaniem do wdrażania serwera sieciowego dla folderów).
Jeśli wszystko pójdzie dobrze, pojawi się:
