
Я опубликовал несколько сообщений в блоге и видео о Total.js Flow, известной альтернативе Node-Red, которая полностью написана с использованием фреймворка Total.js. Затем я получил множество отзывов от людей, которые спрашивали меня, как начать работу с total.js framework. И я, наконец, решил создать эту серию руководств по Total.js, чтобы помочь вам перейти от нуля к герою с помощью Total.js framework. Я так счастлив опубликовать первый учебник из этой серии. Сегодняшнее руководство состоит из двух частей: часть 1 посвящена реализации нашего простого приложения todo на стороне сервера, а часть 2 — реализации на стороне клиента. Я поделюсь с вами ссылкой на исходный код GitHub и ссылкой на видео YouTube этого руководства, чтобы вы могли эффективно узнать все о фреймворке Total.js.
Создать проект
Прежде чем создавать проект для этого руководства, убедитесь, что на вашем компьютере установлен node.js версии 14 или более ранней. Этого достаточно, чтобы начать создавать что угодно с помощью фреймворка Total.js. Затем нам нужно открыть ваш терминал и ввести следующие команды:
# create folder and move into it $ mkdir todoapp && cd todoapp # init project with npm $ npm init -y # install total.js (The only one dependency you need ) $ npm install total4
Теперь вы можете открыть проект в своем любимом редакторе кода. В моем случае я использую VSCode.

Создайте основной файл записи (index.js)
Создайте файл .js в корне вашего приложения. Имя файла записи приложения обычно представляет собой файл index.js, но вы можете назвать его как хотите! Важно то, что он понадобится вам для запуска сервера разработки вашего приложения. После того, как вы его создали, необходимо поставить следующий простой стартовый скрипт:
require('total4/debug')({ port: 5000 });
Этой одной строки кода достаточно, чтобы запустить сервер в режиме отладки (разработки)!
Затем вы вводите в терминале следующее, чтобы запустить его:
$ node index.js
Результат этого будет выглядеть следующим образом:

Создание конечных точек API todo
Создайте файл /controllers/api.js, чтобы определить конечные точки вашего приложения.
exports.install = function () {
// Http_method Uri *Schema_name --> action_name
ROUTE('GET /todos/list/ *Todos --> list');
ROUTE('POST /todos/create/ *Todos --> create');
ROUTE('GET /todos/read/{id}/ *Todos --> read');
ROUTE('UPDATE /todos/update/{id}/ *Todos --> update');
ROUTE('DELETE /todos/remove/{id}/ *Todos --> remove');
ROUTE('GET /todos/toggle/{id}/ *Todos --> done');
}
Создайте схему и действия для конечных точек приложения.
Создайте файл /schemas/todos.js, чтобы определить схему Todos.
NEWSCHEMA('Todos', function(schema) {
schema.action('list', {
name: 'List todos',
query: 'search:String',
action: function($) {
var builder = DB().find('nosql/todos');
builder.where('isremoved', false);
// enable searching via request query parameter
$.query.search && builder.search('search', $.query.search);
builder.fields('id,name,isdone,description');
builder.callback($.callback);
}
});
schema.action('create', {
name: 'Create new todo',
input: '*name:String,description:String,isdone:String',
action: function($, model) {
model.id = UID();
model.isdone = false;
model.search = (model.name + ' ' + model.description || '').toSearch();
model.isremoved = false;
model.dtcreated = NOW;
DB().insert('nosql/todos', model).callback($.done(model.id));
}
});
schema.action('read', {
name: 'Read specific todo',
params: '*id:String',
action: function($) {
var params = $.params;
DB().read('nosql/todos').fields('id,name,isdone,description').id(params.id).where('isremoved', false).error(404).callback($.callback);
}
});
schema.action('update', {
name: 'Update todo',
params: '*id:String',
input: '*name:String,description:String,isdone:String',
action: function($, model) {
var params = $.params;
model.dtupdated = NOW;
model.search = (model.name + ' ' + model.description || '').toSearch();
DB().update('nosql/todos', model).id(params.id).where('isremoved', false).error(404).callback($.done());
}
});
schema.action('remove', {
name: 'Remove a todo',
params: '*id:String',
action: function($) {
var params = $.params;
DB().update('nosql/todos', { isremoved: true, dtremoved: NOW }).id(params.id).where('isremoved', false).error(404).callback($.done());
}
});
schema.action('done', {
name: 'Toggle done/undone status of todo',
params: '*id:String',
action: function($) {
var params = $.params;
DB().update('nosql/todos', { '!isdone': true }).id(params.id).where('isremoved', false).error(404).callback($.done());
}
})
});
Тестирование конечных точек
Ваша разработка API завершена! Теперь нужно протестировать его, чтобы убедиться, что все в порядке. Вы можете использовать свой любимый инструмент тестирования API. Самый популярный — Postman, но вы можете использовать бессонницу или Linux Rest scope (в моем случае).
POST /todos/create

GET /todos/read/{id}/

PUT /todos/update/{id}/

GET /todos/list

GET /todos/toggle/{id}/

DELETE /todos/remove/{id}/

Это все, что касается реализации нашего приложения Server side API. Следующим шагом является реализация приятного клиентского пользовательского интерфейса для взаимодействия с нашим API, и это будет Часть 2 этого руководства. Если вам понравилось читать этот урок, пожалуйста, поделитесь им со своими коллегами, поставьте лайк и оставьте мне несколько комментариев. В части2 я предоставлю ссылку на исходный код и ссылку на видеоурок. Читать часть 2 здесь.