Co chybí Nette k nejlepšímu dynamickému frameworku na světě?
- veena
- Člen | 98
Používám teď v práci a v jedom projektu Django na Pythonu. Je to jeden z nejlepších frameworků pro dynamické jazyky. Bohužel má jednu velkou nepříjemnost. A to, že není postaven na rozhraních. Tudíž lidé pro to píšou sice znovupoužitelné aplikace, pokud je ale chcete použít a rozšířit musíte je zadrátovat do své aplikace. Pokud je budete chtít v budoucnu upgradovat čeká vás neveselá práce s diffem.
Co jsem tak slyšel o monkey patchingu v Rails, bude to asi podobné.
V tomhle Nette opravdu vyhrává na celé čáře. Co by ale potřebovalo, aby porazilo vše, co tu dosud existuje? Podle mě je to těchle 5 věcí, (které Django případně Ruby nebo i php frameworky mají a proč je lidé rádi používají):
- lehké ORM
- propojení formulářů s modely
- umožnit distribuci aplikací i s vlastními routami tj. inkludování rout (tj. v hlavním bootstrapu uvedeš, že vše za /blog/ řeší soubor s nastavením rout v adresáři/aplikaci blog a tam si definuješ routy přímo pro blog.
- jednoduchý templatovací jazyk (David na něm pracuje)
- dynamická administrace (ne ve smyslu práce s tabulkami jako phpMyAdmin ale práce s modely a jejich vztahy; a ne generování tříd ale administrace dynamicky rozběhlá nad přítomnými modely pomocí ORM a formulářů.
Co si o tom myslíte? Co chybí Nette k „dokonalosti“?
- phx
- Člen | 651
Souhlasim s ORM (1) a includovani rout (3).
Template mi neni jasne co myslis. V Nette jsou celkem pekne udelane
sablony.
A dynamicka administrace (tedy pokud myslis takoveho univerzalniho admina
kteremu das datovy model a admin je hotov) mi prijde sice pekny pro naplneni DB,
ale prijde mi to jako zbytecny.
- A.
- Člen | 87
Nejsou ale pozadavky o ORM tak trochu smerovany prave k onomu django? Zkousel jsem ho hodne davno, tak popr. prominte zastaralost. Mimochodem, tenkrat jsem si ho jako python framework nevybral prave kvuli robustnosti.
Souhlasim s bodem o routach, v ostatnich bodech si dovolim
nesouhlasit.
Pominu-li pozadavek na templaty, toci se vsechny body kolem ORM. Ale proc tim
urcovat smer vyuziti Nette? Ja bych to napr. nevyuzil a jen by me to strasilo.
Udelal jsem si vlastni „DibiTable“ a vlastni „pseudo-modely“ a jsem rad
za volnost, kterou jsem pri tvorbe navrhu mel. Tu bych ztratil. A tim jiste
i vyhody (mozna i nevyhody), ktere me k tomuto navrhu vedly.
Myslim, ze tahle volnost prave dela Nette tim nejlepsim frameworkem :).
- phx
- Člen | 651
Ja osobne bych se rad odstinil od DB. Zatim bez nette pouzivam svoje DBModely ale musim vytvorit:
- atributy
- transformacni pole (atribut = sloupecek v DB)
- ktery atribut je PK
- nazev tabulky
Asi by moji lenost vyresil nejaky generator, ale kdyby bylo jiz neco hotoveho traba bych to vyuzil. I kdyz je pravda, ze nemam vubec predstavu jak by to melo vypadat.
Btw: jaky pouzivate vyvojove prostredi? Ja osobne Eclipse PTD. Sice se snazi inteligentne napovidat, ale kuli netypovosti to neni zadna slava.
Editoval phx (19. 5. 2008 19:29)
- veena
- Člen | 98
A. napsal(a):
Nejsou ale pozadavky o ORM tak trochu smerovany prave k onomu django? Zkousel jsem ho hodne davno, tak popr. prominte zastaralost. Mimochodem, tenkrat jsem si ho jako python framework nevybral prave kvuli robustnosti.
Souhlasim s bodem o routach, v ostatnich bodech si dovolim nesouhlasit.
Pominu-li pozadavek na templaty, toci se vsechny body kolem ORM. Ale proc tim urcovat smer vyuziti Nette? Ja bych to napr. nevyuzil a jen by me to strasilo. Udelal jsem si vlastni „DibiTable“ a vlastni „pseudo-modely“ a jsem rad za volnost, kterou jsem pri tvorbe navrhu mel. Tu bych ztratil. A tim jiste i vyhody (mozna i nevyhody), ktere me k tomuto navrhu vedly.Myslim, ze tahle volnost prave dela Nette tim nejlepsim frameworkem :).
Protože jakmile máš ORM, můžeš:
- brát z něj atributy a validační pravidla do formulářů.
- vytvořit automatickou administraci
- David Grudl
- Nette Core | 8218
Vrácím se k tomuto staršímu vláknuů
Podle mě je to těchle 5 věcí, (které Django případně Ruby nebo i php frameworky mají a proč je lidé rádi používají):
- lehké ORM
Tady platí totéž, co jsi psal o rozhraních – propojit framework s ORM vnímám jako krok zpátky. Beru jako velkou výhodu, že společně s Nette můžeš používat jakýkoliv ORM. A pokud bude potřeba propojit např. komponentu s ORM, šel bych opět cestou rozhraní.
- propojení formulářů s modely
To mi opět připadá jako záležitost rozhraní, tentokrát mezi formulářem a nějakým ORM nebo databázovým layerem. Ale nemám v této věci jasný názor.
- umožnit distribuci aplikací i s vlastními routami tj. inkludování rout (tj. v hlavním bootstrapu uvedeš, že vše za /blog/ řeší soubor s nastavením rout v adresáři/aplikaci blog a tam si definuješ routy přímo pro blog.
Tohle by mělo v Nette fungovat velmi dobře. Dejme tomu, že do website
programované v Nette chci přidat fórum. Stačí, aby fórum disponovalo
instalační funkcí createRoutes()
:
class Forum
{
function createRoutes($router, $prefix)
{
$router[] = new Route($prefix . 'index.php', array(
'presenter' => 'Forum:Homepage',
'action' => 'default',
));
$router[] = new Route($prefix . 'admin.php', array(
'presenter' => 'Forum:Admin',
'action' => 'default',
));
...
}
}
„Zaroutování“ fóra do existující aplikace je pak velmi jednoduché. Bootstrap.php:
$router = $application->getRouter();
// přidáme své routy
...
// přidáme modul forum
Forum::createRoutes($router, '//forum.example.com/');
- dynamická administrace (ne ve smyslu práce s tabulkami jako phpMyAdmin ale práce s modely a jejich vztahy; a ne generování tříd ale administrace dynamicky rozběhlá nad přítomnými modely pomocí ORM a formulářů.
Moc nechápu, co tím máš na mysli, ale připadá mi to jako téma pro „ukázkovou aplikaci“ nebo spíš extra nástroj.