# Moduły CommonJS

CommonJS (opens new window) module loader, funkcja require(), jest także dostępna na ES4X. Ważne jest żeby wiedzieć, że ten loader nie jest tym samym co nodejs loader. Jest to wersja npm-jvm (opens new window) przeznaczona dla ES4X.

# Różnice w specyfikacji

Moduły mogą być załadowane z systemu plików lub z plików jar. Proces ładowania zawsze przechodzi przez Vert.x FileSystem (opens new window).

# ESM import syntax

Edytory takie jak Visual Studio Code (opens new window) preferują autouzupełnianie poleceń importu z wykorzystywniem składni ESM. Oczywiście ta składnia nie jest kompatybilna z commonjs, jednakże loader będzie próbował zaadaptować polecenia importu do commonjs jeśli będzie to możliwe.

Przyjrzyj się poniższemu przykładowi:

 





import { TestSuite } from '@vertx/unit';

const suite = TestSuite.create("the_test_suite");
// ...
suite.run();

Ten kod nie jest kompatybilny z commonjs, jednak funkcja require() zmieni kod źródłowy na:

 





const TestSuite = require('@vertx/unit').TestSuite;

const suite = TestSuite.create("the_test_suite");
// ...
suite.run();

WARNING

Nawet jeśli polecenia importu zostaną zaadaptowane, to w przypadku exportu tak się nie stanie. Wszystkie polecenia exportu muszą być zgodne z formatem:

module.exports = { /* ... */ }