ForgeTotal.js 5
bg

Total.js 5 (backend)

Маршрути, действия, схеми, бази данни, WebSocket, изгледи и всичко, което се изпълнява на сървъра.

РецептаЕтикети

Валидиране на JSON body с действие

Определете входна схема на действие и оставете Total.js да отхвърля невалидните заявки, преди да се изпълни вашият код.

routingactionsvalidation

Предоставяне на действия през една API крайна точка

Декларирайте крайни точки ROUTE('API ...'), за да може клиент да извиква много действия с POST {schema, data} на един URL адрес.

routingapiactions

Четене на параметри на URL адреса в маршрут

Декларирайте динамични сегменти като {id} в маршрут и ги четете от $.params.

routingparams

Улавяне на много URL адреси с маршрут със заместващ знак

Завършете маршрут със *, за да съвпада с всичко под даден път, и запазете конкретни маршрути за изключенията.

routing

Обработка на всеки HTTP метод

Декларирайте маршрути за GET, POST, PUT, PATCH и DELETE и четете метода от $.method.

routinghttp

Ограничаване на маршрут с флагове

Добавяйте @флагове като @json, @xml или @upload, за да съвпада маршрутът само със заявките, за които е предназначен.

routingflags

Четене на query string и body на заявката

Използвайте $.query за параметрите на URL адреса и $.body за JSON или данни от форма в handler на маршрут.

routingrequest

Ограничаване на размера на payload и timeout на маршрут

Добавете <1kb или <10s към маршрут, за да ограничите размера на заявката или времето, което може да отнеме handler.

routingsecuritylimits

Деклариране на типизирани параметри на маршрута в действие

Използвайте опцията params на NEWACTION, за да валидира Total.js параметрите на URL адреса, преди да се изпълни вашият код.

actionsroutingvalidation

Избор на начин за отговор

Изпращайте JSON, HTML, обикновен текст, XML, пренасочвания, празни отговори или двоични данни от handler на маршрут.

routingresponse

Четене на хедъри и работа с бисквитки

Четете хедърите на заявката от $.headers, четете и записвайте бисквитки с $.cookie() и задавайте хедъри на отговора.

routingheaderscookies

Получаване на качени файлове

Приемайте multipart/form-data с флага @upload и четете качените файлове от $.files.

routinguploadfiles

Разрешаване на заявки от други origin със CORS

Извикайте CORS(), за да позволите на един origin, на няколко origin или на всеки origin да използва вашите маршрути от браузър.

securitycorsrouting

Изобразяване на изглед без да пишете handler

Маршрут без handler изобразява изгледа, наименуван по своя URL адрес, или изгледа, който посочите.

routingviews

Изберете правилния тип вход за действие

Изберете типове за вход, парами, заявки и дефиниции за изход, включително конверсии и отхвърлени стойности.

actionsvalidationtypes

Валидиране на query string в действие

Декларирайте query в NEWACTION, за да валидирате и преобразувате параметрите на URL адреса, и четете изчистените стойности от $.query.

actionsvalidationquery

Филтриране на отговора на действие с output

Декларирайте output, за да напускат действието само изброените полета, например за да не изтече никога хешът на парола.

actionssecurity

Изискване на потребител или право в действие

Използвайте опциите user и permissions на NEWACTION, за да стои авторизацията до действието, а не във всеки маршрут.

actionsauthsecurity

Защита на маршрути с AUTH

Удостоверявайте всяка заявка с AUTH() и ограничавайте маршрутите до влезли в системата или анонимни потребители с префиксите + и -.

authroutingsecurity

Деклариране на маршрута вътре в действието

Поставете маршрута в опцията route на NEWACTION и дръжте URL адреса, валидирането и кода на едно място.

actionsrouting

Влизане на потребители с вграденото удостоверяване със сесии

Подайте обект с опции на AUTH(), за да получите подписани бисквитки на сесията, хранилище за сесии и изход без да пишете инфраструктурата.

authsessionssecurity

Извикване на действие от собствения ви код

Използвайте ACTION(), за да изпълните действие от таймер, задача или друго действие, със собствен payload, query и потребител.

actions

Свързване на няколко действия в един маршрут

Изброете няколко действия след --> за да се изпълняват последователно върху един и същ payload, и отбележете с (response) кое от тях отговаря.

actionsrouting

Добавяне на middleware към маршрут

Регистрирайте middleware с MIDDLEWARE() и го прикрепете към маршрути с флага #name.

middlewareroutingsecurity

Изграждане на чат с WebSocket

