ForgeTotal.js 5
nl

Total.js 5 (backend)

Routes, acties, schema’s, databases, WebSocket, views en alles wat op de server draait.

ReceptTags

Een JSON-body valideren met een actie

Definieer een invoerschema op een actie en laat Total.js ongeldige verzoeken afwijzen voordat jouw code draait.

routingactionsvalidation

Acties beschikbaar stellen via één API-endpoint

Declareer ROUTE('API ...')-endpoints zodat een client veel acties kan aanroepen met POST {schema, data} op één URL.

routingapiactions

URL-parameters in een route lezen

Declareer dynamische segmenten zoals {id} in een route en lees ze uit $.params.

routingparams

Veel URL's opvangen met een wildcard-route

Eindig een route met * om alles onder een pad te vangen en bewaar specifieke routes voor de uitzonderingen.

routing

Elke HTTP-methode afhandelen

Declareer routes voor GET, POST, PUT, PATCH en DELETE en lees de methode uit $.method.

routinghttp

Een route beperken met flags

Voeg @flags toe zoals @json, @xml of @upload zodat een route alleen past bij de verzoeken waarvoor hij bedoeld is.

routingflags

De query string en de request-body lezen

Gebruik $.query voor de URL-parameters en $.body voor JSON- of formuliergegevens in een route-handler.

routingrequest

De payloadgrootte en de timeout van een route beperken

Voeg <1kb of <10s toe aan een route om de grootte van het verzoek of de tijd van de handler te begrenzen.

routingsecuritylimits

Getypeerde routeparameters in een actie declareren

Gebruik de optie params van NEWACTION zodat Total.js de URL-parameters valideert voordat jouw code draait.

actionsroutingvalidation

Kiezen hoe je antwoordt

Stuur JSON, HTML, platte tekst, XML, redirects, lege antwoorden of binaire gegevens vanuit een route-handler.

routingresponse

Headers lezen en met cookies werken

Lees request-headers uit $.headers, lees en schrijf cookies met $.cookie() en stel response-headers in.

routingheaderscookies

Bestandsuploads ontvangen

Accepteer multipart/form-data met de flag @upload en lees de geüploade bestanden uit $.files.

routinguploadfiles

Cross-origin-verzoeken toestaan met CORS

Roep CORS() aan om één origin, meerdere origins of elke origin je routes vanuit een browser te laten gebruiken.

securitycorsrouting

Een view renderen zonder handler te schrijven

Een route zonder handler rendert de view die naar zijn URL is genoemd, of de view die je opgeeft.

routingviews

Kies de juiste input type voor een actie

Selecteer typen voor input, parameter, query en output definities, inclusief conversies en afgewezen waarden.

actionsvalidationtypes

De query string in een actie valideren

Declareer query in NEWACTION om de URL-parameters te valideren en om te zetten, en lees de opgeschoonde waarden uit $.query.

actionsvalidationquery

Het antwoord van een actie filteren met output

Declareer output zodat alleen de genoemde velden de actie verlaten, bijvoorbeeld om nooit een wachtwoordhash te lekken.

actionssecurity

Een gebruiker of permissie vereisen in een actie

Gebruik de opties user en permissions van NEWACTION zodat autorisatie bij de actie staat en niet in elke route.

actionsauthsecurity

Routes beschermen met AUTH

Authenticeer elk verzoek met AUTH() en beperk routes tot ingelogde of anonieme gebruikers met de voorvoegsels + en -.

authroutingsecurity

De route binnen de actie declareren

Zet de route in de optie route van NEWACTION en houd URL, validatie en code op één plek.

actionsrouting

Gebruikers inloggen met de ingebouwde sessie-authenticatie

Geef AUTH() een optie-object voor ondertekende sessiecookies, een sessieopslag en uitloggen zonder de infrastructuur te schrijven.

authsessionssecurity

Een actie aanroepen vanuit je eigen code

