Το Volt είναι ένα πλαίσιο Ruby σχεδιασμένο για εφαρμογές πλούσιες σε δεδομένα. Τόσο η πλευρά του διακομιστή όσο και του πελάτη είναι γραμμένα σε Ruby (το οποίο στη συνέχεια μεταγλωττίζεται σε JS χρησιμοποιώντας OPAL), οπότε αυτό επιτρέπει στον προγραμματιστή να γράφει πολύ δυναμικές εφαρμογές χωρίς να χρειάζεται να γράψει μια μόνο γραμμή κώδικα Javascript. Εάν είστε Ρουμπίνι ανεμιστήρας σαν εμένα, θα λατρέψετε αυτό το πλαίσιο.
Σε μια προσπάθεια να κάνουν εφαρμογές Ιστού πολύ πιο δυναμικά, τα πλαίσια Javascript front-end όπως το Angular.js, Backbone.js και το Ember.js έχουν αποκτήσει μεγάλη δημοτικότητα. Ωστόσο, αυτά τα πλαίσια απαιτούν συχνά μια εφαρμογή back-end για να είναι χρήσιμα, επομένως χρησιμοποιούνται σε συνδυασμό με πλαίσια ιστού όπως το Ruby on Rails και το Django.
Από την άλλη πλευρά, το Ruby framework Volt είναι ικανό να διαχειριστεί το back-end και ένα δυναμικό front-end. Δεδομένου ότι και οι δύο λειτουργίες ενσωματώνονται σφιχτά στον πυρήνα της (στην πραγματικότητα, το Volt μοιάζει περισσότερο με αρχιτεκτονική MVVM, αξιοποιώντας τα πλεονεκτήματα των δεσμεύσεων δεδομένων), επιτρέπει στον προγραμματιστή να δημιουργήσει αυτές τις εφαρμογές γρήγορα.
Ένα πολύ ωραίο χαρακτηριστικό που βγαίνει από το κουτί είναι το χαρακτηριστικό σε πραγματικό χρόνο του Volt. Εάν κάνατε ποτέ εφαρμογές σε πραγματικό χρόνο, γνωρίζετε ότι η διαδικασία μπορεί να είναι προκλητική - πιθανότατα εφαρμόσατε την ψηφοφορία AJAX, τις πρίζες ιστού, τις εκδηλώσεις με διακομιστή (SSE) ή ακόμη και χρησιμοποιήσατε εξωτερικές υπηρεσίες, προσθέτοντας πολυπλοκότητα στην εφαρμογή και ακόμη και πρόσθετο κόστος . Σε αντίθεση με άλλα πλαίσια, το Volt διατηρεί ζωντανή τη σύνδεση με τον διακομιστή (μέσω υποδοχών ιστού), οπότε αντί να κάνει αιτήματα Ajax για κάθε ενέργεια, ωθεί τις αλλαγές άμεσα σε όλους τους πελάτες. Δεν απαιτείται διαμόρφωση για να λειτουργήσει αυτό.
Σε αυτό το σεμινάριο πλαισίου Ruby θα σας καθοδηγήσω στη διαδικασία δημιουργίας μιας εφαρμογής σε πραγματικό χρόνο χρησιμοποιώντας το Volt, και ποιος καλύτερος τρόπος από μια εφαρμογή συνομιλίας για να αποδείξετε τις δυνατότητές της, καθώς η συνομιλία παραμένει η νούμερο ένα περίπτωση χρήσης εφαρμογών σε πραγματικό χρόνο.
Πρώτα απ 'όλα, ας εγκαταστήσουμε το Volt και το MongoDB. Η τελευταία διαδικασία δεν θα καλυφθεί λεπτομερώς:
gem install volt brew install mongodb
mkdir -p /data/db
(δημιουργία dbpath)
chown `id -u` /data/db (change the owner to have the proper dbpath permissions)
Τώρα είμαστε έτοιμοι να δημιουργήσουμε την πρώτη μας εφαρμογή, ας το ονομάσουμε «συνομιλία». Μπορούμε να το κάνουμε εύκολα σε δύο γραμμές:
volt new chat cd chat
Η δομή του εγγράφου έχει κάποιες ομοιότητες με το Rails. Η κύρια διαφορά που θα παρατηρήσουν οι χρήστες του Rails είναι ότι έχουμε έναν επιπλέον φάκελο μέσα στην εφαρμογή που περιέχει τους υπόλοιπους φακέλους, όπως στοιχεία, ελεγκτές, μοντέλα και προβολές, αυτός ο επιπλέον φάκελος είναι ένα «Component».
Ένα στοιχείο είναι μια απομονωμένη ενότητα της εφαρμογής. Όλες οι σελίδες μέσα σε ένα στοιχείο αποδίδονται χωρίς επαναφόρτωση της σελίδας, καθώς όλα τα αρχεία για αυτό το στοιχείο φορτώνονται με το αρχικό αίτημα http, οπότε αν επισκεφτούμε μια σελίδα διαφορετικού στοιχείου, θα υποβληθεί ένα νέο αίτημα http και θα φορτωθεί ξανά η σελίδα '. Για αυτό το παράδειγμα ας χρησιμοποιήσουμε το προεπιλεγμένο στοιχείο που ονομάζεται «κύριο».
Ας ξεκινήσουμε τον διακομιστή εκτελώντας την εντολή «διακομιστής volt» στην κονσόλα και ας δούμε πώς φαίνεται στο πρόγραμμα περιήγησης μεταβαίνοντας στο localhost: 3000:
volt server
Επίσης μην ξεχάσετε να ξεκινήσετε το MongoDB στην κονσόλα:
mongod
Μπορούμε να παρατηρήσουμε ότι το Volt συνοδεύεται από έναν αριθμό προεπιλεγμένων σελίδων, όπως «Home» και «About». Αυτά μπορούν να προσαρμοστούν αμέσως.
Το άλλο πράγμα που αξίζει να αναφερθεί είναι το κουμπί σύνδεσης στην επάνω δεξιά πλευρά της σελίδας. Το Volt διαθέτει λειτουργικότητα 'χρήστη' ενσωματωμένο στο πλαίσιο μέσω του πολύτιμου λίθου 'volt-user-templates', το οποίο παρέχει έναν τρόπο εγγραφής και ελέγχου ταυτότητας χρηστών, άμεσα.
Τώρα, ας αρχίσουμε να δουλεύουμε στην εφαρμογή μας. Πρώτα απ 'όλα, δεν χρειαζόμαστε τη σελίδα 'Σχετικά', ώστε να προχωρήσουμε και να διαγράψουμε τα εξής: Το app/main/views/main/about.html
αρχείο, το about about στο app/main/controllers/main_controller.rb
, καταργήστε το /about
διαδρομή σε app/main/config/routes.rb
και ο σύνδεσμος πλοήγησης στο app/main/views/main/main.html
.
Τώρα ας ξεκινήσουμε την επιχείρηση και ξεκινήστε με την καταχώριση όλων των εγγεγραμμένων χρηστών:
{{ if Volt.user }} { } {{ if user._id != Volt.user._id }} {{user._name}} {{ end }} {{ end }} {{ if params._user_id }} { current_conversation.each do } {{ message._text }}
{{ end }} {{ if current_conversation.count == 0 }} You have no messages yet. Start chatting!
{{ else }} {{ end }} Submit {{ end }} {{ else }} This is a sample application built with Volt to demonstrate its real-time capabilities. Please log in to access it.
{{ end }}
Αρχικά, ελέγχουμε εάν υπάρχει ένας χρήστης που έχει επιλεγεί πριν από την εμφάνιση της φόρμας και, στη συνέχεια, εμφανίζουμε όλα τα μηνύματα από την τρέχουσα συνομιλία (τη συνομιλία με τον επιλεγμένο χρήστη) από μια μέθοδο στον ελεγκτή που θα ορίσουμε σε λίγο, και στο κάτω μέρος εμφανίζεται μια φόρμα για την αποστολή νέων μηνυμάτων.
Παράδειγμα δοκιμής μονάδας c#
Σημειώστε ότι η τιμή της εισαγωγής είναι ένα χαρακτηριστικό που δημιουργούμε στο μοντέλο συλλογής σελίδων, καθώς δεν θέλουμε να αποθηκευτεί στο χώρο αποθήκευσης δεδομένων. Τώρα ας καθορίσουμε το current_conversation
και send_message
μέθοδοι στον ελεγκτή:
def send_message unless page._new_message.strip.empty? _messages <[{ sender_id: Volt.user._id, receiver_id: params._user_id }, { sender_id: params._user_id, receiver_id: Volt.user._id }] }) end
Στη μέθοδο send_message προσθέτουμε ένα νέο μήνυμα στη συλλογή, εάν το μήνυμα δεν είναι κενό (ελέγχουμε inline, οπότε δεν χρειάζεται να χτυπήσουμε με επικυρώσεις αυτήν τη στιγμή), τότε ορίζουμε τη σελίδα ._new_message to ‘’
οπότε αδειάζουμε το πεδίο εισαγωγής.
Ίσως θέλουμε να προσθέσουμε αυτήν τη γραμμή στο τέλος του select_conversation
μέθοδος επίσης. Η τρέχουσα μέθοδος συνομιλίας ερωτά απλώς το _messages
συλλογή για μηνύματα μεταξύ του επιλεγμένου χρήστη και του τρέχοντος χρήστη.
Για να ολοκληρώσω, θα ήθελα να έχω κάποιο είδος συστήματος ειδοποιήσεων, ώστε οι χρήστες να μπορούν να δουν πότε άλλοι χρήστες τους στέλνουν μηνύματα.
Ας προσθέσουμε μια νέα συλλογή που ονομάζεται _notifications
και δημιουργήστε ένα νέο μετά την αποστολή κάθε μηνύματος:
def send_message unless page._new_message.strip.empty? _messages << { sender_id: Volt.user._id, receiver_id: params._user_id, text: page._new_message } _notifications << { sender_id: Volt.user._id, receiver_id: params._user_id } page._new_message = '' end end def select_conversation(user) params._user_id = user._id unread_notifications_from(user).then do |results| results.each do |notification| _notifications.delete(notification) end end page._new_message = '' end def unread_notifications_from(user) _notifications.find({ sender_id: user._id, receiver_id: Volt.user._id }) end
Επίσης, πρέπει να διαγράψουμε ειδοποιήσεις από αφού ένας χρήστης επιλέξει τη συνομιλία και βλέπει τα νέα μηνύματα, οπότε πρόσθεσα αυτό το μέρος στο select_conversation
μέθοδος.
Ας προσθέσουμε έναν μετρητή ειδοποιήσεων ακριβώς δίπλα στο όνομα χρήστη:
{{user._name}} {{ if unread_notifications_from(user).count > 0 }} {{ unread_notifications_from(user).count }} {{ end }}
Τώρα η εφαρμογή είναι έτοιμη, μπορείτε να ανοίξετε μερικά προγράμματα περιήγησης και να αρχίσετε να δοκιμάζετε τις δυνατότητες του Volt σε πραγματικό χρόνο.
Παρόλο που το πλαίσιο Volt δεν είναι τόσο ώριμο και στιβαρό όσο τα περισσότερα δημοφιλή πλαίσια Ruby που υπάρχουν εδώ και χρόνια (αυτή τη στιγμή το Volt είναι ακόμα σε beta), αξίζει να εξεταστεί και να μελετηθεί.
Σε περίπτωση που σας ενδιαφέρει, χρησιμοποιήστε αυτό το σεμινάριο Ruby framework για να βγείτε από το Volt. Παρακολουθήστε τις περαιτέρω εξελίξεις, καθώς το Volt μοιάζει με ένα πολλά υποσχόμενο πλαίσιο Ruby ακόμη και σε αυτό το πρώιμο στάδιο ανάπτυξης.
Υπάρχουν πολλά δροσερά νέα χαρακτηριστικά στο στάδιο της προετοιμασίας και είμαι σίγουρος ότι το Volt θα γίνει πιο σχετικό τα επόμενα δύο χρόνια, καθώς περισσότεροι άνθρωποι αρχίζουν να πειραματίζονται με αυτό. Λόγω μιας σειράς καινοτόμων δυνατοτήτων, πολλοί προγραμματιστές θα μπορούσαν να ερωτευτούν το Volt και να το χρησιμοποιήσουν για το επόμενο Πρόγραμμα Ruby .