Декларирайте маршрут SOCKET, слушайте съобщения и ги излъчвайте до всички свързани клиенти.

websocketrealtime

Свързване към WebSocket сървър от Node

Използвайте WEBSOCKETCLIENT, за да отворите WebSocket връзка от вашето приложение, да изпращате съобщения и да реагирате на отговорите.

websocketrealtimeintegrations

Разделяне на кода със събития

Излъчвайте и слушайте събития на приложението с EMIT(), ON(), ONCE() и OFF(), за да не се извикват модулите директно един друг.

eventsarchitecture

Съхранение и четене на данни с вградената NoSQL база данни

Вмъквайте и заявявайте документи с NOSQL() и ги предоставяйте чрез действия, без да инсталирате база данни.

nosqldatabaseactions

Заявки към NoSQL базата данни

Филтрирайте, сортирайте, страницирайте и проектирайте документи с where, in, between, search, sort, take, skip и fields.

nosqldatabasequeries

Обновяване и премахване на NoSQL документи

Променяйте документи с update() и where(), изтривайте ги с remove() и четете колко са засегнати.

nosqldatabase

Използване на DATA API за смяна на база данни

DATA адресира таблица като база/таблица, така че един и същ код за заявки работи с вградения NoSQL и с други бази данни.

databasenosqlquerybuilder

Кеширане на стойности в паметта

Запазвайте стойности с CACHE.set() и срок на валидност, четете ги с CACHE.get() и изчиствайте ги с remove() или reset().

cacheperformance

Запазване на малки настройки с MEMORIZE

Дръжте на диска JSON обект, който оцелява при рестарти, за броячи и настройки, които не се нуждаят от база данни.

storagesettings

Генериране на уникални id и хешове

Създавайте id с UID() и GUID() и хешове с HASH() и знайте кое къде да използвате.

utilitiesidssecurity

Кеширане на бавни резултати на диска с FILECACHE

Използвайте FILECACHE(), за да изчислите резултат веднъж и да го използвате повторно от файл за известно време, дори след рестарт.

cacheperformancefiles

Съхранение на качени файлове с FILESTORAGE

Запазвайте качените файлове в управлявано файлово хранилище с file.fs() и ги връщайте с $.filefs().

filesuploadstorage

Изобразяване на изглед с layout

Изобразявайте HTML изглед с модел, обхождайте данни и подавайте стойности на layout.

viewslayouttemplates

Използване на условия и екраниране в изгледи

Разклонявайте с @{if}, @{else} и @{fi} и избирайте между екраниран изход @{value} и суров HTML @{!value}.

viewstemplates

Обхождане на масиви и обекти в изгледи

Повтаряйте разметка с @{foreach} за масиви и обекти и използвайте индекса на текущия елемент.

viewstemplates

Включване на изгледи и ресурси

Използвайте повторно разметка с @{view()} и добавяйте скриптове и стилове с @{import()}.

viewstemplatesassets

Попълване на секции на layout от изглед

Декларирайте секция в изглед с @{section} и я изведете в layout с @{section('name')}, и избирайте друг layout за заявка.

viewslayouttemplates

Добавяне на helper функции в изгледи и четене на config в изгледи

Регистрирайте функции в DEF.helpers, за да ги извиквате от изгледите, и четете стойности от config с @{'%key'}.

viewstemplatesconfig

Преобразуване на Markdown в HTML

Използвайте прототипа String.markdown(), за да превръщате Markdown текст в HTML, за съдържание, записано от потребители или във файлове.

contentmarkdown

Генериране на текст с Tangular шаблони

Използвайте Tangular.render(), за да попълвате шаблони за имейли, документи и съобщения с условия, цикли и helper функции.

templatescontent

Рендирайте шаблони от текст, файлове и URL със TEMPLATE

Използвайте TEMPLATE(), за да рендирате Tangular шаблон, който е текст, файл от папката с шаблони или URL, със собствени помощници и модел по подразбиране.

templatescontenttangular

Сравнете два списъка с DIFFARR: какво да се добави, обнови и премахне

Използвайте DIFFARR(), за да сравните елементите, запазени в базата данни, с тези на формуляр и да получите тези, които трябва да се добавят, обновят и премахнат.

utilitiesarraysforms

Създател на търсене: DB() и NEWDB() с вашия собствена база данни драйвер

Изградете запитвания с DB().find().where().sort() и позволете на регистриран шофьор с NEWDB() да ги изпълнява, докато регистриран драйвер изпълнява поддържани операции на базата данни.

databasequerybuilder

Конфигуриране на приложението с файла config

Дръжте настройките във файл config и ги четете през CONF.

