Νοημοσύνη δεδομένων Πλάτωνα.
Κάθετη Αναζήτηση & Αι.

Γιατί επέλεξα το Angular για να δημιουργήσω ένα συντομευτικό URL

Ημερομηνία:

Τα URL Shorteners είναι εργαλεία που χρησιμοποιούμε για να κάνουμε συνδέσμους μικρότερους από ό,τι είναι στην πραγματικότητα. Με ένα URL Shortener, μπορείτε να μετατρέψετε έναν μακρύ σύνδεσμο (ίσως για μια φόρμα εγγραφής ή ένα άρθρο) σε μια συντομότερη έκδοση.

Πίσω από τις σκηνές, οι μεγάλες και οι σύντομες εκδόσεις ενός δεδομένου συνδέσμου έχουν αποθηκευτεί σε κάποια βάση δεδομένων. Στη συνέχεια, όταν ένας χρήστης επισκέπτεται τον σύντομο σύνδεσμο σε ένα πρόγραμμα περιήγησης, το Συντομευτικό URL θα ανακατευθύνει τον χρήστη στη μεγάλη έκδοση του συνδέσμου (όπου βρίσκεται το πραγματικό περιεχόμενο).

Οι συντομευμένοι σύνδεσμοι από συντομευτικά URL χρησιμοποιούνται συνήθως όταν η μεγάλη έκδοση αυτών των συνδέσμων θα ήταν πολύ μεγάλη για να χρησιμοποιηθεί. Η κοινή χρήση συνδέσμων στα μέσα κοινωνικής δικτύωσης ή όταν σχεδιάζετε φυλλάδια και διαφημίσεις είναι μια δημοφιλής χρήση των συντομεύσεων URL.

Για ένα από τα έργα μου, δημιούργησα μια προσωπική συντόμευση διεύθυνσης URL. Η πρόθεσή μου ήταν να το χρησιμοποιήσω για συνδέσμους σε άρθρα που γράφω ή βίντεο που κάνω. χρησιμοποίησα Firebase για τη δημιουργία του backend του συντόμευσης διεύθυνσης URL. Συγκεκριμένα, χρησιμοποίησα τη βάση δεδομένων Firestore για να αποθηκεύσω σύντομες και μεγάλες εκδόσεις οποιουδήποτε δεδομένου συνδέσμου.

Για να δημιουργήσω συνδέσμους, έπρεπε να χρησιμοποιήσω την κονσόλα Firebase. Αυτό δεν ήταν πρόβλημα, αλλά ήταν επαχθές για την υψηλή συχνότητα επεξεργασίας συνδέσμων. Η εμπειρία χρήστη (UX) δεν ήταν ιδανική. Τώρα ήρθα αντιμέτωπος με ένα πρόβλημα. Πώς δημιουργώ, επεξεργάζομαι και διαγράφω συνδέσμους; Χρειαζόμουν να δημιουργήσω μια διεπαφή για τη συντόμευση διεύθυνσης URL. Χρειαζόμουν έναν ιστότοπο για αυτό.

Σε αυτό το άρθρο, θα εξετάσουμε τα διαθέσιμα εργαλεία που χρησιμοποιούνται για τη δημιουργία αυτής της διεπαφής, τις επιλογές αποφάσεων και τους παράγοντες που επηρέασαν τον λόγο που δημιουργήθηκαν.

Δήλωση προβλήματος

Οι απαιτήσεις του έργου ήταν:

  • Πλατφόρμα/Αρχιτεκτονική. Η μηχανική και η δομή της διαδικασίας κωδικοποίησης.
  • UI Toolkit. Στοιχεία προς χρήση για τα διάφορα μέρη της διεπαφής χρήστη.
  • Ευκολία. Η δημιουργία του backend δεν ήταν δύσκολη, επομένως δεν θα έπρεπε να είναι ούτε αυτό το frontend. Ήθελα καθαρό κώδικα και γρήγορη ανάπτυξη.