Gebruik ACTION() om een actie uit te voeren vanuit een timer, een job of een andere actie, met eigen payload, query en gebruiker.

actions

Meerdere acties in één route koppelen

Som meerdere acties op na --> om ze na elkaar uit te voeren op dezelfde payload en geef met (response) aan welke antwoordt.

actionsrouting

Een middleware aan een route toevoegen

Registreer een middleware met MIDDLEWARE() en koppel hem aan routes met de flag #name.

middlewareroutingsecurity

Een WebSocket-chat bouwen

Declareer een SOCKET-route, luister naar berichten en stuur ze naar alle verbonden clients.

websocketrealtime

Vanuit Node verbinden met een WebSocket-server

Gebruik WEBSOCKETCLIENT om vanuit je app een WebSocket-verbinding te openen, berichten te sturen en op antwoorden te reageren.

websocketrealtimeintegrations

Je code ontkoppelen met events

Verstuur en beluister applicatie-events met EMIT(), ON(), ONCE() en OFF() zodat modules elkaar niet rechtstreeks aanroepen.

eventsarchitecture

Gegevens opslaan en lezen met de ingebouwde NoSQL-database

Voeg documenten in en bevraag ze met NOSQL() en stel ze beschikbaar via acties, zonder een database te installeren.

nosqldatabaseactions

De NoSQL-database bevragen

Filter, sorteer, pagineer en projecteer documenten met where, in, between, search, sort, take, skip en fields.

nosqldatabasequeries

NoSQL-documenten bijwerken en verwijderen

Wijzig documenten met update() en where(), verwijder ze met remove() en lees hoeveel er geraakt zijn.

nosqldatabase

De DATA-API gebruiken om van database te wisselen

DATA adresseert een tabel als database/tabel, zodat dezelfde querycode werkt met de ingebouwde NoSQL en met andere databases.

databasenosqlquerybuilder

Waarden in het geheugen cachen

Bewaar waarden met CACHE.set() en een verlooptijd, lees ze met CACHE.get() en wis ze met remove() of reset().

cacheperformance

Kleine instellingen bewaren met MEMORIZE

Houd een JSON-object op schijf dat herstarts overleeft, voor tellers en instellingen die geen database nodig hebben.

storagesettings

Unieke id's en hashes genereren

Maak id's met UID() en GUID() en hashes met HASH(), en weet welke je waar gebruikt.

utilitiesidssecurity

Trage resultaten op schijf cachen met FILECACHE

Gebruik FILECACHE() om een resultaat één keer te berekenen en een periode uit een bestand te hergebruiken, zelfs na een herstart.

cacheperformancefiles

Geüploade bestanden opslaan met FILESTORAGE

Bewaar uploads in een beheerde bestandsopslag met file.fs() en stuur ze terug met $.filefs().

filesuploadstorage

Een view met een layout renderen

Render een HTML-view met een model, loop over gegevens en geef waarden door aan de layout.

viewslayouttemplates

Voorwaarden en escaping in views gebruiken

Vertak met @{if}, @{else} en @{fi}, en kies tussen geëscapete uitvoer @{value} en ruwe HTML @{!value}.

viewstemplates

Over arrays en objecten lopen in views

Herhaal markup met @{foreach} voor arrays en objecten en gebruik de index van het huidige element.

viewstemplates

Views en assets opnemen

Hergebruik markup met @{view()} en voeg scripts en stijlen toe met @{import()}.

viewstemplatesassets

Secties van de layout vullen vanuit een view

Declareer een sectie in een view met @{section} en druk hem in de layout af met @{section('name')}, en kies per verzoek een andere layout.

viewslayouttemplates

View-helpers toevoegen en de config in views lezen

Registreer functies in DEF.helpers om ze vanuit views aan te roepen en lees config-waarden met @{'%key'}.

viewstemplatesconfig

Markdown naar HTML omzetten

