J'ai écrit un module simple , qui peut être importé (en utilisant require dans Node, ou des balises de script dans le navigateur), que vous pouvez utiliser pour charger des modules à la fois depuis le client et depuis le serveur.
Exemple d'utilisation
1. Définition du module
Placez ce qui suit dans un fichier log2.js, à l'intérieur de votre dossier de fichiers Web statiques:
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;
Aussi simple que cela!
2. Utilisation du module
Puisqu'il s'agit d'un chargeur de module bilatéral , nous pouvons le charger des deux côtés (client et serveur). Par conséquent, vous pouvez effectuer les opérations suivantes, mais vous n'avez pas besoin de faire les deux à la fois (et encore moins dans un ordre particulier):
Dans Node, c'est simple:
var loader = require('./mloader.js');
loader.setRoot('./web');
var logModule = loader.importModuleSync('log2.js');
console.log(logModule.log2(4));
Cela devrait revenir 2.
Si votre fichier ne se trouve pas dans le répertoire actuel de Node, assurez-vous d'appeler loader.setRootavec le chemin d'accès à votre dossier de fichiers Web statiques (ou où que se trouve votre module).
Définissez d'abord la page 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>
Assurez-vous de ne pas ouvrir le fichier directement dans votre navigateur; comme il utilise AJAX, je vous suggère de jeter un coup d'œil au http.servermodule de Python 3 (ou quelle que soit votre solution de déploiement de serveur Web ultra-rapide, en ligne de commande, de dossier) à la place.
Si tout se passe bien, cela apparaîtra:
