Co chybí Nette k nejlepšímu dynamickému frameworku na světě?

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

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

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

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

Ja osobne bych se rad odstinil od DB. Zatim bez nette pouzivam svoje DBModely ale musim vytvorit:

  1. atributy
  2. transformacni pole (atribut = sloupecek v DB)
  3. ktery atribut je PK
  4. 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)

A.
Člen | 87
+
0
-

Btw: jaky pouzivate vyvojove prostredi? Ja osobne Eclipse PTD. Sice se snazi inteligentne napovidat, ale kuli netypovosti to neni zadna slava.

gvim :).

veena
Člen | 98
+
0
-

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 | 8147
+
0
-

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.