Η πρώτη επιλογή απόφασης: Γωνιακή

Πολλές ιδέες έρχονται στο μυαλό όταν ξεκινάτε να χτίζετε ένα frontend. Με μια ευρεία έννοια, θα μπορούσαμε να κατηγοριοποιήσουμε τις επιλογές κτιρίου frontend σε 3 πλατφόρμες:

  1. Εργαλεία δημιουργίας ιστοτόπων – όπως WordPress, Wix, Squarespace κ.λπ.
  2. Vanilla Building – χρησιμοποιώντας απλό HTML, CSS και JavaScript.
  3. JavaScript Framework – όπως React, Vue, Angular κ.λπ.

Από την εμπειρία μου, οι κατασκευαστές ιστότοπων παρέχουν μια πολύ περιορισμένη συλλογή γραφικών στοιχείων, στοιχείων και προτύπων. Οι περισσότεροι κατασκευαστές ιστοτόπων δεν παρέχουν έναν εύκολο τρόπο για την ενσωμάτωση ενός ολόκληρου προσαρμοσμένου backend όπως το Firebase. Ενώ είναι δυνατό να δημιουργηθούν εντυπωσιακές τοποθεσίες συνδέοντας αυτά τα κομμάτια μεταξύ τους, ο βαθμός πολυπλοκότητας του έργου μου ήταν πιθανότατα πέρα ​​από αυτό που συνήθως παρέχουν αυτές οι υπηρεσίες.

Η χρήση του στυλ χωρίς πλαίσιο ή της βανίλιας θα ήταν μια πιθανότητα. Ωστόσο, ο καθοριστικός παράγοντας που με έκανε να μην επιλέξω τη διαδρομή της καθαρής βανίλιας ήταν αυτός την πιο πρόσφατη έκδοση εκτός CDN του Firebase JavaScript SDK (έκδοση 9) έχει σχεδιαστεί με εγκατάσταση μέσω npm or yarn και τη δέσμη μονάδων στο μυαλό.

Τα πλαίσια JavaScript χειρίζονται βασικά μέρη του frontend (όπως δρομολόγηση, σύνδεση backend, κ.λπ.) για να μειώσουν τις προσπάθειες των προγραμματιστών. Υπάρχουν πολλά από αυτά και το να επιλέξεις ποιο να χρησιμοποιήσεις φαινόταν πιο δύσκολο να κάνεις.

Υπάρχουν πολλά πλαίσια JavaScript για ανάπτυξη frontend. Παραδείγματα περιλαμβάνουν Angular, React, Vue κ.λπ.

Από τα διαθέσιμα πλαίσια, έχω την μεγαλύτερη εξοικείωση με το Angular. Αυτό συμβαίνει επειδή το έχω χρησιμοποιήσει σε προηγούμενα έργα όπως:

  • Κουίζ χορωδίας Carol: Πύλη όπου οι συμμετέχοντες στο Κουίζ διαγωνίστηκαν σε δύο διαδικτυακούς γύρους χρονομετρημένων ερωτήσεων πολλαπλής επιλογής σε επιλεγμένα κεφάλαια της Βίβλου.
  • Κοινότητα Genesys AE-FUNAI: Προσαρμοσμένη φόρμα όπου τα μέλη του Genesys Campus Club AE-FUNAI (η κοινότητά μου) αναφέρουν την πρόοδό τους και μοιράζονται τα επιτεύγματά τους.
  • Σύστημα διαχείρισης φροντιστηρίων: Απλός πίνακας εργαλείων διαχείρισης συνεδριών μεταξύ μαθητών και καθηγητών.

Αυτή η εξοικείωση μου επιτρέπει να χτίζω γρήγορα με το Angular. Δεν πρέπει να υποτιμάται η δυνατότητα γρήγορης κατασκευής.

Επέλεξα το Angular λόγω της ικανότητάς του Αντικειμενοστρεφούς Προγραμματισμού (OOP). Το OOP είναι ένα παράδειγμα προγραμματισμού που εστιάζει περισσότερο στις κλάσεις, τα δεδομένα ή την κατάσταση που διαχειρίζονται, παρά στη λογική που ελέγχει τα δεδομένα, όπως συμβαίνει με τον λειτουργικό προγραμματισμό. Ο διαχωρισμός των ανησυχιών είναι ένα πλεονέκτημα της χρήσης OOP. Με άλλα λόγια, το OOP επιτρέπει την ενθυλάκωση. Σας επιτρέπει να επεκτείνετε πτυχές του προγράμματος σε περίεργους τομείς ή κλάσεις.

Στο Angular, τα στοιχεία (και οι μέθοδοι κύκλου ζωής τους) καλύπτονται από κλάσεις TypeScript. Αυτό σας κάνει να σκέφτεστε με τον τρόπο OOP. Το πλεονέκτημα του OOP αντικατοπτρίζεται στον τρόπο με τον οποίο τα στοιχεία Angular χρησιμεύουν ως επαναχρησιμοποιήσιμες μονάδες διεπαφής χρήστη στο πλαίσιο Angular. Με αυτόν τον τρόπο βλέπετε ένα στοιχείο Angular ως μια αυτάρκη οντότητα που αποτελεί ακόμη μέρος ενός συνόλου. Αυτό καθιστά εύκολη την ανάπτυξη του frontend, καθώς διάφορα μέρη της εφαρμογής frontend μπορούν να καλύπτονται από στοιχεία και ως εκ τούτου μπορούν να χρησιμοποιηθούν όπου χρειάζεται.

Επέλεξα επίσης το Angular επειδή χρησιμοποιεί TypeScript. Το TypeScript είναι JavaScript με χαρακτηριστικά μιας δακτυλογραφημένης γλώσσας προγραμματισμού. Η πληκτρολόγηση σε αυτό το πλαίσιο σημαίνει ότι μια μεταβλητή δεν μπορεί να αλλάξει το είδος της τιμής που έχει καθ' όλη τη διάρκεια της ζωής της. Για παράδειγμα, μια μεταβλητή που κρατά μια συμβολοσειρά δεν θα κρατήσει ξαφνικά έναν αριθμό ενώ χρησιμοποιείται σε αυτό το πρόγραμμα. Η πληκτρολόγηση αυξάνει την ποιότητα του κώδικα και μειώνει τα σφάλματα.

Ως αποτέλεσμα του συστήματος τύπου του, το TypeScript μειώνει τον χρόνο που αφιερώνεται στον εντοπισμό σφαλμάτων των εφαρμογών Angular. Προσφέρει εμπειρία στον προγραμματιστή, καθώς ο προγραμματιστής θα έχει περισσότερο χρόνο για να δημιουργήσει την εφαρμογή frontend. Ο εντοπισμός σφαλμάτων γίνεται επίσης εύκολος για τον προγραμματιστή.

Σημείωση: Ακολουθούν περισσότερα σχετικά με τον Αντικειμενοστραφή προγραμματισμό με TypeScript

Ωστόσο, σχετικά με τα πλεονεκτήματα του Angular, οι εφαρμογές Angular έρχονται ως πλήρης εγκατάσταση. Διαχειρίζονται σημαντικές λειτουργίες όπως η ομαδοποίηση προεπεξεργαστών CSS ή υπηρεσιών Angular από μόνα τους. Τούτου λεχθέντος, όταν χρησιμοποιείτε το Angular, δεν χρειάζεται να ρυθμίζετε τις παραμέτρους κάθε βιβλιοθήκης ανεξάρτητα, η Angular φροντίζει για αυτό.

Μια υπηρεσία Angular είναι αυτό που χρησιμοποιεί η Angular για τη διαμόρφωση της ένεσης εξάρτησης. Με απλά λόγια, η ένεση εξάρτησης παρέχει σε μια εφαρμογή ό,τι χρειάζεται για να λειτουργήσει (εξαρτήσεις) χωρίς η εφαρμογή να χρειάζεται να φροντίσει για το πώς προέκυψαν οι εξαρτήσεις. Επέλεξα επίσης την Angular λόγω του εξωγενούς χειρισμού των υπηρεσιών της. Έτσι, το Firebase, για παράδειγμα, θα παρέχεται αυτόματα σε όλα τα στοιχεία Angular που χρειάζονται χωρίς καμία επιπλέον διαμόρφωση.

Τα πλεονεκτήματα του Αντικειμενοστρεφούς Προγραμματισμού, του TypeScript και της έγχυσης εξάρτησης καθιστούν το Angular ιδανικό για ανάπτυξη frontend. Σε συνδυασμό με το γεγονός ότι ήμουν ήδη εξοικειωμένος με το Angular, το Angular ήταν πιο βολικό για αυτό το έργο συντόμευσης URL.

Γωνιακά άρθρα για CSS-Tricks είναι επίσης μέρος της ιστορίας. Μου έδωσαν μεγαλύτερη αυτοπεποίθηση με τη χρήση του Angular.

Η δεύτερη επιλογή απόφασης: Υλικό Σχεδιασμός

Αφού επέλεξα το Angular, η επόμενη δουλειά μου ήταν να σκεφτώ πώς θα χειριζόμουν τη διεπαφή χρήστη (UI).

Θα μπορούσα να αγνοήσω και να κάνω βανίλια CSS, αλλά γιατί να επανεφεύρω τον τροχό; Σε τελική ανάλυση, αυτό θα ακυρώσει τον λόγο χρήσης ενός πλαισίου JavaScript - ευκολία.

Με την επιλογή μιας εργαλειοθήκης διεπαφής χρήστη, φαίνεται να υπάρχει ένας ωκεανός επιλογών. Για να αναφέρουμε μερικά, μπορεί κανείς να χρησιμοποιήσει τα Bootstrap, Bulma, Semantic UI, Tailwind κ.λπ. Κάθε κιτ εργαλείων έχει τις δικές του προδιαγραφές και κίνητρα.

Για την περίπτωση χρήσης του έργου μου, το Material Design ηγήθηκε του πακέτου.

Ένας από τους πιο σημαντικούς παράγοντες ήταν η υποστήριξη του Angular και του Material Design. Υπάρχει μια ολόκληρη προδιαγραφή Angular μόνο για το Material on material.angular.io (δηλαδή ως υποτομέας για τα ίδια τα Angular docs).

Συμβιβάστηκα στο Material Design γιατί επικεντρώνεται στα συστατικά. Σε αντίθεση με άλλα πλαίσια CSS, δεν έχει κλάσεις βοηθητικού προγράμματος CSS. Αυτό ήταν εντάξει γιατί ήθελα μόνο κάποιο κιτ εξαρτημάτων (κουμπιά, εικονίδια, είσοδοι, πλαϊνές γραμμές, σνακ μπαρ, κ.λπ.) Το υλικό προσθέτει επίσης κινούμενα σχέδια, κυματισμό και εφέ σκιάς από μόνο του. καθιστώντας το πιο βολικό από άλλες βιβλιοθήκες.

Επιπλέον, το Angular Material έχει out-of-the-box υποστήριξη θεμάτων, κατά την προετοιμασία του Angular Material, έχετε την επιλογή να επιλέξετε ένα προκαθορισμένο θέμα για ολόκληρη την εφαρμογή Angular ή να δημιουργήσετε ένα προσαρμοσμένο.

Για λόγους ευκολίας, επέλεξα ένα σκοτεινό θέμα κατά την εγκατάσταση του Angular Material.

Η τρίτη επιλογή απόφασης: αντιδραστικές μορφές

Έχοντας αποφασίσει ένα πλαίσιο και μια εργαλειοθήκη, έστρεψα την προσοχή μου σε ένα από τα πιο σημαντικά χαρακτηριστικά του συντόμευσης διευθύνσεων URL. Ο πυρήνας της διεπαφής του συντομευτικού URL είναι η φόρμα για τη δημιουργία και την ενημέρωση συνδέσμων.

Ας ονομάσουμε αυτή τη φόρμα τον επεξεργαστή συνδέσμων. Η φόρμα επεξεργασίας συνδέσμων έχει μόνο δύο εισόδους, μία για τη σύντομη έκδοση ενός συνδέσμου και την άλλη για την πλήρη διεύθυνση URL στην οποία θα ανακατευθύνει η σύντομη έκδοση.

Για τη διαχείριση φορμών, το Angular διαθέτει δύο μηχανισμούς. Έτσι, αντί να δημιουργείτε μια φόρμα και να χειρίζεστε την επικύρωση και την υποβολή της όπως γίνεται σε vanilla HTML και JavaScript, πρέπει να χρησιμοποιήσετε έναν από τους δύο τρόπους που παρέχει το Angular. Οι δύο μέθοδοι είναι:

  1. Φόρμες που βασίζονται σε πρότυπα
  2. Αντιδραστικές μορφές

Φόρμες που βασίζονται σε πρότυπα Όπως υποδηλώνει το όνομα, περιλαμβάνουν τον κώδικα HTML (πρότυπο) που ελέγχει το μεγαλύτερο μέρος της γωνιακής φόρμας. Αυτή η προσέγγιση είναι προτιμότερη όταν η φόρμα σας δεν κάνει πολλά ή είναι για εφάπαξ χρήση.

Αντιδραστικές μορφές, από την άλλη πλευρά, παρέχουν μια προσέγγιση βάσει μοντέλου για το χειρισμό των εισόδων φόρμας των οποίων οι τιμές αλλάζουν με την πάροδο του χρόνου. Χρειαζόμουν αντιδραστικές φόρμες επειδή είναι η ίδια φόρμα που θα χρησιμοποιήσω για να επεξεργαστώ διαφορετικούς συνδέσμους ανά πάσα στιγμή.

Σημείωση: Ακολουθεί περισσότερο υλικό σχετικά με τη χρήση των αντιδραστικών φορμών.

Σε αυτό το σημείο, άρχισαν να παίζουν τα οφέλη των προηγούμενων επιλογών. Το γωνιακό υλικό έχει form-field συστατικά. ο form-field αναδιπλώνει την είσοδο ως στοιχείο και παρέχει κινούμενα σχέδια, εφέ κυματισμού και μηνύματα σφάλματος εάν είναι απαραίτητο.

Κινούμενο gif με σύντομες και μεγάλες διευθύνσεις URL που εισάγονται σε μια φόρμα.

Έτσι το χρησιμοποίησα για τις δύο εισόδους της φόρμας του συντάκτη.

Η τέταρτη επιλογή απόφασης: Γωνιακό υλικό κάτω φύλλο και συρτάρι

Η τελική απόφαση αφορούσε τον τρόπο βελτίωσης της εμπειρίας χρήστη. Το πρόγραμμα συντόμευσης διεύθυνσης URL θα χρειαζόταν άλλες δυνατότητες, όπως η προβολή όλων των συνδέσμων που δημιουργήθηκαν και τα αναλυτικά στοιχεία τους. Αυτές οι λειτουργίες θα απαιτούσαν χώρο στην οθόνη που με απαιτούσε να ξανασκεφτώ εάν υπήρχαν καλύτερες λύσεις για την εμφάνιση της φόρμας επεξεργασίας συνδέσμων στον χρήστη.

