Total.js 5 (backend)
Διαδρομές, ενέργειες, σχήματα, βάσεις δεδομένων, WebSocket, προβολές και ό,τι εκτελείται στον διακομιστή.
Επικύρωση ενός JSON body με μια ενέργεια
Ορίστε ένα σχήμα εισόδου σε μια ενέργεια και αφήστε το Total.js να απορρίπτει τα άκυρα αιτήματα πριν εκτελεστεί ο κώδικάς σας.
Έκθεση ενεργειών μέσω ενός μόνο API endpoint
Δηλώστε endpoints ROUTE('API ...') ώστε ένας client να καλεί πολλές ενέργειες με POST {schema, data} σε ένα μόνο URL.
Ανάγνωση παραμέτρων URL σε μια διαδρομή
Δηλώστε δυναμικά τμήματα όπως {id} σε μια διαδρομή και διαβάστε τα από το $.params.
Σύλληψη πολλών URL με διαδρομή wildcard
Τελειώστε μια διαδρομή με * για να ταιριάξετε ό,τι υπάρχει κάτω από μια διαδρομή και κρατήστε συγκεκριμένες διαδρομές για τις εξαιρέσεις.
Χειρισμός κάθε μεθόδου HTTP
Δηλώστε διαδρομές για GET, POST, PUT, PATCH και DELETE και διαβάστε τη μέθοδο από το $.method.
Περιορισμός μιας διαδρομής με flags
Προσθέστε @flags όπως @json, @xml ή @upload ώστε μια διαδρομή να ταιριάζει μόνο με τα αιτήματα για τα οποία προορίζεται.
Ανάγνωση του query string και του body του αιτήματος
Χρησιμοποιήστε το $.query για τις παραμέτρους του URL και το $.body για δεδομένα JSON ή φόρμας σε έναν handler διαδρομής.
Περιορισμός του μεγέθους payload και του timeout μιας διαδρομής
Προσθέστε <1kb ή <10s σε μια διαδρομή για να περιορίσετε το μέγεθος του αιτήματος ή τον χρόνο που μπορεί να πάρει ο handler.
Δήλωση τυποποιημένων παραμέτρων διαδρομής σε μια ενέργεια
Χρησιμοποιήστε την επιλογή params του NEWACTION ώστε το Total.js να επικυρώνει τις παραμέτρους του URL πριν εκτελεστεί ο κώδικάς σας.
Επιλογή του τρόπου απάντησης
Στείλτε JSON, HTML, απλό κείμενο, XML, ανακατευθύνσεις, κενές απαντήσεις ή δυαδικά δεδομένα από έναν handler διαδρομής.
Ανάγνωση headers και εργασία με cookies
Διαβάστε τα request headers από το $.headers, διαβάστε και γράψτε cookies με $.cookie() και ορίστε response headers.
Λήψη μεταφορτώσεων αρχείων
Δεχτείτε multipart/form-data με το flag @upload και διαβάστε τα αρχεία που μεταφορτώθηκαν από το $.files.
Να επιτρέψετε αιτήματα από άλλες προελεύσεις με CORS
Καλέστε το CORS() για να επιτρέψετε σε μία, σε πολλές ή σε κάθε προέλευση να χρησιμοποιεί τις διαδρομές σας από έναν περιηγητή.
Απόδοση μιας προβολής χωρίς να γράψετε handler
Μια διαδρομή χωρίς handler αποδίδει την προβολή που φέρει το όνομα του URL της ή την προβολή που θα ονομάσετε.
Επιλέξτε τον σωστό τύπο εισόδου για μια δράση
Επιλέξτε τύπους εισόδου, παραμέτρων, ορισμών αναζήτησης και εξόδου, συμπεριλαμβανομένων των μετατροπών και των απορριφθέντων τιμών.
Επικύρωση του query string σε μια ενέργεια
Δηλώστε query στο NEWACTION για να επικυρώνετε και να μετατρέπετε τις παραμέτρους του URL και διαβάστε τις καθαρές τιμές από το $.query.
Φιλτράρισμα της απάντησης μιας ενέργειας με output
Δηλώστε output ώστε μόνο τα αναφερόμενα πεδία να φεύγουν από την ενέργεια, για παράδειγμα για να μη διαρρεύσει ποτέ το hash ενός κωδικού.
Απαίτηση χρήστη ή δικαιώματος σε μια ενέργεια
Χρησιμοποιήστε τις επιλογές user και permissions του NEWACTION ώστε η εξουσιοδότηση να βρίσκεται δίπλα στην ενέργεια και όχι σε κάθε διαδρομή.
Προστασία διαδρομών με AUTH
Πιστοποιήστε κάθε αίτημα με AUTH() και περιορίστε τις διαδρομές σε συνδεδεμένους ή ανώνυμους χρήστες με τα προθέματα + και -.
Δήλωση της διαδρομής μέσα στην ενέργεια
Βάλτε τη διαδρομή στην επιλογή route του NEWACTION και κρατήστε το URL, την επικύρωση και τον κώδικα σε ένα σημείο.
Σύνδεση χρηστών με την ενσωματωμένη ταυτοποίηση συνεδρίας
Περάστε ένα αντικείμενο επιλογών στο AUTH() για υπογεγραμμένα cookies συνεδρίας, αποθήκη συνεδριών και αποσύνδεση χωρίς να γράψετε την υποδομή.
Κλήση μιας ενέργειας από τον δικό σας κώδικα
Χρησιμοποιήστε το ACTION() για να εκτελέσετε μια ενέργεια από χρονομετρητή, εργασία ή άλλη ενέργεια, με δικό της payload, query και χρήστη.
Αλυσίδωση πολλών ενεργειών σε μία διαδρομή
Απαριθμήστε πολλές ενέργειες μετά το --> για να εκτελούνται διαδοχικά πάνω στο ίδιο payload και σημειώστε με (response) ποια απαντά.
Προσθήκη ενός middleware σε μια διαδρομή
Καταχωρίστε ένα middleware με MIDDLEWARE() και συνδέστε το σε διαδρομές με το flag #name.
Δημιουργία ενός chat WebSocket
Δηλώστε μια διαδρομή SOCKET, ακούστε μηνύματα και μεταδώστε τα σε όλους τους συνδεδεμένους clients.
Σύνδεση σε διακομιστή WebSocket από το Node
Χρησιμοποιήστε το WEBSOCKETCLIENT για να ανοίξετε σύνδεση WebSocket από την εφαρμογή σας, να στείλετε μηνύματα και να αντιδράσετε στις απαντήσεις.
Αποσύζευξη του κώδικα με events
Εκπέμψτε και ακούστε events της εφαρμογής με EMIT(), ON(), ONCE() και OFF() ώστε τα modules να μη καλούν άμεσα το ένα το άλλο.
Αποθήκευση και ανάγνωση δεδομένων με την ενσωματωμένη βάση NoSQL
Εισάγετε και ερωτήστε έγγραφα με NOSQL() και εκθέστε τα μέσω ενεργειών, χωρίς να εγκαταστήσετε βάση δεδομένων.
Ερωτήματα στη βάση NoSQL
Φιλτράρετε, ταξινομήστε, σελιδοποιήστε και προβάλετε έγγραφα με where, in, between, search, sort, take, skip και fields.
Ενημέρωση και αφαίρεση εγγράφων NoSQL
Αλλάξτε έγγραφα με update() και where(), διαγράψτε τα με remove() και διαβάστε πόσα επηρεάστηκαν.
Χρήση του DATA API για αλλαγή βάσης δεδομένων
Το DATA διευθυνσιοδοτεί έναν πίνακα ως βάση/πίνακας, ώστε ο ίδιος κώδικας ερωτημάτων να λειτουργεί με το ενσωματωμένο NoSQL και με άλλες βάσεις.
Προσωρινή αποθήκευση τιμών στη μνήμη
Αποθηκεύστε τιμές με CACHE.set() και λήξη, διαβάστε τες με CACHE.get() και καθαρίστε τες με remove() ή reset().
Διατήρηση μικρών ρυθμίσεων με MEMORIZE
Κρατήστε στον δίσκο ένα αντικείμενο JSON που επιβιώνει σε επανεκκινήσεις, για μετρητές και ρυθμίσεις που δεν χρειάζονται βάση δεδομένων.
Δημιουργία μοναδικών id και hashes
Δημιουργήστε id με UID() και GUID() και hashes με HASH() και ξέρετε ποιο να χρησιμοποιείτε πού.
Προσωρινή αποθήκευση αργών αποτελεσμάτων στον δίσκο με FILECACHE
Χρησιμοποιήστε το FILECACHE() για να υπολογίσετε ένα αποτέλεσμα μία φορά και να το επαναχρησιμοποιείτε από αρχείο για ένα διάστημα, ακόμη και μετά από επανεκκίνηση.
Αποθήκευση μεταφορτωμένων αρχείων με FILESTORAGE
Αποθηκεύστε μεταφορτώσεις σε διαχειριζόμενο αποθηκευτικό χώρο αρχείων με file.fs() και στείλτε τες πίσω με $.filefs().
Απόδοση μιας προβολής με layout
Αποδώστε μια προβολή HTML με μοντέλο, διασχίστε δεδομένα και περάστε τιμές στο layout.
Χρήση συνθηκών και escaping στις προβολές
Διακλαδίστε με @{if}, @{else} και @{fi} και επιλέξτε ανάμεσα σε έξοδο με escape @{value} και ακατέργαστο HTML @{!value}.
Διάσχιση πινάκων και αντικειμένων στις προβολές
Επαναλάβετε markup με @{foreach} για πίνακες και αντικείμενα και χρησιμοποιήστε τον δείκτη του τρέχοντος στοιχείου.
Συμπερίληψη προβολών και πόρων
Επαναχρησιμοποιήστε markup με @{view()} και προσθέστε scripts και στυλ με @{import()}.
Συμπλήρωση ενοτήτων του layout από μια προβολή
Δηλώστε μια ενότητα σε μια προβολή με @{section} και εκτυπώστε την στο layout με @{section('name')} και διαλέξτε άλλο layout ανά αίτημα.
Προσθήκη helpers προβολής και ανάγνωση του config στις προβολές
Καταχωρίστε συναρτήσεις στο DEF.helpers για να τις καλείτε από τις προβολές και διαβάστε τιμές config με @{'%key'}.
Μετατροπή Markdown σε HTML
Χρησιμοποιήστε το πρωτότυπο String.markdown() για να αποδώσετε κείμενο Markdown σε HTML, για περιεχόμενο που αποθηκεύουν χρήστες ή αρχεία.
Παραγωγή κειμένου με πρότυπα Tangular
Χρησιμοποιήστε το Tangular.render() για να συμπληρώνετε πρότυπα για e-mail, έγγραφα και μηνύματα με συνθήκες, βρόχους και helpers.
Αποδώστε πρότυπα από κείμενο, αρχεία και URL με το TEMPLATE
Χρησιμοποιήστε το TEMPLATE() για να αποδώσετε ένα πρότυπο Tangular που είναι κείμενο, αρχείο του φακέλου προτύπων ή URL, με δικούς του helpers και προεπιλεγμένο μοντέλο.
Συγκρίνετε δύο λίστες με το DIFFARR: τι να προστεθεί, να ενημερωθεί και να αφαιρεθεί
Χρησιμοποιήστε το DIFFARR() για να συγκρίνετε τα στοιχεία που είναι αποθηκευμένα στη βάση δεδομένων με αυτά μιας φόρμας και να πάρετε όσα πρέπει να προστεθούν, να ενημερωθούν και να αφαιρεθούν.
Δημιουργός αναζήτησης: DB() και NEWDB() με τον δικό σας οδηγό δεδομένων
Δημιουργήστε ερωτήσεις με το DB().find().where().sort() και αφήστε έναν οδηγό που είναι εγγεγραμμένος με το NEWDB() να τις εκτελεί, ενώ ένας εγγεγεγραμμισμένος οδηγός εφαρμόζει λειτουργίες βάσης δεδομένων.
Ρύθμιση της εφαρμογής με το αρχείο config
Κρατήστε τις ρυθμίσεις σε ένα αρχείο config και διαβάστε τες μέσω του CONF.
Κρυπτογράφηση και αποκρυπτογράφηση δεδομένων με κλειδί
Μετατρέψτε αντικείμενα σε αδιαφανή tokens με ENCRYPT() και διαβάστε τα πίσω με DECRYPT(), για υπογεγραμμένους συνδέσμους και βραχύβια tokens.
Καλέστε εξωτερικές υπηρεσίες με το API() και τους drivers του NEWAPI()
Καταχωρίστε έναν driver για μια υπηρεσία με το NEWAPI() και καλέστε τον από ενέργειες με το API(name, schema, data), με το ίδιο στυλ callback, σφάλματος και promise όπως ο query builder.
Συζητήστε με μοντέλα γλωσσών με AIMODEL(), NEWAIMODel() και AIPARSER()
Δημιουργήστε μια αίτηση συνομιλίας με το AIMODEL(), αφήστε έναν οδηγό που είναι εγγεγραμμένος με το NEWAIMODELL() να την στείλει σε έναν πάροχο και διαβάστε τις απαντήσεις που διαδίδονται με το EIPARSER().
Περιορισμός αποτυχημένων προσπαθειών με BLOCKED
Μετρήστε τις προσπάθειες ανά διεύθυνση IP με BLOCKED() και απαντήστε 429 μόλις φτάσετε το όριο, για συνδέσεις και επαναφορές κωδικών.
Οι μικροί παγκόσμιοι βοηθούς: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY και PROMISIFY
Χρησιμοποιήστε παγκόσμιες εφαρμογές, ημερομηνίες, βαθιά αντίγραφα, γραμμές ερωτήσεων και υποσχόμενους βοηθούς.
Συλλέξτε σφάλματα με το ErrorBuilder, καταγράψτε τα με το ERROR() και κρατήστε ίχνος ελέγχου με το AUDIT()
Απαντήστε με πολλά σφάλματα ταυτόχρονα με το ErrorBuilder, την απάντηση SUCCESS(), πώς το ERROR() καταγράφει τις αποτυχίες και πώς το AUDIT() προσθέτει σε ένα αρχείο καταγραφής ποιος έκανε τι.
Καθυστερήστε εργασία με τα setTimeout2() και clearTimeout2()
Χρησιμοποιήστε το setTimeout2() για να εκτελέσετε μια συνάρτηση μία φορά αφού σταματήσουν οι κλήσεις, αντικαθιστώντας τον προηγούμενο χρονοδιακόπτη με το ίδιο id, και ακυρώστε τον με το clearTimeout2().
Tokens δεμένα με έναν φυλλομετρητή με τα ENCRYPTREQ() και DECRYPTREQ()
Κρυπτογραφήστε μια τιμή μαζί με το user agent (και προαιρετικά τη διεύθυνση IP) του αιτήματος και διαβάστε την πίσω μόνο από τον ίδιο client.
Αντίγραφο ασφαλείας ενός φακέλου με BACKUP() και RESTORE(), και εκτέλεση εντολών με SHELL()
Πακετάρετε έναν κατάλογο σε ένα αρχείο και αποπακετάρετέ τον ξανά με BACKUP() και RESTORE(), και εκτελέστε μια εντολή του shell στον φάκελο του έργου με SHELL().
Βάλτε την εφαρμογή σε συντήρηση με το PAUSESERVER()
Θέστε σε παύση τον διακομιστή με όνομα ώστε κάθε αίτημα να παίρνει μια σελίδα 503, συνεχίστε τον και να ξέρετε ότι χωρίς δεύτερο όρισμα η κλήση εναλλάσσει την κατάσταση.
Επιχειρηματικοί κανόνες ως κείμενο με το NEWMACRO()
Μεταγλωττίστε μικρούς κανόνες γραμμένους σε μια απλή γλώσσα (IF, ELSE, AND, OR, RETURN, κλήσεις helpers) σε μια συνάρτηση που εκτελείτε με ένα μοντέλο, ώστε οι κανόνες να ζουν σε ένα αρχείο ή σε μια βάση δεδομένων.
Σερβίρισμα στατικών αρχείων από τον φάκελο public
Τα αρχεία του καταλόγου public σερβίρονται αυτόματα, χωρίς να χρειάζεται διαδρομή.
Καλέστε άλλη διεύθυνση με το AJAX() από τον διακομιστή
Χρησιμοποιήστε το AJAX() για να καλέσετε μια διεύθυνση HTTP με σώμα JSON και να πάρετε την αναλυμένη απάντηση, ως promise ή με callback, και μάθετε τι συμβαίνει με τα σφάλματα και το XML.
Κλήση άλλων HTTP API με RESTBuilder
Κάντε αιτήματα GET και POST σε άλλη υπηρεσία, ορίστε headers και timeout και διαβάστε την κατάσταση και την αναλυμένη απάντηση.
Απελευθερώστε ένα stream όταν τελειώσει με το CLEANUP()
Χρησιμοποιήστε το CLEANUP() για να καταστρέψετε ένα stream μόλις ολοκληρωθεί ή αποτύχει, ώστε να μη μένουν ανοιχτοί δείκτες αρχείων, με callback ή ως promise.
Μετάφραση μιας προβολής σε πολλές γλώσσες
Σημειώστε τα κείμενα στις προβολές με @(...) και δώστε μεταφράσεις σε αρχεία πόρων που επιλέγει το LOCALIZE().
Εκτελέστε κώδικα με πρόγραμμα χρησιμοποιώντας το CRON
Καταχωρίστε μια συνάρτηση με το CRON() και μια γραμμή cron πέντε πεδίων και μάθετε πότε τρέχει ο έλεγχος και πώς αφαιρείται μια εργασία.
Εκτέλεση βαριάς εργασίας σε νήμα ή θυγατρική διεργασία
Χρησιμοποιήστε το NEWTHREAD() για να ξεκινήσετε ένα νήμα worker, να του στείλετε μηνύματα και να διαβάσετε τις απαντήσεις χωρίς να μπλοκάρετε την κύρια διεργασία.
Μοιραστείτε μερικά νήματα εργασίας με το NEWTHREADPOOL()
Ξεκινήστε έναν σταθερό αριθμό workers, δανειστείτε έναν με το pool.exec() όταν υπάρχει δουλειά, επιστρέψτε τον με το release() και αφήστε τις άλλες εργασίες να περιμένουν έναν ελεύθερο worker.
Κλήση άλλων διακομιστών με REQUEST και αποθήκευση αρχείων με DOWNLOAD
Χρησιμοποιήστε το REQUEST() για κλήσεις HTTP χαμηλού επιπέδου με πλήρη έλεγχο της μεθόδου, των κεφαλίδων, του query και του σώματος και το DOWNLOAD() για να κατεβάσετε ένα απομακρυσμένο αρχείο στον δίσκο.
Αποστολή email από ένα view
Ρυθμίστε το SMTP στο αρχείο config, αποδώστε ένα view ως σώμα του μηνύματος με το MAIL() και στείλτε έτοιμο HTML με το HTMLMAIL().
Προσαρμόστε τις σελίδες 404 και 401
Καταχωρίστε χειριστές ROUTE('#404') και ROUTE('#401') για να αντικαταστήσετε τις ενσωματωμένες σελίδες σφάλματος και ενεργοποιήστε τους μόνοι σας με το $.fallback().
Στείλτε στον εαυτό σας ένα μήνυμα με το LOGMAIL()
Στείλτε ένα μήνυμα απλού κειμένου ή JSON σε μια διεύθυνση χωρίς προβολή, για αρχεία καταγραφής και ειδοποιήσεις, με τις ίδιες ρυθμίσεις SMTP όπως το MAIL().
Αποστολή αρχείων και streams στον πελάτη
Σερβίρετε ένα αρχείο από τον δίσκο με το $.file(), επιβάλετε όνομα λήψης, στείλτε παραγόμενο περιεχόμενο με το $.stream() και απαντήστε 404 όταν το αρχείο λείπει.
Προώθηση αιτημάτων σε άλλον διακομιστή
Χρησιμοποιήστε το PROXY() για να αντιστοιχίσετε ένα πρόθεμα URL σε έναν upstream διακομιστή, επιλέξτε πώς αντιγράφεται η διαδρομή και το $.proxy() για να προωθήσετε μία μόνο διαδρομή.
Δημοσιεύστε έναν τοπικό διακομιστή μέσω σήραγγας με τα PROXYSERVER() και PROXYCLIENT()
Αφήστε έναν διακομιστή Total.js με δημόσια διεύθυνση να προωθεί αιτήματα σε ένα πρόγραμμα που τρέχει μόνο σε ιδιωτικό μηχάνημα, με μια σήραγγα WebSocket που ανοίγει η ιδιωτική πλευρά.
Προστατέψτε φόρμες και αιτήματα με tokens CSRF
Δημιουργήστε ένα token με το $.csrf(), στείλτε το με το αίτημα και επαληθεύστε το σε ένα middleware ώστε να απορρίπτονται αιτήματα από άλλους ιστότοπους.
Ομαδοποίηση actions σε ένα schema και επαναχρησιμοποίηση ορισμών input
Χρησιμοποιήστε το NEWSCHEMA() για να δηλώσετε σχετικά actions κάτω από ένα όνομα και μοιραστείτε έναν ορισμό input μεταξύ actions με ένα αρχείο στο jsonschemas/.
Δημιουργήστε μια ροή επεξεργασίας με transforms
Καταχωρίστε πολλά βήματα κάτω από ένα όνομα με το NEWTRANSFORM() και περάστε μια τιμή μέσα από αυτά με τη σειρά με το TRANSFORM().
Ανταλλαγή μηνυμάτων με το Total Messaging Service
Ενεργοποιήστε το endpoint WebSocket του TMS και αφήστε εξωτερικούς πελάτες να λαμβάνουν δημοσιευμένα μηνύματα, να στέλνουν μηνύματα στην εφαρμογή σας και να καλούν τις λειτουργίες της.
Δημιουργήστε έναν πλήρη πόρο REST με actions
Δηλώστε τα actions query, read, insert, update, patch και remove πάνω στη βάση NoSQL, με επικύρωση, 404 για εγγραφές που λείπουν και διαδρομές που αντιστοιχίζουν κάθε μέθοδο HTTP.
Ρυθμίστε μια διαδρομή WebSocket με σημαίες, πιστοποίηση και παραμέτρους
Επιλέξτε τον τύπο μηνυμάτων με το @text ή @binary, απαιτήστε συνδεδεμένο χρήστη με το πρόθεμα +, ελέγξτε ένα token CSRF με το @csrf και διαβάστε παραμέτρους URL σε διαδρομές SOCKET.
Ελαχιστοποίηση και συγχώνευση CSS, JavaScript και HTML
Τα στατικά αρχεία και οι απαντήσεις HTML ελαχιστοποιούνται αυτόματα· χρησιμοποιήστε το MERGE() για να σερβίρετε πολλά αρχεία ως ένα και τις ρυθμίσεις $minify για να το απενεργοποιήσετε.
Αλλαγή μεγέθους και μετατροπή εικόνων
Επεξεργαστείτε εικόνες με το Image.load(), συνδέστε λειτουργίες μεγέθους, περικοπής και μορφής, αποθηκεύστε το αποτέλεσμα, μετρήστε το μέγεθός του και σερβίρετε μικρογραφίες με το $.image().
Ελέγξτε τα όρια του αριθμικού σχήματος αντί να αναλάβετε πλήρη καταναγκασμό
Ελέγξτε το Int, το SmallInt, το TinyInt και το Number2 με εγγενείς συμπαγές σχήματα, συμπεριλαμβανομένων των παραγόμενων τιμών, μηδέν και εκτός κλάσης εισαγωγών.
Χρησιμοποιήστε τους ενσωματωμένους βοηθούς για string, number, date και array
Το Total.js επεκτείνει τα String, Number, Date και Array με βοηθούς για slugs, hashes, μορφοποίηση, ανάλυση, ομαδοποίηση και αναζήτηση και προσφέρει τα U.extend() και U.clone() για αντικείμενα.
Εξέταση των γεγονότων ελέγχου δράσης με εγχώριο έλεγχο
Παρατηρήστε την επιλογή ελέγχου και εκφράστε τις κλήσεις $.audit() χωρίς να επικοινωνείτε με μια υπηρεσία εγγραφής ή να γράψετε ευαίσθητες εισαγωγές σε ένα λογότυπο εφαρμογής.
Εκτέλεση σε λειτουργία debug και release
Οι επιλογές του Total.run() επιλέγουν μεταξύ λειτουργίας debug και release· διαβάστε τη λειτουργία από το DEBUG και περιορίστε διαδρομές σε μία λειτουργία με τα @debug και @release.
Δοκιμάστε την εφαρμογή με τον ενσωματωμένο εκτελεστή δοκιμών
Γράψτε ένα test.js που ξεκινά την εφαρμογή, καταχωρίζει δοκιμές με το Test.push(), ελέγχει τα αποτελέσματα με το Test.print() και τερματίζει με μη μηδενικό κωδικό όταν κάποια αποτύχει.
Χρησιμοποιήστε όλους τους κόμβους CPU με τη λειτουργία κλαστού
Ξεκινήστε διάφορες διαδικασίες εργαζομένων πίσω από ένα λιμάνι με την επιλογή ομάδας του Total.run(), και να γνωρίζετε τι μοιράζεται μεταξύ τους και τι δεν είναι.
Φορτώστε μια ενότητα JavaScript από URL με το IMPORT()
Κατεβάστε ένα αρχείο με JavaScript από μια διεύθυνση, κρατήστε το στον φάκελο tmp, φορτώστε το με require και χρησιμοποιήστε ό,τι εξάγει· η δεύτερη κλήση δεν το κατεβάζει ξανά.
Φτιάξτε μια ροή συνιστωσών με το Flow.load() και εκτελέστε την με το exec()
Περιγράψτε ένα FlowStream ως συνιστώσες και τις συνδέσεις μεταξύ τους, φορτώστε το στην εφαρμογή, στείλτε ένα μήνυμα μέσα από αυτό και διαβάστε την απάντηση, και αλλάξτε τη ρύθμιση μιας συνιστώσας ενώ τρέχει.
Δοκιμάστε μια συνιστώσα Flow μόνη της με το Flow.test()
Φορτώστε μια συνιστώσα σε μια δική της ροή, στείλτε της ένα μήνυμα από τον κώδικα και διαβάστε τι στέλνει στις εξόδους της, χωρίς να φτιάξετε ολόκληρη τη ροή.
Καλέστε ένα πρόγραμμα Python που συνεχίζει να τρέχει με το PYPELINE()
Ξεκινήστε ένα σενάριο Python από την εφαρμογή, στείλτε του μηνύματα JSON μέσω socket και λάβετε τις απαντήσεις του, με το σενάριο να επανεκκινείται αν πεθάνει.
Ενόματα και όρια επικύρωσης μορφής στυλ
Διεξάγετε θετικές και αρνητικές επιθεωρήσεις σχήματος για τις μορφές enums, Color, Base64, Zip, Icon, JSON και IP.
TotalAPI και Componentator όρια υπηρεσίας
Ελέγξτε την απενεργοποιημένη κλάση TotalAPI και το Componentator τοπικής κάλυψης χωρίς να κάνετε εξωτερικές κλήσεις υπηρεσίας.
Οι λειτουργίες του QueryBuilder, οι φίλτρα και η σύμβαση οδήγησης
Ελέγξτε τις επιλογές DB και NEWDB, τα αποτελέσματα που έχουν γίνει, τα σφάλματα και οι μορφές φίλτρου χωρίς να συγχέετε έναν κατασκευαστή με έναν οδηγό βάσης δεδομένων.
Συγκεντρώστε και εκτελέστε ένα αρχικό στοιχείο διακομιστή
Συγκεντρώστε το αξιόπιστο Total.js στοιχείο HTML, δημιουργήστε ένα παράδειγμα, επικυρώστε τα μηνύματα, επαναπροσδιορίστε το και απελευθερώστε τους πόρους του.
Κλήσεις ελέγχου, χειροκίνητη εξουσιοδότηση και συνθησιακές απαντήσεις
Εκτελέστε jsonstring, απαντήστε, κάνετε, επιτύχετε, εξουσιοδοτηθείτε, προσαρμόσετε και Last-Modified χειρισμό.
Επιλογές μεταφοράς δράσης και ρητή TMS δημοσίευση
Δοκιμάστε csrf, κρυπτογραφήστε, συμπιέστε και δημοσιεύστε ενάντια στο πραγματικό HTTP και TMS αντί να υποθέσετε ότι τα μεταδεδομένα επιβάλλουν τη συμπεριφορά.
Ακυρώστε τα στατικά κενά με το Touch
Υπηρετείτε και τροποποιήστε ένα προσωρινό στατικό αρχείο, διαγράψτε την κρυπτογραφημένη αντιπροσωπεία του και αφαιρέστε κρυμμένες εγγραφές 404.
OPENCLIENT RPC, γεγονότα και κοινές συνδέσεις
Εξάσκηση OPENCLIENT με τοπικό πρωτόκολλο, συμπεριλαμβανομένης της πρωτοστοποίησης, της συσχέτισης κλήσης, του χρονοδιαγράμματος και της λογικής-κλειδί απομάκρυνση.
Κατεβάστε τα αρχεία FlowStream και εκτελέστε απομονωμένους εργαζόμενους
Εκτελέστε το ίδιο αξιόπιστο σχήμα FlowStream όπως ένα εργάτη thread και μια διαδικασία παιδιών, φορτίστε .flow αρχεία και αφαιρέστε παραδείγματα.
Κύκλοι ζωής δράσης, επέκταση αποτελεσμάτων και διατηρητές διαχειριστών
Εξάσκηση εισόδου, εξόδου, επέκτασης, σα και σού με έγκυρες, ανεπιθύμητες και αποτυχημένες ενέργειες.
Πραγματικό SQL με εγχώρια QueryBuilder και SQLite συναλλαγές
Καταγράψτε ένα περιορισμένο πρόγραμμα οδήγησης SQLite, εκτελέστε το παραμέτρων CRUD και επαληθεύστε την υποχρέωση, περιορίστε την αποτυχία και επιστρέψτε σε μια βάση δεδομένων που υποστηρίζεται από αρχεία.
Κατεβάστε τους πόρους της εφαρμογής και αποφύγετε τις εκπλήξεις του πακέτου
Διεξάγετε τη φόρτωση σε ξεχωριστή διαδικασία και επαληθεύστε την επαναχρησιμοποίηση ενός ήδη διαθέσιμου πακέτου από το NPMINSTALL χωρίς πρόσβαση στο δίκτυο.
Αναζητήστε ένα πραγματικό τοπικό κατάλογο LDAP
Αναζητήστε μια απομονωμένη περίπτωση OpenLDAP και επαληθεύστε το αποτέλεσμα του συνδέσμου σε συνολικό επίπεδο5 0.0.19.
Εφαρμογή συσκευασίας ως δέσμη Total.js
Δημιουργήστε ένα τοπικό πακέτο, φορτώστε τους ορισμούς του μέσω του φόρτωσης startup πλαίσιο και επαληθεύστε την εκχύλιση σε .src.
Καθαρίστε το δικό σας αρχείο και δημιουργήστε συνδέσμους αναζήτησης
Ελέγξτε την προεπιλεγμένη φόρτιση καθαρισμού, αυτοκλειδί (ψεύδος), σαφή και αντικατάσταση ερωτήματος href.