Новый выпуск Total.js v2.8.0
- Прочтите журнал изменений
- NPM:
$ npm install total.js
или скачайте empty-project - Сайт: https://www.totaljs.com
Эта версия содержит замечательные новые функции, которые делают фреймворк 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 прямо сейчас! Начать.
Спасибо всем спонсорам и премиум-участникам
Спасибо всем премиум-членам и спонсорам. Ваши деньги были использованы, чтобы сделать все эти обновления / улучшения и многое другое. Еще раз спасибо за поддержку, чтобы я мог заниматься тем, что люблю больше всего. Моя идея на ближайшее время - улучшить документацию, сделать еще несколько руководств, курсов и, возможно, первую книгу.