ForgeTotal.js 5
el

Total.js 5

Χρησιμοποιήστε τους ενσωματωμένους βοηθούς για string, number, date και array

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

Το Total.js προσθέτει ένα σύνολο μεθόδων στους ενσωματωμένους τύπους της JavaScript. Είναι διαθέσιμες παντού στην εφαρμογή, γι' αυτό αξίζει να τις γνωρίζετε πριν γράψετε δικό σας βοηθό. Οι παρακάτω εξασκούνται από το παράδειγμα.

String: το slug([max]) φτιάχνει ένα κείμενο κατάλληλο για URL (πεζά, χωρίς τόνους ή σύμβολα)· το format(a, b) αντικαθιστά τα {0}, {1}· τα encode() / decode() κάνουν escape και επαναφέρουν HTML· padLeft(length, char) / padRight()· τα parseInt2() και parseFloat2() διαβάζουν έναν αριθμό από ένα κείμενο και επιστρέφουν 0 όταν δεν υπάρχει· τα isEmail(), isURL() και isJSON() επικυρώνουν· το parseJSON() αναλύει JSON και επιστρέφει null σε σφάλμα· τα md5(), sha1() και sha256() επιστρέφουν δεκαεξαδικά hashes· το capitalize() κάνει κεφαλαίο το πρώτο γράμμα κάθε λέξης.

Number: format(decimals, thousands, decimal), για παράδειγμα το (1234567.891).format(2) δίνει 1 234 567.89.

Date: format('yyyy-MM-dd HH:mm'), add('1 day') και diff(date, 'days').

Array: take(n) και skip(n), first() και last(), trim() (κόβει τα κενά των κειμένων και αφαιρεί τα κενά στοιχεία), findItem(field, value) και findIndex(field, value), remove(value) (αφαιρεί κάθε αντιστοιχία και επιστρέφει τον πίνακα), group(field) (επιστρέφει [{ name, items }]) και quicksort(field).

Αντικείμενα: το U.extend(target, source) συγχωνεύει το source στο target και το επιστρέφει· το U.clone(object) κάνει βαθύ αντίγραφο.

controllers/utilities.js
exports.install = function() {
	ROUTE('GET /utils/', utils);
};

function utils($) {

	var items = [{ type: 'a', n: 1 }, { type: 'b', n: 2 }, { type: 'a', n: 3 }];
	var original = { a: { b: 1 } };
	var copy = U.clone(original);
	copy.a.b = 2;

	$.json({
		slug: 'Hello Wörld & Co!'.slug(),
		slugmax: 'Hello brave new world'.slug(11),
		format: '{0} has {1} items'.format('Ann', 3),
		encode: '<a href="x">&</a>'.encode(),
		decode: '&lt;b&gt;'.decode(),
		pad: ['7'.padLeft(3, '0'), '7'.padRight(3, '0')],
		numbers: ['abc12x'.parseInt2(), '3,5kg'.parseFloat2(), 'none'.parseInt2()],
		is: ['a@b.cz'.isEmail(), 'nope'.isEmail(), 'https://totaljs.com'.isURL(), '{"a":1}'.isJSON(), 'abc'.isJSON()],
		json: ['{"a":1}'.parseJSON(), 'not json'.parseJSON()],
		md5: 'abc'.md5(),
		sha1: 'abc'.sha1(),
		capitalize: 'hello big world'.capitalize(),
		number: [(1234567.891).format(2), (1234567.891).format(2, ' ', ',')],
		date: [new Date(2026, 0, 5, 9, 7).format('yyyy-MM-dd HH:mm'), new Date(2026, 0, 31).add('1 day').format('yyyy-MM-dd'), new Date(2026, 0, 5).diff(new Date(2026, 0, 1), 'days')],
		take: [[1, 2, 3, 4, 5].take(2), [1, 2, 3, 4, 5].skip(3), [1, 2, 3].first(), [1, 2, 3].last()],
		trim: ['a', '', ' b '].trim(),
		find: [[{ id: 1 }, { id: 2 }].findItem('id', 2), [{ id: 1 }, { id: 2 }].findIndex('id', 2)],
		remove: [1, 2, 3, 2].remove(2),
		group: items.group('type'),
		sort: [{ n: 'b' }, { n: 'a' }].quicksort('n'),
		extend: U.extend({ a: 1 }, { b: 2 }),
		clone: [original.a.b, copy.a.b]
	});
}