Новый выпуск Total.js v2.8.0

Эта версия содержит замечательные новые функции, которые делают фреймворк Total.js одним из лучших и самых быстрых фреймворков Node.js в мире. Я выполнил много обновлений и улучшений производительности. Вот лучшие функции этой версии:

Переписан алгоритм пакетов

Переписал алгоритм пакетов с нуля. Новый алгоритм поддерживает потоковую передачу данных при чтении / записи. Другими словами, теперь вы можете хранить файлы размером более 10 MBпротестировал файлы размером 100 МБ). Новый алгоритм снижает потребление ресурсов процессора и памяти при упаковке / распаковке пакетов.

Встроенная база данных NoSQL

Я могу сказать, что эта база данных - лучшая и самая быстрая встроенная база данных Node.js, написанная на чистом JavaScript. Я улучшил производительность примерно на 60% (и уменьшил потребление ЦП и памяти) при чтении и обновлении / удалении в большинстве случаев.

Тест:

  • База данных 65 МБ с более чем 600 000 документами
  • среднее значение около 1,7 секунды
  • среднее обновление / удаление около 1,9 секунды

ВАЖНО: при необходимости база данных выполняет несколько операций чтения / обновления.

NoSQL Counter v2

Это одна из самых крутых функций. Новый счетчик NoSQL может подсчитывать значения min, max и sum по дням / месяцам / годам. Вы можете легко прочитать статистику за определенный период или просто прочитать минимальные или максимальные значения по определенному идентификатору. Эта версия значительно улучшила производительность.

var temporary = 24;
NOSQL('iot').counter.max('livingroom', temporary); // framework creates a "min" value automatically
var temporary = 28;
NOSQL('iot').counter.max('livingroom', temporary);
var temporary = 20;
NOSQL('iot').counter.max('livingroom', temporary);
// After 30 seconds...
// Reading stats:
NOSQL('iot').counter.daily_max('livingroom', console.log);
NOSQL('iot').counter.daily_min('livingroom', console.log);
NOSQL('iot').counter.yearly_max('livingroom', console.log);
NOSQL('iot').counter.monthly_min('livingroom', console.log);
NOSQL('iot').counter.maximum('livingroom', console.log); // 28
NOSQL('iot').counter.minumum('livingroom', console.log); // 20

Резервное копирование NoSQL

Важной особенностью этой версии является резервное копирование встроенных баз данных NoSQL со всеми данными. База данных использует тот же пакетный алгоритм, что и система пакетов Total.js для резервного копирования / восстановления. Теперь вы можете создать резервную копию всех текстовых и двоичных файлов.

Резервное копирование:

// Backup database with all files
NOSQL('database').backup(F.path.root('/database.backup'));

Восстановить:

NOSQL('database').restore(F.path.root('/database.backup'));

NoSQL и протокол HTTP

Как я уже сказал, одна из лучших встраиваемых баз данных NoSQL, написанная на чистом JavaScript. Новое обновление обеспечивает режим только для чтения для баз данных, хранящихся на других серверах. NoSQL Counter тоже работает.

Попробуйте:

NOSQL('https://eshop.totaljs.com/products.txt').find().make(function(builder) {
    builder.where('linker_manufacturer', 'apple');
    builder.fields('name', 'price');
    builder.callback(console.log);
});
NOSQL('https://eshop.totaljs.com/counter.txt').counter.stats(10, 2017, console.log);

Вы издеваетесь надо мной? Не совсем, это действует как амулет.

Ведение журнала NoSQL

Эта функция может записывать журнал в файл. Это отличное решение для регистрации манипуляций с данными.

  • Метод: DatabaseBuilder.log(message, [username])
var db = NOSQL('products');
db.insert(newproduct).log('Created a new product: ' + newproduct.name, controller.user.name);
db.one().where('id', 1).log('Find a product with id "1"');

NoSQL: быстрое резервное копирование документов

Эта функция может создать быструю резервную копию обновленных, измененных или удаленных документов.

  • Метод: DatabaseBuilder.backup([username])
  • Работает только с update(), modify() и remove() методом.
var db = NOSQL('products');
db.modify({ username: 'Peter Širka').where('username', 'petersirka').backup('Administrator');

Новые помощники

Создавать каталоги по пути

Приятно знать, что этот метод может создавать каталоги по пути:

// It's synchronous
F.path.mkdir('/something/www/directory/total.js/framework/');

Другой способ отправки писем

  • этот метод автоматически отправляет почтовое сообщение с использованием конфигурации mail-smtp и mail-smtp-options
  • не нужно указывать smtp как в Mail.send(smtp, [options], messages, [callback]);
var mail = new Mail.message('Subject', 'body');
mail.send2(function(err) {
   console.log('Sent');
})

Обновления

Просмотр двигателя: URL

Я улучшил методы controller.view() и F.view(), добавив поддержку представлений на других серверах.

Как это работает:

controller.view('https://www.totaljs.com/404.html');

Частичные просмотры в действии:

controller.view('https://www.totaljs.com/404.html', null, true)(function(err, html) {
   console.log(html);
});
  • ВАЖНО это не будет работать в движке просмотра, например @{view('https://....'})

Механизм просмотра: легко считывать значение из конфигурации

Эта новая команда может создать более чистый HTML-код,

<div>F.config.name: @{'%name'}</div>
<div>F.config['manager-url']: @{'%manager-url'}</div>
<div>F.config.version: @{'%version'}</div>

Постоянный кеш

Я улучшил F.cache, добавив новый метод F.cache.set2(), который создает постоянный кеш. Все постоянные элементы хранятся в файле, и при перезапуске фреймворка элементы загружаются обратно в F.cache.

F.cache.set2('mycacheitem', 1023, '5 days');

Исправления

Это очень важная часть новой версии.

  • ВАЖНО: исправлено длинные сообщения в WebSocket, теперь работает как шарм.
  • исправлены блоки JS / CSS / HTML
  • исправлено mailmessage.callback() иногда не вызывали
  • исправлено mail-smtp-options пользователь + пароль теперь может быть blank, даже если авторизация включена

Что дальше?

Я планирую обновить все продукты Total.js, добавив новые функции из новой версии Total.js с новой версией jComponent и его компонентов пользовательского интерфейса.

Вы впервые слышите о Total.js?

Попробуйте платформу Total.js, потраченное время того стоит. Начните свой бизнес или технологический стек с платформы Total.js прямо сейчас! Начать.

Спасибо всем спонсорам и премиум-участникам

Спасибо всем премиум-членам и спонсорам. Ваши деньги были использованы, чтобы сделать все эти обновления / улучшения и многое другое. Еще раз спасибо за поддержку, чтобы я мог заниматься тем, что люблю больше всего. Моя идея на ближайшее время - улучшить документацию, сделать еще несколько руководств, курсов и, возможно, первую книгу.