Tôi đã viết một mô-đun đơn giản , có thể được nhập (sử dụng yêu cầu trong Node hoặc thẻ script trong trình duyệt), mà bạn có thể sử dụng để tải các mô-đun cả từ máy khách và từ máy chủ.
Ví dụ sử dụng
1. Xác định mô-đun
Đặt các mục sau vào một tệp log2.js, bên trong thư mục tệp web tĩnh của bạn:
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;
Đơn giản như vậy!
2. Sử dụng mô-đun
Vì nó là một trình tải mô-đun song phương , chúng tôi có thể tải nó từ cả hai phía (máy khách và máy chủ). Do đó, bạn có thể thực hiện các thao tác sau, nhưng bạn không cần thực hiện cả hai cùng một lúc (hãy để một mình theo một thứ tự cụ thể):
Trong Node, nó đơn giản:
var loader = require('./mloader.js');
loader.setRoot('./web');
var logModule = loader.importModuleSync('log2.js');
console.log(logModule.log2(4));
Điều này sẽ trở lại 2.
Nếu tệp của bạn không có trong thư mục hiện tại của Node, hãy đảm bảo gọi loader.setRootbằng đường dẫn đến thư mục tệp web tĩnh của bạn (hoặc bất cứ nơi nào mô-đun của bạn).
Đầu tiên, xác định trang 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>
Hãy chắc chắn rằng bạn không mở tệp trực tiếp trong trình duyệt của bạn; vì nó sử dụng AJAX, tôi khuyên bạn nên xem http.servermô-đun của Python 3 (hoặc bất cứ giải pháp triển khai máy chủ web thư mục nào, siêu tốc độ của bạn).
Nếu mọi thứ suôn sẻ, điều này sẽ xuất hiện:
