Použití single page microframeworku na single page weby – {control}

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
potapnik
Člen | 127
+
+2
-

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
+
+1
-

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
+
+1
-

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

potapnik
Člen | 127
+
0
-

@llook: to jsem si myslel, stejně jak píše Šaman – fíčury kanónu prostě potřebuju… dík za reakce :-) snažil jsem se ušetřit procesorům a pamětem, ale pohodlnost a kvalita je samozřejmě důležitější…