configsettings

Криптиране и декриптиране на данни с ключ

Превръщайте обекти в непрозрачни токени с ENCRYPT() и ги четете обратно с DECRYPT(), за подписани връзки и краткотрайни токени.

securitycrypto

Извиквайте външни услуги с API() и драйверите на NEWAPI()

Регистрирайте драйвер за услуга с NEWAPI() и го извиквайте от действията с API(name, schema, data), със същия стил на callback, грешка и promise като query builder.

apiservicesintegrations

Говорете за езикови модели с AIMODEL(), NEWAIMODELL() и AIPARSER()

Създайте искане за чат с AIMODEL(), нека шофьорът, регистриран с NEWAIMODELL(), го изпрати на доставчик и прочетете отговорите, предавани с AIPARSER().

aillmintegrations

Ограничаване на неуспешни опити с BLOCKED

Броете опитите по IP адрес с BLOCKED() и отговаряйте с 429 при достигане на лимита, за влизания и нулиране на пароли.

securityrate-limiting

Малките глобални помощници: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY и PROMISIFY

Използвайте глобални приложения, дати, дълбоки копия, справки и обещания помощници.

globalsutilitieshelpers

Събирайте грешки с ErrorBuilder, записвайте ги с ERROR() и водете одитна следа с AUDIT()

Отговаряйте с няколко грешки наведнъж с ErrorBuilder, отговора SUCCESS(), как ERROR() записва неуспехите и как AUDIT() добавя във файл с дневник кой какво е направил.

errorsloggingaudit

Отлагайте работа със setTimeout2() и clearTimeout2()

Използвайте setTimeout2(), за да изпълните функция веднъж, след като извикванията спрат, като предишният таймер със същото id се заменя, и го отменете с clearTimeout2().

timersdebounceutilities

Токени, свързани с браузър, чрез ENCRYPTREQ() и DECRYPTREQ()

Криптирайте стойност заедно с user agent (и по желание IP адреса) на заявката и я прочитайте обратно само от същия клиент.

securityencryptiontokens

Архивирайте папка с BACKUP() и RESTORE() и изпълнявайте команди със SHELL()

Опаковайте директория в един файл и я разопаковайте отново с BACKUP() и RESTORE(), и изпълнете команда на shell в папката на проекта със SHELL().

backupshellfiles

Преминете в режим на поддръжка с PAUSESERVER()

Поставете сървъра на пауза по име, така че всяка заявка да получава страница 503, възобновете го и знайте, че без втори аргумент извикването превключва състоянието.

maintenanceserveravailability

Бизнес правила като текст с NEWMACRO()

Компилирайте малки правила, написани на прост език (IF, ELSE, AND, OR, RETURN, извиквания на помощници), във функция, която изпълнявате с модел, така че правилата да могат да живеят във файл или в база данни.

macrosrulesscripting

Сервиране на статични файлове от папката public

Файловете в директорията public се сервират автоматично, без да е нужен маршрут.

staticfiles

Извикайте друг адрес с AJAX() от сървъра

Използвайте AJAX(), за да извикате HTTP адрес с JSON тяло и да получите разпознатия отговор, като promise или с callback, и знайте какво се случва при грешки и XML.

httprequestsajax

Извикване на други HTTP API с RESTBuilder

Правете GET и POST заявки към друга услуга, задавайте хедъри и timeout и четете статуса и разчетения отговор.

integrationshttprestbuilder

Освободете stream, когато приключи, с CLEANUP()

Използвайте CLEANUP(), за да унищожите stream веднага щом приключи или се провали, така че да не остават отворени файлови дескриптори, с callback или като promise.

streamsfilescleanup

Превод на изглед на няколко езика

Маркирайте текстовете в изгледите с @(...) и предоставете преводите във файлове с ресурси, избирани от LOCALIZE().

localizationi18nviews

Изпълнявайте код по график с CRON

Регистрирайте функция с CRON() и cron ред от пет полета и научете кога се изпълнява проверката и как се премахва задача.

cronschedulerjobs

Изпълнявайте тежка работа в нишка или дъщерен процес

Използвайте NEWTHREAD(), за да стартирате нишка worker, да ѝ изпращате съобщения и да четете отговорите, без да блокирате главния процес.

workerthreadperformance

Споделете няколко работни нишки с NEWTHREADPOOL()

Стартирайте фиксиран брой workers, вземете един с pool.exec(), когато има работа, върнете го с release() и оставете другите задачи да чакат свободен worker.

workerthreadpoolperformance

Извиквайте други сървъри с REQUEST и запазвайте файлове с DOWNLOAD

