ForgeDokumentáció
hu

Dokumentáció

Expressről Total.js 5-re

Total.js 5 · total5@0.0.19 comparisonexpressmigration Total.js 5-tel lefuttatva

A Total.js nem más néven futó Express. A legnagyobb különbségek: a kezelő egyetlen objektumot, $-t kap a (req, res) helyett; a törzset a keretrendszer értelmezi a tartalomtípus alapján; nem telepítesz csomagokat sütikhez, feltöltésekhez, validációhoz, munkamenetekhez, CORS-hoz, cronhoz vagy e-mailhez, mert ezek a keretrendszer részei; a projekted fájljait pedig mappákból tölti be a rendszer importálás helyett (lásd a projektstruktúra oldalt).

Az asztal közös expressz mintákkal párosul Total.js 5 egyenértékű

FeladatExpressTotal.js 5
A szerver indításaapp.listen(3000)Total.run({ port: 3000 })
Egy útvonalapp.get('/users', fn)ROUTE('GET /users/', fn) (írd ki a záró perjelet)
Útvonalparaméterapp.get('/users/:id', fn) és req.params.idROUTE('GET /users/{id}/', fn) és $.params.id
Lekérdezési karakterláncreq.query.page$.query.page
JSON törzsapp.use(express.json()) és req.body$.body, a tartalomtípus alapján értelmezve
Kérésfejlécekreq.headers['x-token']$.headers['x-token']
JSON küldéseres.json(object)$.json(object)
Szöveg vagy HTML küldéseres.send('text')$.plain('text') vagy $.html('<p>..</p>')
Állapotkódres.status(404).json(...)$.invalid(404) hibához, vagy $.response.status = 201 válasz előtt
Válaszfejlécres.set('x-a', 'b')$.response.headers['x-a'] = 'b'
Átirányításres.redirect('/x')$.redirect('/x')
Sütikcookie-parser, res.cookie(...)$.cookie('name') olvasáshoz, $.cookie('name', value, '1 day') íráshoz
Middleware egy útvonalonapp.get('/a', mw, fn)MIDDLEWARE('mw', ($, next) => ...) és ROUTE('GET /a/ #mw', fn)
Statikus fájlokapp.use(express.static('public'))Tedd a fájlokat a public/ mappába: kód nélkül
Fájl letöltéseres.download(path, name)$.file(path, name)
Sablonres.render('page', model)$.view('page', model)
Bemenet validálásaexpress-validator vagy zodinput: '*email:Email, age:Number' egy műveleten
Hibaoldalhibakezelő middlewareROUTE('#404', fn) és ROUTE('#401', fn)
Hitelesítéspassport vagy express-sessionAUTH(fn) és ROUTE('+GET /private/', fn)
Feltöltésekmultera jelző @upload és $.files
CORScorsCORS('https://example.com')
Másik API hívásaaxios vagy fetchREQUEST() és RESTBuilder
Ütemezett feladatoknode-cronCRON('0 9 * * 1-5', fn)
E-mail küldésenodemailerMAIL() és HTMLMAIL() a config-ban lévő mail_smtp-vel
WebSocketws vagy socket.ioROUTE('SOCKET /chat/', fn)

Minden résznek van egy részletesebb receptje; ez a teljes megfeleltetés egy helyen. Az alábbi példa a kódot igénylő sorok Total.js oldala.

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>');
}