Вы можете просто проверить, существует ли module
в области видимости. Если да, экспортируйте его, иначе ничего не делайте. Рассмотрим следующий пример:
статический / Testclass.js
class TestClass {
constructor(someParam = 'initial state') {
this.someField = someParam;
}
doStuff() {
return `${this.someField}`;
}
}
const testClassInstance = new TestClass('some other state');
if (typeof (module) !== 'undefined' && module.exports) {
module.exports = {
TestClass,
testClassInstance
};
}
статический / test.html
<!DOCTYPE html>
<head>
<script src="/static/TestClass.js"></script>
</head>
<body>
<p id="test"></p>
<p id="test2"></p>
<script>
document.getElementById("test").innerText = new TestClass().doStuff();
document.getElementById("test2").innerText = testClassInstance.doStuff();
</script>
</body>
server.js
const TestClass = require('./static/TestClass').TestClass;
const testClassInstance = require('./static/TestClass').testClassInstance;
let testObj = new TestClass();
console.log(testObj.doStuff());
console.log(testClassInstance.doStuff());
const express = require('express')
const app = express()
const port = 3000
app.use('/static', express.static('static'));
app.listen(port);
Это будет лог
initial state
some other state
к консоли при запуске сервера, и два абзаца на html-странице также будут содержать это содержимое.