Използвайте REQUEST() за HTTP извиквания на ниско ниво с пълен контрол над метода, хедърите, query и тялото, и DOWNLOAD(), за да изтеглите отдалечен файл на диска.

httprequestdownload

Изпращане на имейл от view

Настройте SMTP във файла config, изобразете view като тяло на съобщението с MAIL() и изпратете готов HTML с HTMLMAIL().

mailsmtpemail

Персонализирайте страниците 404 и 401

Регистрирайте обработчици ROUTE('#404') и ROUTE('#401'), за да замените вградените страници за грешки, и ги задействайте сами с $.fallback().

errors404routing

Изпратете си съобщение с LOGMAIL()

Изпратете съобщение с обикновен текст или JSON на адрес без изглед, за дневници и известия, със същите SMTP настройки като MAIL().

mailsmtplogging

Изпращане на файлове и потоци към клиента

Сервирайте файл от диска с $.file(), наложете име за изтегляне, изпращайте генерирано съдържание с $.stream() и отговорете с 404, когато файлът липсва.

filesdownloadstream

Препращане на заявки към друг сървър

Използвайте PROXY(), за да свържете префикс на URL със сървър нагоре по веригата, изберете как се копира пътят и $.proxy(), за да препратите един маршрут.

proxygatewayintegrations

Публикувайте локален сървър през тунел с PROXYSERVER() и PROXYCLIENT()

Оставете Total.js сървър с публичен адрес да препраща заявки към програма, която работи само на частна машина, чрез WebSocket тунел, който отваря частната страна.

proxytunnelwebsocketintegrations

Защитете формулярите и заявките с CSRF токени

Създайте токен с $.csrf(), изпратете го със заявката и го проверете в middleware, за да се отхвърлят заявки от други сайтове.

securitycsrfmiddleware

Групирайте действия в схема и използвайте повторно определения на input

Използвайте NEWSCHEMA(), за да декларирате свързани действия под едно име, и споделяйте определение на input между действия чрез файл в jsonschemas/.

schemaactionsvalidation

Изградете конвейер за обработка с transforms

Регистрирайте няколко стъпки под едно име с NEWTRANSFORM() и прекарайте стойност през тях по ред с TRANSFORM().

transformpipeline

Обмен на съобщения с Total Messaging Service

Включете WebSocket крайната точка на TMS и оставете външни клиенти да получават публикувани съобщения, да изпращат съобщения към вашето приложение и да извикват неговите функции.

tmspublishsubscribewebsocketmessaging

Изградете пълен REST ресурс с действия

Декларирайте действията query, read, insert, update, patch и remove над базата данни NoSQL, с валидиране, 404 за липсващи записи и маршрути, които свързват всеки HTTP метод.

actionscrudrestnosql

Конфигурирайте WebSocket маршрут с флагове, удостоверяване и параметри

Изберете типа съобщения с @text или @binary, изисквайте влязъл потребител с префикса +, проверете CSRF токен с @csrf и четете параметри на URL в SOCKET маршрути.

websocketrealtimesecurity

Минимизиране и обединяване на CSS, JavaScript и HTML

Статичните файлове и HTML отговорите се минимизират автоматично; използвайте MERGE(), за да сервирате няколко файла като един, и настройките $minify, за да го изключите.

performancecssjavascripthtmlminification

Преоразмеряване и преобразуване на изображения

Обработвайте изображения с Image.load(), свържете операции за размер, изрязване и формат, запазете резултата, измерете размера му и сервирайте миниатюри с $.image().

imagesthumbnailsgraphicsmagick

Проверявайте границите на цифровата схема, вместо да приемате цялостна принуда

Проверете Int, SmallInt, TinyInt и Number2 с индиански компактни схеми, включително фракционни стойности, нулеви и извън ранг вноски.

validationschemanumbersboundaries

Използвайте вградените помощни функции за string, number, date и array

Total.js разширява String, Number, Date и Array с помощни функции за slug, хешове, форматиране, разчитане, групиране и търсене и предлага U.extend() и U.clone() за обекти.

utilitieshelpersstringarraydate

Рекордни събития за одитиране с индиански одит

Следвайте опцията за одитиране и изрично обаждайте $.audit(), без да се свързвате с услуга за записване или да пишете чувствителен вход към дневник на заявлението.

actionsauditsecurity

Работа в режим debug и release

Опциите на Total.run() избират между режим debug и release; прочетете режима от DEBUG и ограничете маршрути до един режим с @debug и @release.

deploymentdebugreleaseenvironment