Gebruik het prototype String.markdown() om Markdown-tekst naar HTML te renderen, voor inhoud van gebruikers of uit bestanden.

contentmarkdown

Tekst genereren met Tangular-templates

Gebruik Tangular.render() om templates voor e-mails, documenten en berichten te vullen met voorwaarden, lussen en helpers.

templatescontent

Render templates uit tekst, bestanden en URL's met TEMPLATE

Gebruik TEMPLATE() om een Tangular-template te renderen die een tekst, een bestand uit de templatemap of een URL is, met eigen helpers en een standaardmodel.

templatescontenttangular

Vergelijk twee lijsten met DIFFARR: wat toe te voegen, bij te werken en te verwijderen

Gebruik DIFFARR() om de in de database opgeslagen items te vergelijken met die van een formulier en krijg de items die moeten worden toegevoegd, bijgewerkt en verwijderd.

utilitiesarraysforms

Query Builder: DB() en NEWDB() met uw eigen database driver

Build queries with DB(.find().where(.sort() en laat een geregistreerde bestuurder met NEWDB() ze uitvoeren, terwijl een geregisterde bestuurder implementaties ondersteunde databankactiviteiten.

databasequerybuilder

De app configureren met het bestand config

Houd instellingen in een bestand config en lees ze via CONF.

configsettings

Gegevens met een sleutel versleutelen en ontsleutelen

Zet objecten om in ondoorzichtige tokens met ENCRYPT() en lees ze terug met DECRYPT(), voor ondertekende links en kortlevende tokens.

securitycrypto

Roep externe diensten aan met API() en de drivers van NEWAPI()

Registreer een driver voor een dienst met NEWAPI() en roep hem aan vanuit acties met API(name, schema, data), in dezelfde stijl van callback, fout en promise als de query builder.

apiservicesintegrations

Spreek naar taalmodellen met AIMODEL(), NEWAIMODELL() en AIPARSER()

Maak een chatverzoek met AIMODEL(), laat een chauffeur geregistreerd met NEWAIMODAL() het verzenden aan een provider, en lees de streamed antwoorden met AIPARSER().

aillmintegrations

Mislukte pogingen beperken met BLOCKED

Tel pogingen per IP-adres met BLOCKED() en antwoord 429 zodra de limiet is bereikt, voor logins en wachtwoordresets.

securityrate-limiting

De kleine wereldwijde assistenten: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY en PROMISIFY

Gebruik applicatie-globalen, datum, diepe kopieën, vragenlijsten en beloofde hulpverleners.

globalsutilitieshelpers

Verzamel fouten met ErrorBuilder, registreer ze met ERROR() en houd een auditspoor bij met AUDIT()

Antwoord met meerdere fouten tegelijk met ErrorBuilder, het antwoord SUCCESS(), hoe ERROR() mislukkingen registreert en hoe AUDIT() aan een logbestand toevoegt wie wat deed.

errorsloggingaudit

Stel werk uit met setTimeout2() en clearTimeout2()

Gebruik setTimeout2() om een functie één keer uit te voeren nadat de aanroepen ophouden, waarbij de vorige timer met hetzelfde id wordt vervangen, en annuleer hem met clearTimeout2().

timersdebounceutilities

Tokens gekoppeld aan een browser met ENCRYPTREQ() en DECRYPTREQ()

Versleutel een waarde samen met de user agent (en optioneel het IP-adres) van het verzoek en lees haar alleen terug van dezelfde client.

securityencryptiontokens

Maak een back-up van een map met BACKUP() en RESTORE(), en voer opdrachten uit met SHELL()

Pak een map in één bestand en pak het weer uit met BACKUP() en RESTORE(), en voer een shellopdracht uit in de projectmap met SHELL().

backupshellfiles

Zet de applicatie in onderhoud met PAUSESERVER()

Pauzeer de server op naam zodat elk verzoek een 503-pagina krijgt, hervat hem en weet dat de aanroep zonder tweede argument omschakelt.

maintenanceserveravailability

Bedrijfsregels als tekst met NEWMACRO()

Compileer kleine regels in een eenvoudige taal (IF, ELSE, AND, OR, RETURN, helper-aanroepen) tot een functie die je met een model uitvoert, zodat de regels in een bestand of een database kunnen leven.

macrosrulesscripting

Statische bestanden uit de map public serveren

Bestanden in de map public worden automatisch geserveerd, zonder route.

staticfiles

Roep vanaf de server een ander adres aan met AJAX()

Gebruik AJAX() om een HTTP-adres aan te roepen met een JSON-body en het geparste antwoord te krijgen, als promise of met een callback, en weet wat er gebeurt met fouten en XML.

httprequestsajax

Andere HTTP-API's aanroepen met RESTBuilder

Doe GET- en POST-verzoeken naar een andere service, stel headers en een timeout in en lees de status en het geparsede antwoord.

integrationshttprestbuilder

Geef een stream vrij als hij eindigt met CLEANUP()

Gebruik CLEANUP() om een stream te vernietigen zodra hij klaar is of is mislukt, zodat er geen bestandshandles open blijven, met een callback of als promise.

streamsfilescleanup

Een view in meerdere talen vertalen

Markeer teksten in views met @(...) en lever vertalingen in resourcebestanden die LOCALIZE() kiest.

localizationi18nviews

Code volgens een schema uitvoeren met CRON

Registreer een functie met CRON() en een cron-regel van vijf velden, en leer wanneer de controle draait en hoe je een taak verwijdert.

cronschedulerjobs

Zwaar werk uitvoeren in een thread of kindproces

Gebruik NEWTHREAD() om een workerthread te starten, er berichten naartoe te sturen en de antwoorden te lezen zonder het hoofdproces te blokkeren.

workerthreadperformance

Deel een paar worker-threads met NEWTHREADPOOL()

Start een vast aantal workers, leen er een met pool.exec() als er werk is, geef hem terug met release() en laat de andere taken wachten op een vrije worker.

workerthreadpoolperformance

Andere servers aanroepen met REQUEST en bestanden opslaan met DOWNLOAD

Gebruik REQUEST() voor HTTP-aanroepen op laag niveau met volledige controle over methode, headers, query en body, en DOWNLOAD() om een extern bestand naar schijf te streamen.

httprequestdownload

Een e-mail versturen vanuit een view

Configureer SMTP in het bestand config, render een view als berichttekst met MAIL() en verstuur kant-en-klare HTML met HTMLMAIL().

mailsmtpemail

De pagina's 404 en 401 aanpassen

Registreer handlers ROUTE('#404') en ROUTE('#401') om de ingebouwde foutpagina's te vervangen en roep ze zelf aan met $.fallback().

errors404routing

Stuur jezelf een bericht met LOGMAIL()

Stuur een gewone tekst of JSON naar een adres zonder view, voor logs en meldingen, via dezelfde SMTP-instellingen als MAIL().

mailsmtplogging

Bestanden en streams naar de client sturen

Lever een bestand van schijf met $.file(), forceer een downloadnaam, stream gegenereerde inhoud met $.stream() en antwoord met 404 als het bestand ontbreekt.

filesdownloadstream

Verzoeken doorsturen naar een andere server

Gebruik PROXY() om een URL-prefix aan een upstream-server te koppelen, kies hoe het pad wordt gekopieerd en gebruik $.proxy() om één route door te sturen.

proxygatewayintegrations

Publiceer een lokale server via een tunnel met PROXYSERVER() en PROXYCLIENT()

Laat een Total.js-server met een openbaar adres verzoeken doorsturen naar een programma dat alleen op een privémachine draait, met een WebSocket-tunnel die de privékant opent.

proxytunnelwebsocketintegrations

Formulieren en verzoeken beschermen met CSRF-tokens

Maak een token met $.csrf(), stuur het mee met het verzoek en controleer het in een middleware zodat verzoeken van andere sites worden geweigerd.

securitycsrfmiddleware

Acties groeperen in een schema en input-definities hergebruiken

Gebruik NEWSCHEMA() om samenhangende acties onder één naam te declareren en deel een input-definitie tussen acties met een bestand in jsonschemas/.

schemaactionsvalidation

Een verwerkingspijplijn bouwen met transforms

Registreer meerdere stappen onder één naam met NEWTRANSFORM() en laat een waarde er in volgorde doorheen lopen met TRANSFORM().

transformpipeline

Berichten uitwisselen met de Total Messaging Service

Schakel het TMS-WebSocket-eindpunt in en laat externe clients gepubliceerde berichten ontvangen, berichten naar je app sturen en haar functies aanroepen.

tmspublishsubscribewebsocketmessaging

Een volledige REST-resource bouwen met acties

Declareer de acties query, read, insert, update, patch en remove op de NoSQL-database, met validatie, een 404 voor ontbrekende records en routes die elke HTTP-methode koppelen.

actionscrudrestnosql

Een WebSocket-route configureren met vlaggen, authenticatie en parameters

Kies het berichttype met @text of @binary, eis een ingelogde gebruiker met het voorvoegsel +, controleer een CSRF-token met @csrf en lees URL-parameters in SOCKET-routes.

websocketrealtimesecurity

CSS, JavaScript en HTML minificeren en samenvoegen

Statische bestanden en HTML-antwoorden worden automatisch geminificeerd; gebruik MERGE() om meerdere bestanden als één te leveren en de $minify-instellingen om het uit te zetten.

performancecssjavascripthtmlminification

Afbeeldingen schalen en converteren

Verwerk afbeeldingen met Image.load(), koppel bewerkingen voor formaat, uitsnede en formaat aan elkaar, sla het resultaat op, meet de afmetingen en lever miniaturen met $.image().

imagesthumbnailsgraphicsmagick

Controleer de numerieke schema-grenzen in plaats van een volledige coercium te nemen

Check Int, SmallInt, TinyInt en Number2 met inheemse compacte schema's, inclusief fractiele waarden, nul- en out-of-range input.

validationschemanumbersboundaries

De ingebouwde helpers voor string, number, date en array gebruiken

Total.js breidt String, Number, Date en Array uit met helpers voor slugs, hashes, opmaak, parsen, groeperen en zoeken en biedt U.extend() en U.clone() voor objecten.

utilitieshelpersstringarraydate

Recordactie-audit evenementen met een inheemse audit zink

Volg de auditoptie en uitdrukkelijke $.audit() oproepen zonder contact op te nemen met een logging service of het schrijven van gevoelige input naar een applicatie-log.

actionsauditsecurity

Draaien in debug- en releasemodus

De opties van Total.run() kiezen tussen debug- en releasemodus; lees de modus uit DEBUG en beperk routes tot één modus met @debug en @release.

deploymentdebugreleaseenvironment

De applicatie testen met de ingebouwde testrunner

Schrijf een test.js die de app start, tests registreert met Test.push(), resultaten controleert met Test.print() en eindigt met een code ongelijk aan nul wanneer er een mislukt.

testingci

Gebruik alle CPU-cores met de clustermodus

Begin meerdere werknemersprocessen achter één port met de clusteroptie van Total.run(), en weet wat er gedeeld is tussen hen en wat niet.

clusterperformancedeployment

Laad een JavaScript-module vanaf een URL met IMPORT()

Download een bestand met JavaScript van een adres, bewaar het in de map tmp, laad het met require en gebruik wat het exporteert; de tweede aanroep downloadt het niet opnieuw.

modulesdownloaddependencies

Bouw een stroom van componenten met Flow.load() en voer hem uit met exec()

Beschrijf een FlowStream als componenten en de verbindingen ertussen, laad hem in de applicatie, stuur er een bericht doorheen en lees het antwoord, en wijzig de configuratie van een component terwijl hij draait.

flowflowstreamcomponentsautomation

Test een Flow-component afzonderlijk met Flow.test()

Laad één component in een eigen stroom, stuur hem een bericht vanuit de code en lees wat hij naar zijn uitgangen stuurt, zonder de hele stroom te bouwen.

flowflowstreamcomponentstests

Roep een Python-programma dat blijft draaien aan met PYPELINE()

Start een Python-script vanuit de applicatie, stuur het JSON-berichten via een socket en ontvang zijn antwoorden, waarbij het script opnieuw wordt gestart als het sterft.

pythonpypelineintegrationsai

Enums en string-format validatiegrens

Voer positieve en negatieve compacte schema-checks voor enums, Color, Base64, Zip, Icon, JSON en IP-formaat.

total5reference

TotalAPI en Componentator servicegrenzen

Controleer de ingeschakelde TotalAPI-afdeling en Componentator-locale caches opnieuw zonder externe dienstverlening te doen.

total5reference

QueryBuilder-activiteiten, filters en bestuurderscontract

Controleer inheemse DB- en NEWDB-opties, gekwalificeerde resultaten, fouten en filters zonder een bouwer te verwarren met een database-driver.

total5reference

Compileren en uitvoeren van een native server component

Compileer vertrouwde Total.js-component HTML, creëer een voorbeeld, valideren van berichten, herstelt het en laat zijn middelen vrij.

total5reference

Controller callbacks, handmatige toestemming en voorwaardelijke antwoorden

Uitvoeren van jsonstring, reageren, doen, succesvol maken, aanpassen en Last-Modified handelen.

total5reference

Actie transportopties en uitdrukkelijke TMS publicatie

Test csrf, versleutelen, compressen en publiceren tegen echte HTTP en TMS in plaats van metadata verplicht gedrag.

total5reference

Invalideerde release-mode statische caches met TOUCH

Blijf een tijdelijk statische bestand aanpassen en wijzigen, verwijder de cached-representatie en verwijder cached 404-inscripties.

total5reference

OPENCLIENT RPC, evenementen en gedeelde verbindingen

Oefen OPENCLIENT met een lokale protocol fixtuur, inclusief initialisering, callback correlatie, timeout en logisch-client verwijderen.

total5reference

Laden van FlowStream bestanden en uitvoeren van geïsoleerde werknemers

Voer hetzelfde vertrouwde FlowStream schema als een werknemer thread en een kinderproces, laden .flow bestanden en verwijderen van instanties.

total5reference

Actie levenscyclus hooks, resultaat uitbreiding en administrator wachten

Exerciseer oninput, onoutput, extend, sa en su met geldig, ongeldig en mislukte acties.

total5reference

Real SQL met native QueryBuilder en SQLite transacties

Registreer een beperkte SQLite-driver, uitvoeren van een parameterde CRUD en verifieer commit, beperken van falen en rollback tegen een bestand ondersteund database.

total5reference

Load applicatiebronnen en vermijd runtime pakketverrassingen

Voer LOAD in een afzonderlijk proces en controleer NPMINSTALL opnieuw gebruik van een al beschikbare pakket zonder netwerktoegang.

total5reference

Een echte lokale LDAP-directie zoeken

Zoek een geïsoleerde OpenLDAP-instantie en controleer het bindresultaat in totaal5 0.0.19.

total5reference

Verpakkingsapplicaties als een Total.js-pakket

Creëer een lokale bundel, laad de definities via de framework startup loader en controleer de extractie in .src.

total5reference

Uw eigen upload-bestand schoonmaken en query links bouwen

Controleer standaard upload cleanup, autoclear(valse), explicit clear en href query vervanging.

total5reference