Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Δουλεύω πάνω σε ένα κάπως κλειστό εσωτερικό δίκτυο με ένα web server apache να σερβίρει κάπου 6-12 μηχανήματα, επταετίας ίσα για να ανοίγουν browser.

Κάθε μηχάνημα τραβάει μια ιστοσελίδα η οποία περιέχει και ένα κώδικα OpenLayers δηλαδή Javascript. Ο χρήστης απλά ανοίγει το Firefox και συνδέεται στο web server.

Στην αρχή είχα μια στατική σελίδα σε HTML με Javascript που έπαιρνε από τον web server μου.

Πολύ γρήγορα, επειδή ήθελα να συμπληρώνει κάθε χρήστης δικές του παραμέτρους σε μια φόρμα, έβαλα τον κώδικα μέσα σε PHP για να παράγει HTML/Javascript.

Π.χ. κάποιος θέλει να ανοίγει απευθείας στις δικές του συντεταγμένες. Πέρναγα τις συντεταγμένες σε παραμέτρους URL και το έκανα bookmark.

Στο PHP αρχείο απλά διάβαζα με $_GET.

 

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

Ωστόσο η λύση να φτιάξω πιο πολύπλοκα PHP αρχεία που θα σερβίρουν ιδιαίτερο κώδικα Javascript με βάζει σε σκέψεις.

Αισθάνομαι ότι δεν είμαι καλά ενημερωμένος και ότι μπορεί να υπάρχει κάποια καλύτερη λύση.

 

Σαν μια πρώτη λύση υπάρχει το GWT-OpenLayers για το οποίο θα χρειαστώ κάποιο χρόνο για να μάθω και κατόπιν να αλλάξω όλη τη φιλοσοφία ανάπτυξης. Δεν τα πάω καλά με Java.

 

Αλλά γενικά, αν κάποιος θέλει να σερβίρει α λα καρτ κώδικα Javascript που να εξαρτάται από τα στοιχεία του πελάτη, τι δυνατότητες έχει;

Δημοσ.

Γενικά η ιδέα είναι πως θα έχεις τον κώδικα JS στατικό αλλά παραμετροποιήσιμο και δεν θα τρέχει αμέσως. Οπότε για να φτάσεις από αυτό το σημείο στην εκτέλεση της εφαρμογής μετά χρειάζεται α) να περάσεις παραμέτρους και β) να το τρέξεις. Αυτά γίνονται και τα 2 με ένα function call. :)

 

Π.χ. αν πριν είχες

function whatever(userId) { ... }

whatever(<?php echo json_encode($_GET['userid']); ?>);

τώρα θα έχεις απλά τη function whatever (η οποία μπορεί να παίρνει βέβαια object σα παράμετρο που να έχει μέσα ο,τι θες).

 

Το call στην whatever() θα το βγάλεις από το .js αρχείο που έχει τον κυρίως κώδικα και θα το βάλεις αλλού. Ξεχωρίζοντας τα πράγματα έτσι έχεις και διάφορες επιλογές, π.χ. η PHP σελίδα μπορεί τώρα να κάνει απλά echo ένα script με το call στην whatever() περνώντας τις παραμέτρους απο κει, ή μπορείς να βάλεις JS στη σελίδα που μόλις φορτώνει θα κάνει ένα AJAX call στον server για να πάρει τις παραμέτρους (σε JSON) και μετά να καλέσει την whatever(), κλπ.

 

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

Δημοσ.

Από ό,τι κατάλαβα προτείνεις να κάνω καλύτερη κατανομή του κώδικα.

Δεν είναι κακή ιδέα, χρειάζεται όμως να δω όλα όσα κάνει "από μηδενική βάση".

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

Έφτιαξα κάτι απλό στην αρχή και στη συνέχεια προσέθετα πράγματα ανάλογα με το feedback που έπαιρνα.

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

 

Τελοσπάντων, μην το κουράζω σε εξηγήσεις. Να σε ρωτήσω μόνο αυτό: Μπορώ να βρω τεχνικές σαν αυτές του παραδείγματος που μου έδωσες σε κάποια ιστοσελίδα;

Δημοσ.

Ναι αυτό προτείνω. Το να ξεκινήσεις από λευκό χαρτί (ίσως όχι "μηδενική βάση" γιατί ξεκινάς με κάτι πολύ σημαντικό: την εμπειρία του τι πήγε στραβά) είναι ευκολότερο από το να προσπαθήσεις να τα συμμαζέψεις, οπότε αφού είσαι στη διαδικασία της συνειδητοποίησης θα σου προσφέρει περισσότερα σε μάκρος χρόνου.

 

Για τεχνικές που λες δεν είναι πολύ απλά τα πράγματα -- υπάρχουν διάφορα blogs στα οποία μπορεί να πετύχεις τέτοιες συγκεκριμένες μινι-λύσεις, αλλά είναι τελείως στην τύχη το αν θα βρεις κάτι που σ' ενδιαφέρει και που (όποτε έχω βρει κάτι τέτοιο ήταν μέσω googling). Επίσης υπάρχουν και πιο στανταρ προσεγγίσεις (λέγονται design patterns) αλλά όπως καταλαβαίνεις είναι εξ' ανάγκης πολύ πιο γενικές και αφηρημένες έννοιες, δε θα σε βοηθήσουν σε τόσο συγκεκριμένο επίπεδο.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...