Тествайте приложението с вградения изпълнител на тестове

Напишете test.js, който стартира приложението, регистрира тестове с Test.push(), проверява резултатите с Test.print() и завършва с ненулев код, когато някой се провали.

testingci

Използвайте всички ЦПУ корени в режим на кластер

Започнете няколко работни процеси зад един порт с опцията за кластер на Total.run(), и да знаете какво се споделя между тях и какво не е.

clusterperformancedeployment

Заредете JavaScript модул от URL с IMPORT()

Изтеглете файл с JavaScript от адрес, пазете го в папката tmp, заредете го с require и използвайте онова, което експортира; второто извикване не го тегли отново.

modulesdownloaddependencies

Изградете поток от компоненти с Flow.load() и го изпълнете с exec()

Опишете FlowStream като компоненти и връзките между тях, заредете го в приложението, изпратете съобщение през него и прочетете отговора, и сменете конфигурацията на компонент, докато работи.

flowflowstreamcomponentsautomation

Тествайте компонент на Flow самостоятелно с Flow.test()

Заредете един компонент в собствен поток, изпратете му съобщение от кода и прочетете какво изпраща към изходите си, без да изграждате целия поток.

flowflowstreamcomponentstests

Извикайте Python програма, която остава пусната, с PYPELINE()

Стартирайте Python скрипт от приложението, изпращайте му JSON съобщения през сокет и получавайте отговорите му, като скриптът се рестартира, ако умре.

pythonpypelineintegrationsai

Енуми и граници за валидиране на формат

Извършване на положителни и отрицателни компактни схеми проверки за енуми, Цвет, Base64, Zip, Icon, JSON и IP формати.

total5reference

Ограниченията на обслужването на TotalAPI и Componentator

Проверявайте деактивирания отдел TotalAPI и локалното повторно използване на Componentator без да правите външни повиквания за обслужване.

total5reference

Операции на QueryBuilder, филтри и договор за шофьор

Инспектирайте опциите на DB и NEWDB, резултатите, изкривяването, грешките и формите на филтрирането, без да обърквате строителя с драйвер на базата данни.

total5reference

Създаване и изпълнение на индиентен сървър компонент

Компилирайте доверяван Total.js компонент HTML, създавайте пример, валидирате съобщения, пренареждайте и пуснете ресурсите му.

total5reference

Контролни обаждания, ръчно разрешаване и условни отговори

Извършване на jsonstring, отговори, направени, успешни, упълномощени, персонализирани и последно модифицирани обработка.

total5reference

Опции за транспорта на действие и експлицитно TMS публикуване

Тест csrf, криптиране, компресиране и публикуване срещу истински HTTP и TMS вместо да се приеме метаданни налагане на поведение.

total5reference

Невалидирани стационарни каски за освобождаване с Touch

Сервирайте и модифицирайте временно статичен файл, изтрийте скритото му представяне и премахнете скритите 404 записи.

total5reference

OPENCLIENT RPC, събития и споделени връзки

Упражнявайте OPENCLIENT с локална фиксиране на протокола, включително инициализация, корелация на повикванията, времеви разходи и логическо отстраняване на клиента.

total5reference

Изтегляне на файлове FlowStream и изпълнение на изолирани работници

Извършете същата надеждна схема на FlowStream като работник лента и детски процес, изтегляне .flow файлове и премахване на примери.

total5reference

Живот на действие, разширяване на резултатите и администраторски пазители

Упражнения за влизане, излизане, разширяване, съвпадение и съвпадане с валидни, невалидни и неуспешни действия.

total5reference

Истински SQL с Native QueryBuilder и SQLite транзакции

Регистрирайте ограничен SQLite драйвер, изпълнете параметризирания CRUD и проверете ангажимента, ограничавате неуспеха и се въртите срещу файловата база данни.

total5reference

Изтеглете ресурсите на приложението и избягвайте изненадите за изпълнение

Извършете LOAD в отделен процес и проверете NPMINSTALL повторно използване на вече наличен пакет без достъп до мрежата.

total5reference

Търсене на реална локална LDAP директория

Търсете изолирана OpenLDAP инстанция и проверете резултата от връзката в обща стойност5 0.0.19.

total5reference

Изтегляне на файлове като пакет от Total.js

Създайте локален пакет, заредете дефинициите си чрез стартиращия изтеглятел на рамката и проверете екстракцията в .src.

total5reference

Собственото изтегляне на файлове и изграждане на линкове за запитване

Проверете по подразбиране изтегляне почистване, автоклериране(фалшиви), експлицитно ясно и href търсене замяна.

total5reference