Лишь немногие разработчики знают, что Total.js framework можно использовать без веб-сервера. Да, Total.js framework действительно отличный помощник для разработчика или администратора.

Установка

Установка очень проста, и вы можете сделать это менее чем за минуту.

  • если у вас нет платформы Node.js, установите ее
  • затем установите Total.js как глобальный модуль, откройте терминал и запустите $ npm install -g total.js

Функциональность

Если у вас установлен Total.js framework, то в вашем распоряжении небольшой канон:

  • способы создания запросов
  • функции для работы с изображениями
  • Минификации JavaScript, CSS и HTML
  • String операций
  • Number операций
  • Date операций
  • Array операций
  • инструменты для парсинга данных
  • функции для отправки электронной почты и проверки SMTP-серверов
  • асинхронные инструменты

Всегда добавляйте require('total.js').

Разбор XML

Размер XML не ограничен, все передается в потоковом режиме.

require('total.js');
U.download('http://www.w3schools.com/xml/cd_catalog.xml', ['get'], function(err, response) {
    response.on('data', U.streamer('<CD>', '</CD>', function(element, index) {
        // element contains parsed XML ELEMENT STRING
        var item = element.parseXML();
        console.log(item['CD.ARTIST'], item['CD.PRICE'].parseFloat());
    }));
});

Разбор CSV-файла

Размер CSV не ограничен, все транслируется.

require('total.js');
U.download('http://www.sample-videos.com/csv/Sample-Spreadsheet-1000-rows.csv', ['get'], function(err, response) {
    response.on('data', U.streamer('\n', function(line, index) {
        var arr = line.split(',');
        console.log(arr[1]);
    }));
});

Выполнение запросов с помощью RESTBuilder

require('total.js')
RESTBuilder.make(function(builder) {
    // builder === instance of RESTBuilder
    builder.url('https://api.yourdomain.com/users/create/');
    builder.header('X-Token', '34873947A9D79A7937493749');
    builder.post({ firstname: 'Peter', lastname: 'Sirka', web: 'https://www.totaljs.com' });
    builder.exec(function(err, response) {
        console.log(response.success);
    });
});

Отправка писем

require('total.js');
var mail = Mail.create('Subject', 'HTML body');
mail.to('[email protected]');
mail.send('SMTP HOST', { user: 'XXX', password: 'XXX', timeout: 2000 });

Вы хотите удалить диакритические знаки из файла?

const Fs = require('fs');
require('total.js');
Fs.readFile('somefile.txt', function(err, data) {
    Fs.writeFile('somefile.txt', data.toString('utf8').removeDiacritics(), NOOP);
});

Список каталогов и файлов

require('total.js');
U.ls('/some/path/to/directory/', function(directories, files) {
    // directories = contains all directories
    // files = contains all files
    console.log(directories, files);
});
// If you need more details use U.ls2() which returns lists of objects (created date, modified date, length, etc.)

Изменение размера изображений

Вам необходимо установить GraphicsMagick или ImageMagick, прежде чем вы сможете использовать изменение размера.

require('total.js');
// Image.load('picture.jpg', true === imageMagick or false === grapchismagick);
Image.load('picture.jpg', false).make(function(image) {
    image.resize(200, 200);
    image.quality(90);
    image.minify();
    image.save('resized.jpg');
});

Вам нужна небольшая встроенная база данных NoSQL?

require('total.js')
NOSQL('users').find().make(function(filter) {
    filter.where('age', '>', 20);
    filter.where('confirmed', true);
    filter.callback(function(err, response) {
        console.log(err, response);
    });
});
NOSQL('users').insert({ age: 32, firstname: 'Peter', lastname: 'Sirka', created: new Date(), confirmed: true });

Минимизация JS, CSS и HTML

require('total.js');
// minify JavaScript
console.log(U.minifyScript('var a = 1 + 1;'));
// minify CSS
console.log(U.minifyStyle('body { margin: 5px; font-family: Arial; }'));
// minify HTML
// when HTML contains inline JS or CSS then the content is minified too
console.log(U.minifyHTML('<div>A</div>    <div>B</div>'));

МД5, ША1, ША256, ША512

require('total.js');
console.log('123456'.md5());
console.log('123456'.sha1());
console.log('123456'.sha256());
console.log('123456'.sha512());

Назначить значения в соответствии с путем

require('total.js');
// long
var obj = {};
obj.address = {};
obj.address.city = {};
obj.address.city.name = 'Banska Bystrica';
// much shorter
var obj = {};
U.set(obj, 'address.city.name', 'Banska Bystrica');
console.log(obj);
console.log(U.get(obj, 'address.city.name'));

Встроенная проверка

require('total.js');
var email = '[email protected]';
var email_invalid = 'petersirka';
console.log(email.isEmail(), email_invalid.isEmail());
var phone = '+421903163302';
var phone_invalid = '349834';
console.log(phone.isPhone(), phone_invalid.isPhone());
var url = 'https://www.google.com';
var url_invalid = 'aldskjaljdadsôakjd';
console.log(url.isURL(), url_invalid.isURL());
var zip = '97401';
var zip_invalid = '34983983';
console.log(zip.isZIP(), zip_invalid.isZIP());

Простой механизм шаблонов строк

Вы также можете использовать Total.js View Engine вместо механизма шаблонов, указанного ниже.

require('total.js');
var string = 'My name is {{ name }}. Created: {{ created | dd.MM.yyyy }} and credits: {{ credits | ## ### }} credits.';
console.log(string.params({ name: 'Peter', created: new Date(), credits: 1000 }));
// or simple format string.format() in C# style
var string_format = 'My name is {0} and current date time is: {1}.';
console.log(string_format.format('Peter', new Date().format('dd.MM.yyyy HH:mm'));

Терминальное приложение Total.js

Если у вас установлен Total.js как глобальный модуль, вы можете использовать терминальное приложение Total.js.

$ totaljs --help

Встроенный веб-сервер со списком каталогов

Приведенная ниже команда запускает веб-сервер на порту 8000, а каталог public будет текущим каталогом, поэтому все файлы будут доступны по протоколу http. Веб-сервер пытается найти файл index.html, и если файл не существует, выполняется листинг каталога.

$ cd some-directory
$ totaljs 8000

Минимизируйте JS, CSS или HTML

$ totaljs --compress some-file.js

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

Нравится пост? Подробнее о возможностях читайте в документации:

Поддержите нас на Total.js GitHub и в социальных сетях.
Источник: https://blog.totaljs.com/blogs/tutorials/ 20161103-всего-js-как-помощник-без-веб-сервера/