Použití single page microframeworku na single page weby – {control}
- potapnik
- Člen | 127
Ahoj všem! Vyvíjím jeden web, který tvoří jedna stránka, s pár javascriptovými fíčurami pro posouvání obsahem, měnící hash v adresním řádku a tahajícím pár věcí z databáze a seznam fotek z jednoho alba z Facebooku přes Graph API. Je tam kontaktní formulář a jednoduché Latte konstrukce typu foreach a tak :-) a kromě toho používám Webloader Honzy Marka, prostě se bez toho neobejdu…
A tak mě napadlo, že klasická konstrukce webu nad nette-sandboxem je kanon na mikrovrabce, a začal jsem pokoukávat po mikroframeworku, abych měl všechno na jednom místě. Jenže ani mikroframework mě nepřinesl to kýžené – mít tam jeden index.php, jeden config.neon, jednu šablonu a jedeme. A tak jsem narazil na anglickým foru na single page microframework, což se blíží maximálně tomu, čeho bych rád dosáhl, nicméně jsem narazil na pro mě velkej problém: nedaří se mi do toho napasovat aspoň jednu komponentu, tak, jak jsem zvyklej z klasické Nette aplikace přes Latte – {control css}, ani nevím, jak jí do toho celku logicky implementovat.
Otázka tedy zní: použít kanon na vrabce a stavět na klasické struktuře appky i jednostránkové nijak složité weby? A nebo do toho singlepagemicroframeworku naimplementovat podporu {control}…a jak? :)
(vycházel jsem ze singlepage microframeworku, upraveným pro Nette 2.1):
<?php
if (empty($template)) {
require __DIR__ . '/vendor/nette/nette/Nette/loader.php';
$configurator = new Nette\Configurator;
$configurator->enableDebugger(__DIR__ . '/log');
$configurator->setTempDirectory(__DIR__ . '/temp');
$configurator->createRobotLoader()
->addDirectory(__DIR__)
->register();
$configurator->addConfig(__DIR__ . '/config/config.neon');
$container = $configurator->createContainer();
//$container->getService('application')->run();
$template = $container->createServiceNette__Template()->setFile(__FILE__);
$template->render();
exit;
}
?>
… následuje šablona…
- Šaman
- Člen | 2666
Ty tady nikde nevytváříš presenter, takže ani nemáš kontejner pro
kompomenty a myslím, že ti ani nebudou fungovat signály (jde ti ten
formulář?) apod. Takže ty potřebuješ fičury toho kanónu na vrabce,
akorát nad ním budeš mít jedinou stránku.
Myslím, ze i následná údržba bude jednodušší, když budeš mít
notoricky známou adresářovou struktutu (i když poloprázdnou), než když
budeš mít všechno v jednom adresáři (a pozor – index.php a config.neon
by stejně neměly být v jednom adresáři, protože index musí být zvenu
viditelný, zatímco config nesmí – máš v něm hesla apod).
- llook
- Člen | 407
Použil bych kanón, ale oproti standardnímu sandboxu bych si trochu zjednodušil adresářovou strukturu, sloučil bych index s bootstrapem atd.: https://github.com/…icroSkeleton