ForgeДокументация
bg

Документация

От Express към Total.js 5

Total.js 5 · total5@0.0.19 comparisonexpressmigration Изпълнено с Total.js 5

Total.js не е Express с друго име. Най-големите разлики: манипулаторът получава един-единствен обект, $, вместо (req, res); тялото се анализира от фреймуърка според типа на съдържанието; не инсталирате пакети за бисквитки, качвания, валидация, сесии, CORS, cron или имейл, защото са част от фреймуърка; а файловете на проекта ви се зареждат от папки вместо да се импортират (вижте страницата за структурата на проекта).

Таблицата двойки общи експресни шаблони с техните 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
JSON тялоapp.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')
Бисквиткиcookie-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)
Изпращане на имейлnodemailerMAIL() и 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>');
}