I have following dir structure
app
├── default.js
├── index.html
├── ObserverPattern
├── ConcreteObserver.mjs
├── ConcreteSubject.mjs
├── ObserverList.mjs
├── Observer.mjs
└── Subject.mjs
In index.html I have <script type="module" src="default.js"></script>
In default.js I have following code
import { Observer } from "./ObserverPattern/Observer.mjs";
import { ObserverList } from "./ObserverPattern/ObserverList.mjs";
import { Subject } from "./ObserverPattern/Subject.mjs";
import { ConcreteObserver } from "./ObserverPattern/ConcreteObserver.mjs";
import { ConcreteSubject } from "./ObserverPattern/ConcreteSubject.mjs";
In ConcreteObserver.mjs I have following code
class ConcreteObserver extends Observer {
constructor(element) {
super();
this.element = element;
}
update(value) {
this.element.checked = value;
}
}
export {
ConcreteObserver
};
When I run via local web server, I get error that Uncaught ReferenceError: Observer is not defined
If I then add import { Observer } from './Observer.mjs'; at top of ConcreteObserver.mjs then it works without error.
Is there a way to import all the modules in default.js so that I don't have to include import { Observer } from './Observer.mjs'; in every Concrete implementation?
Something like php composer autoload
Thanks