# EcmaScript Ενώτητες
Οι EcmaScript Ενώτητες είναι η επίσημη μοργή ενωτήτων για την JavaScript. Το ESM
υποστηρίζεται από το ES4X χρησιμοποιώντας
μια από τις επόμενες 2 επιλογές:
- Το αρχικό αρχείο έχει επέκταση
.mjs
- Το αρχικό αρχείο έχει πρόθεμα with:
mjs:
# Αρχικό αρχείο
Στο γυμνό μάτι, το αρχικό αρχείο δεν είναι τόσο διαφορετικό από το commonjs αρχείο, για παράδειγμα index.mjs
:
import { Router } from '@vertx/web';
import { someRoute } from './routes';
const app = Router.router(vertx);
app.route('/').handler(someRoute);
vertx.createHttpServer()
.requestHandler(app)
.listen(8080);
Σε αυτήν την περίπτωση το someRoute
εισάγεται από το routes.mjs
αρχείο:
export function someRoute(ctx) {
ctx.response()
.end('Hello from ES4X!');
}
# Συμβατότητα
Για λόγους Συμβατότητα, μπορεί να το έχετε παρατηρήσει οτι το import
στο αρχικό αρχείο, δεν περιλαμβάνει επέκταση:
import { Router } from '@vertx/web';
import { someRoute } from './routes';
// ...
Αυτή είναι μια μικρή απόκλιση από την επίσημη προδιαγραφή όπου ο ES4X φορτωτής θα ψάξει ενώτητες ως εξής:
- Αναζήτηση το ακριβές όνομα αρχείου:
./routes
- Αναζήτηση με
.mjs
κατάληξη:./routes.mjs
- Αναζήτηση με
.js
κατάληξη:./routes.js
WARNING
Όταν δουλεύετε με ESM
το require()
δεν είναι διαθέσιμο!
# Λήψη ενοτήτων
Η λήψη ενοτήτων στο χρόνο εκτέλεσης είναι επίσης δυνατή. Αυτή η δυνατότητα δεν είναι συγκεκριμένη στο ES4X
. Στην πραγματικότητα βασίζεται στον
επίσημο φορτωτής μονάδας απο το GraalJS
. Εισαγωγή τέτοιου είδους ενωτήτων είναι τόσο απλό όσο:
import { VertxOptions } from 'https://unpkg.io/@vertx/[email protected]/mod.mjs';
Υπάρχουν μερικοί κανόνες που πρέπει να γνωρίζετε:
- HTTP Ενώτητες δεν θα ληφθούν εάν δεν υπάρχει ΥΠΕΥΘΥΝΟΣ ΑΣΦΑΛΕΙΑΣ.
- Εάν μια τέτοια ενότητα έχει ένα
maven
υπομονάδα ενότητα, αυτό δεν θα κατέβει. - Η λήψη εκτελέσιμου κώδικα κατά το χρόνο εκτέλεσης μπορεί να είναι ζήτημα ασφάλειας.
Μπορεί να υπάρχουν περιπτώσεις όπου αυτό θα μπορούσε να είναι χρήσιμο, για παράδειγμα, για να αποφευχθεί η εξάρτηση από το npm
όταν ο κωδικός δεν είναι δημόσιος.
WARNING
Ληφθείσες ενότητες δεν θα επεξεργαστούν καμία εξάρτηση ή maven ομόλογα.