ForgeΤεκμηρίωση
el

Τεκμηρίωση

Από το Express στο Total.js 5

Total.js 5 · total5@0.0.19 comparisonexpressmigration Εκτελέστηκε με το Total.js 5

Το Total.js δεν είναι Express με άλλο όνομα. Οι μεγαλύτερες διαφορές: ένας χειριστής λαμβάνει ένα μόνο αντικείμενο, το $, αντί για (req, res)· το σώμα αναλύεται από το framework ανάλογα με τον τύπο περιεχομένου του· δεν εγκαθιστάτε πακέτα για cookies, μεταφορτώσεις, επικύρωση, συνεδρίες, CORS, cron ή email, επειδή είναι μέρος του framework· και τα αρχεία του έργου σας φορτώνονται από φακέλους αντί να εισάγονται (δείτε τη σελίδα για τη δομή του έργου).

Οι πίνακες συνδυάζουν κοινά πρότυπα Express με τα ισοδύναμα Total.js τους 5.

ΕργασίαExpressTotal.js 5
Εκκίνηση του διακομιστήapp.listen(3000)Total.run({ port: 3000 })
Μια διαδρομήapp.get('/users', fn)ROUTE('GET /users/', fn) (γράψτε την τελική κάθετο)
Παράμετρος διαδρομήςapp.get('/users/:id', fn) και req.params.idROUTE('GET /users/{id}/', fn) και $.params.id
Συμβολοσειρά ερωτήματοςreq.query.page$.query.page
Σώμα JSONapp.use(express.json()) και req.body$.body, αναλύεται ανάλογα με τον τύπο περιεχομένου
Κεφαλίδες αιτήματοςreq.headers['x-token']$.headers['x-token']
Αποστολή JSONres.json(object)$.json(object)
Αποστολή κειμένου ή HTMLres.send('text')$.plain('text') ή $.html('<p>..</p>')
Κωδικός κατάστασηςres.status(404).json(...)$.invalid(404) για σφάλμα, ή $.response.status = 201 πριν απαντήσετε
Κεφαλίδα απάντησηςres.set('x-a', 'b')$.response.headers['x-a'] = 'b'
Ανακατεύθυνσηres.redirect('/x')$.redirect('/x')
Cookiescookie-parser, res.cookie(...)$.cookie('name') για ανάγνωση, $.cookie('name', value, '1 day') για εγγραφή
Middleware σε μια διαδρομήapp.get('/a', mw, fn)MIDDLEWARE('mw', ($, next) => ...) και ROUTE('GET /a/ #mw', fn)
Στατικά αρχείαapp.use(express.static('public'))Βάλτε τα αρχεία στο public/: χωρίς κώδικα
Λήψη αρχείουres.download(path, name)$.file(path, name)
Πρότυποres.render('page', model)$.view('page', model)
Επικύρωση εισόδουexpress-validator ή zodinput: '*email:Email, age:Number' σε μια ενέργεια
Σελίδα σφάλματοςένα middleware χειρισμού σφαλμάτωνROUTE('#404', fn) και ROUTE('#401', fn)
Πιστοποίησηpassport ή express-sessionAUTH(fn) και ROUTE('+GET /private/', fn)
Μεταφορτώσειςmulterη σημαία @upload και $.files
CORScorsCORS('https://example.com')
Κλήση άλλου APIaxios ή fetchREQUEST() και RESTBuilder
Προγραμματισμένες εργασίεςnode-cronCRON('0 9 * * 1-5', fn)
Αποστολή emailnodemailerMAIL() και HTMLMAIL() με mail_smtp στο config
WebSocketws ή socket.ioROUTE('SOCKET /chat/', fn)

Κάθε μέρος έχει μια συνταγή με περισσότερες λεπτομέρειες· αυτή είναι ολόκληρη η αντιστοίχιση σε ένα σημείο. Το παράδειγμα παρακάτω είναι η πλευρά του Total.js των γραμμών που χρειάζονται κώδικα.

definitions/compare.js
MIDDLEWARE('mw', function($, next) {
	$.response.headers['x-a'] = 'b';
	next();
});

NEWACTION('Users/create', {
	name: 'Create a user',
	input: '*email:Email, age:Number',
	action: function($, model) {
		$.callback({ email: model.email, age: model.age });
	}
});
controllers/compare.js
exports.install = function() {
	ROUTE('GET /users/{id}/', user);
	ROUTE('POST /users/ --> *Users/create');
	ROUTE('GET /mw/ #mw', ok);
	ROUTE('GET /created/', created);
	ROUTE('GET /moved/', moved);
	ROUTE('GET /cookie/', cookie);
	ROUTE('GET /html/', html);
};

function user($) {
	$.json({ id: $.params.id, page: $.query.page, token: $.headers['x-token'] });
}

function ok($) {
	$.json({ ok: true });
}

function created($) {
	$.response.status = 201;
	$.json({ created: true });
}

function moved($) {
	$.redirect('/users/1/');
}

function cookie($) {
	$.cookie('visited', 'yes', '1 day');
	$.json({ before: $.cookie('visited') || null });
}

function html($) {
	$.html('<p>Hello</p>');
}