Πώς να γράφετε μικρο-ιστοσελίδες

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

Ακόμα και κατά τη δημιουργία απλών ιστοσελίδων, δεν θέλετε να εγκαταλείψετε την άνεση. Δεν θέλετε να εφευρίσκετε αυτό που έχει ήδη λυθεί μία φορά. Μείνετε ήσυχα τεμπέλης και αφήστε τον εαυτό σας να κακομάθει. Το Nette Framework μπορεί να χρησιμοποιηθεί εξαιρετικά και ως micro framework.

Πώς μπορεί να μοιάζει ένα τέτοιο microsite; Για παράδειγμα, έτσι ώστε ολόκληρος ο κώδικας της ιστοσελίδας να τοποθετηθεί σε ένα μόνο αρχείο index.php στον δημόσιο φάκελο:

<?php

require __DIR__ . '/../vendor/autoload.php';

$configurator = new Nette\Bootstrap\Configurator;
$configurator->enableTracy(__DIR__ . '/../log');
$configurator->setTempDirectory(__DIR__ . '/../temp');

// δημιουργία DI container βάσει της διαμόρφωσης στο config.neon
$configurator->addConfig(__DIR__ . '/../app/config.neon');
$container = $configurator->createContainer();

// ορίζουμε το routing
$router = new Nette\Application\Routers\RouteList;
$container->addService('router', $router);

// route για το URL https://example.com/
$router->addRoute('', function ($presenter, Nette\Http\Request $httpRequest) {
	// ανιχνεύουμε τη γλώσσα του browser και ανακατευθύνουμε στο URL /en ή /de κ.λπ.
	$supportedLangs = ['en', 'de', 'cs'];
	$lang = $httpRequest->detectLanguage($supportedLangs) ?: reset($supportedLangs);
	$presenter->redirectUrl("/$lang");
});

// route για το URL https://example.com/cs ή https://example.com/en
$router->addRoute('<lang cs|en>', function ($presenter, string $lang) {
	// εμφανίζουμε το αντίστοιχο template, για παράδειγμα ../templates/en.latte
	$template = $presenter->createTemplate()
		->setFile(__DIR__ . '/../templates/' . $lang . '.latte');
	return $template;
});

// εκκίνηση της εφαρμογής!
$container->getByType(Nette\Application\Application::class)->run();

Όλα τα υπόλοιπα θα είναι templates αποθηκευμένα στον γονικό φάκελο /templates.

Ο κώδικας PHP στο index.php πρώτα προετοιμάζει το περιβάλλον, στη συνέχεια ορίζει τις routes και τέλος εκκινεί την εφαρμογή. Το πλεονέκτημα είναι ότι η δεύτερη παράμετρος της συνάρτησης addRoute() μπορεί να είναι ένα callable, το οποίο εκτελείται μετά το άνοιγμα της αντίστοιχης σελίδας.

Γιατί να χρησιμοποιήσετε το Nette για microsite;

  • Οι προγραμματιστές που έχουν δοκιμάσει ποτέ το Tracy δεν μπορούν σήμερα να φανταστούν ότι θα προγραμματίσουν κάτι χωρίς αυτό.
  • Πάνω απ' όλα, όμως, θα χρησιμοποιήσετε το σύστημα προτύπων Latte, επειδή ήδη από 2 σελίδες θα θέλετε να έχετε ξεχωριστή διάταξη και περιεχόμενο.
  • Και σίγουρα θέλετε να βασιστείτε στο αυτόματο escaping, ώστε να μην προκύψει ευπάθεια XSS
  • Το Nette επίσης εξασφαλίζει ότι σε περίπτωση σφάλματος δεν θα εμφανιστούν ποτέ τα μηνύματα σφαλμάτων PHP για προγραμματιστές, αλλά μια κατανοητή σελίδα για τον χρήστη.
  • Αν θέλετε να λαμβάνετε ανατροφοδότηση από τους χρήστες, για παράδειγμα με τη μορφή μιας φόρμας επικοινωνίας, τότε θα προσθέσετε επίσης φόρμες και βάση δεδομένων.
  • Μπορείτε επίσης εύκολα να στείλετε μέσω email τις συμπληρωμένες φόρμες.
  • Μερικές φορές μπορεί να σας φανεί χρήσιμο το caching, για παράδειγμα αν κατεβάζετε και εμφανίζετε feeds.

Στη σημερινή εποχή, όπου η ταχύτητα και η αποτελεσματικότητα είναι καθοριστικής σημασίας, είναι σημαντικό να έχετε εργαλεία που σας επιτρέπουν να επιτύχετε αποτελέσματα χωρίς περιττές καθυστερήσεις. Το Nette framework σας προσφέρει ακριβώς αυτό – γρήγορη ανάπτυξη, ασφάλεια και ένα ευρύ φάσμα εργαλείων, όπως το Tracy και το Latte, που απλοποιούν τη διαδικασία. Αρκεί να εγκαταστήσετε μερικά πακέτα Nette και η κατασκευή ενός τέτοιου microsite γίνεται ξαφνικά παιχνιδάκι. Και ξέρετε ότι πουθενά δεν κρύβεται καμία τρύπα ασφαλείας.