Εάν ο χρήστης δεν έχει τρέχουσα ανάγκη για τη φόρμα επεξεργασίας συνδέσμων, είναι λογικό η φόρμα επεξεργασίας συνδέσμων να μην εμφανίζεται πάντα. Αυτό θα απελευθερώσει χώρο στη διεπαφή χρήστη για άλλα στοιχεία.

Ωστόσο, ο διαχωρισμός αυτής της εμπειρίας χρήστη σε δύο ξεχωριστές σελίδες ήταν ενοχλητικός. Αντίθετα, για να ανοίξω το πρόγραμμα επεξεργασίας συνδέσμων όταν χρειάζεται, πρόσθεσα ένα κουμπί κινούμενης ενέργειας στη σελίδα για τη δημιουργία συνδέσμων. Όταν κάνετε κλικ, το κουμπί θα προκαλέσει το άνοιγμα της φόρμας επεξεργασίας σε οποιοδήποτε κατάλληλο στοιχείο διεπαφής χρήστη.

κάτω φύλλο, όπως υποδηλώνει το όνομα, είναι ένα στοιχείο διεπαφής χρήστη που ανοίγει από το κάτω μέρος της οθόνης. Έχει διαδραστικό περιεχόμενο που ο χρήστης μπορεί να το επεξεργαστεί. Επικαλύπτει την τρέχουσα προβολή μιας οθόνης κινητού (αλλά δεν την αποκλείει πλήρως).

Κινούμενο gif αλληλεπίδρασης με μια φόρμα που εμφανίζεται σε ένα κάτω φύλλο.

Τα κάτω φύλλα χρησιμοποιούνται συνήθως στη θέση των αναδυόμενων παραθύρων, εάν ο χρήστης θα αφιερώσει πολύ χρόνο αλληλεπιδρώντας με το περιεχόμενό του. Έτσι, τα κάτω φύλλα είναι κατάλληλα για να ανοίξετε το πρόγραμμα επεξεργασίας σε οθόνες κινητών. Ωστόσο, η αλληλεπίδραση με ένα κάτω φύλλο είναι δύσκολη όταν η οθόνη είναι ευρεία. Χρειαζόμουν ένα διαφορετικό στοιχείο διεπαφής χρήστη για τη φόρμα επεξεργασίας συνδέσμων σε ευρείες οθόνες.

Συρτάρια ανοιχτό στο πλάι. Η χρήση ενός συρταριού για το άνοιγμα της φόρμας επεξεργασίας συνδέσμων σε μια ευρεία οθόνη ήταν η πρώτη επιλογή. Τα συρτάρια δεν θα είναι καλά για τον επεξεργαστή σε οθόνες κινητών. Το πλάτος της οθόνης θα ήταν σχετικά μικρό και το συρτάρι μπορεί να μπλοκάρει εντελώς την οθόνη (κάτι που δεν είναι επιθυμητό UX).

Κινούμενο gif αλληλεπίδρασης με μια φόρμα που εμφανίζεται σε ένα συρτάρι.

Επέλεξα αυτά τα δύο στοιχεία διεπαφής χρήστη από το Material Design για τη φόρμα να έχει κάποιο αποτέλεσμα απόκρισης. Έτσι, είτε στο τηλέφωνό μου είτε στο φορητό υπολογιστή μου, η δημιουργία συνδέσμων θα γινόταν σε ένα κατάλληλο στοιχείο διεπαφής χρήστη.

Στον κώδικα, το Angular ελέγχει εάν η συσκευή έχει μικρό πλάτος οθόνης. Αν ναι, ανοίγει ένα κάτω φύλλο που περιέχει τη φόρμα επεξεργασίας συνδέσμων. Από την άλλη πλευρά, εάν η οθόνη είναι φαρδιά, το Angular ανοίγει ένα συρτάρι που περιέχει την ίδια φόρμα.

Η χρήση αυτών των δύο συστατικών προκάλεσε μια μικρή επιπλοκή. Εάν το τηλέφωνό μου περιστραφεί ή το πλάτος του παραθύρου του προγράμματος περιήγησης του φορητού υπολογιστή μου μειωθεί, η φόρμα ανοίγει στο αντίθετο στοιχείο διεπαφής χρήστη. Δηλαδή, αντί να ανοίξει σε ένα συρτάρι σε φορητό υπολογιστή, θα ανοίξει σε ένα κάτω φύλλο (επειδή μειώθηκε το πλάτος του προγράμματος περιήγησης).

Συντήρηση, Μελλοντική προστασία, Μελλοντικές εκδόσεις

Όταν σκέφτηκα ευκαιρίες να επαναλάβω αυτό το έργο, αντιμετώπισα περιορισμούς με την τρέχουσα περίπτωση χρήσης που έχει σχεδιαστεί για να υποστηρίζει έναν μόνο διαχειριστή. Αλλά με τον έλεγχο ταυτότητας και τους λογαριασμούς χρηστών, μπορεί να υποστηρίξει επιπλέον χρήστες που διαχειρίζονται συνδέσμους και έχουν πρόσβαση σε αναλυτικά στοιχεία.

Σε αυτήν την περίπτωση, οι παραπάνω επιλογές εξαρτημάτων θα εξακολουθούν να είναι κατάλληλες. Το πρόγραμμα επεξεργασίας συνδέσμων αποκρίνεται, επομένως σε οποιαδήποτε συσκευή, οι χρήστες θα έχουν μια καλή εμπειρία χρήστη.

Αν έπρεπε να το ξανακάνω από την αρχή, νομίζω ότι θα είχα δοκιμάσει τη μέθοδο της βανίλιας. Δημιουργία εξ ολοκλήρου χωρίς βοηθούς όπως στοιχεία Angular, Material ή UI. Θα προσπαθούσα να δημιουργήσω από την αρχή σε HTML, CSS και JavaScript και να δω αν δεν έχανα την ευκολία όπως πίστευα.

Συμπέρασμα

Μπορείτε να αποκτήσετε πρόσβαση στον τελικό Angular κώδικα εδώ στο GitHub.

Αυτή ήταν μια ανασκόπηση ορισμένων από τις κύριες επιλογές που έκανα κατά την ανάπτυξη του έργου μου. Φυσικά, υπάρχουν περισσότερα για τη δημιουργία της διεπαφής ενός συντόμευσης διεύθυνσης URL. Αλλά για αρχή, αυτά τα στοιχεία διεπαφής χρήστη έκαναν τη διαδικασία κατασκευής βολική. Έκαναν το πρόγραμμα επεξεργασίας συνδέσμων να ανταποκρίνεται και θα μπορούσε να είναι παρόμοια με εσάς στα έργα σας (όχι απαραίτητα συντόμευση διεύθυνσης URL).

Υπάρχουν πολλά άλλα στοιχεία διεπαφής χρήστη από διάφορες βιβλιοθήκες που μπορείτε να χρησιμοποιήσετε για οποιοδήποτε τέτοιο έργο. Αλλά όπως και στην περίπτωσή μου, εάν η ευκολία είναι καθοριστικός παράγοντας, θα κάνατε τη σωστή επιλογή απόφασης που θα ταίριαζε στο περιβάλλον χρήστη.

Τελικά, αυτό που διαμόρφωσε τις αποφάσεις μου ήταν η κατανόηση του τι απαιτούσε το έργο μου, η γνώση των εργαλείων που είχα χρησιμοποιήσει από προηγούμενα έργα και οι προσδοκίες με χρονικούς περιορισμούς. Η προηγούμενη εμπειρία μου – επιτυχίες και λάθη – με βοήθησε και εμένα.

Cheers!

spot_img

Τελευταία Νοημοσύνη

spot_img

Συνομιλία με μας

Γεια σου! Πώς μπορώ να σε βοηθήσω?