Το Node.js στηρίζεται σε μια χούφτα σχεδιαστικά μοτίβα που ταιριάζουν στο module system, στο ασύγχρονο μοντέλο του και στο streaming I/O. Τα πιο συνηθισμένα που θα πρέπει να αναγνωρίζει κάθε backend developer:
Το Node.js στηρίζεται σε μια χούφτα σχεδιαστικά μοτίβα που ταιριάζουν στο module system, στο ασύγχρονο μοντέλο του και στο streaming I/O. Τα πιο συνηθισμένα που θα πρέπει να αναγνωρίζει κάθε backend developer:
module.exports / export, κρατώντας τα εσωτερικά ιδιωτικά. Το θεμέλιο της οργάνωσης κώδικα στο Node.// db.js — κάθε `require("./db")` παίρνει το ίδιο pool (singleton μέσω της cache των modules).
const pool = createPool(process.env.DATABASE_URL);
module.exports = pool;
function createLogger(kind) {
return kind === "json" ? new JsonLogger() : new TextLogger();
}
EventEmitter, τα streams και τα περισσότερα core modules το χρησιμοποιούν.const { EventEmitter } = require("node:events");
const bus = new EventEmitter();
bus.on("order:paid", (o) => sendReceipt(o));
bus.emit("order:paid", order);
(ctx, next), την οποία διέδωσαν τα Express/Koa. Εξαιρετική για εγκάρσια ζητήματα (auth, logging, validation).app.use((req, res, next) => { req.startedAt = Date.now(); next(); });
const { pipeline } = require("node:stream/promises");
await pipeline(fs.createReadStream("in"), gzip(), fs.createWriteStream("out.gz"));
| Ανάγκη | Μοτίβο |
|---|---|
| Ένας κοινός πόρος | Singleton (module cache) |
Δημιουργία αντικειμένων, απόκρυψη του new | Factory |
| Αντίδραση σε ασύγχρονα events | Observer / EventEmitter |
| Εγκάρσια λογική request | Middleware |
| Ασφαλής επεξεργασία μεγάλων δεδομένων | Streams / pipeline |
| Testable, αποσυζευγμένες εξαρτήσεις | Dependency Injection |
Τα μοτίβα είναι ένα κοινό λεξιλόγιο: το να λες «το config είναι ένα module-cached singleton» ή «το auth είναι middleware» μεταδίδει έναν σχεδιασμό με λίγες λέξεις. Ο ίδιος ο πυρήνας του Node (EventEmitter, streams, το module system) είναι φτιαγμένος από αυτά, οπότε η αναγνώρισή τους σας βοηθά να διαβάζετε frameworks και να δομείτε τις δικές σας υπηρεσίες. Οι συνεντευκτές χρησιμοποιούν αυτή την ερώτηση για να ελέγξουν ότι δεν συνδέετε απλώς callbacks ad hoc, αλλά καταφεύγετε στο μοτίβο που ταιριάζει — και γνωρίζετε τους συμβιβασμούς του, όπως ότι ένα singleton κάνει την καθολική κατάσταση πιο δύσκολη στο testing.
Μια βιβλιοθήκη ερωτήσεων συνέντευξης IT με αναλυτικές απαντήσεις — από Junior έως Senior.
Δωρεά