ฉันเขียนโมดูลง่าย ๆที่สามารถนำเข้า (ไม่ว่าจะต้องใช้ในโหนดหรือแท็กสคริปต์ในเบราว์เซอร์) ที่คุณสามารถใช้เพื่อโหลดโมดูลทั้งจากไคลเอนต์และจากเซิร์ฟเวอร์
ตัวอย่างการใช้งาน
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. การใช้โมดูล
เนื่องจากมันเป็นตัวโหลดโมดูลทวิภาคีเราจึงสามารถโหลดได้จากทั้งสองด้าน (ไคลเอนต์และเซิร์ฟเวอร์) ดังนั้นคุณสามารถทำสิ่งต่อไปนี้ แต่คุณไม่จำเป็นต้องทำทั้งสองอย่างพร้อมกัน (ให้อยู่คนเดียวตามลำดับที่ต้องการ):
ในโหนดมันง่าย:
var loader = require('./mloader.js');
loader.setRoot('./web');
var logModule = loader.importModuleSync('log2.js');
console.log(logModule.log2(4));
สิ่งนี้ควรกลับมา 2นี้ควรกลับ
หากไฟล์ของคุณไม่ได้อยู่ในไดเรกทอรีปัจจุบันของโหนดตรวจสอบให้แน่ใจว่าได้โทร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 (หรือวิธีการแก้ปัญหาการปรับใช้ superfast, command line, โฟลเดอร์เว็บเซิร์ฟเวอร์เซิร์ฟเวอร์ของคุณ) แทน
หากทุกอย่างเป็นไปด้วยดีสิ่งนี้จะปรากฏขึ้น:
