ugrás a tartalomhoz

Synergy: JavaScript keretrendszer webalkalmazások építéséhez

Török Gábor · 2008. Május. 9. (P), 15.56
Noha még a napokban azon vívódott Peter, hogy kiutat találjon a release early, release often és az első benyomás problematikájából, végül úgy döntött, már most nyílttá teszi a Synergy forráskódját. Az egyelőre még early alpha stádiumban lévő JavaScript keretrendszeren tavaly nyár óta dolgozik Peter Michaux.

A projekt egy Rhinon alapuló, kiszolgáló oldali szett, kódjait vegyesen JavaScript és Java nyelvű összetevők teszik ki. Ma volt időm először kézbe venni a forráskódot, így a helló, világ! klasszikuson nem jutottam túl sokkal, de a framework – legalábbis használatát tekintve – elsőre a Djangora emlékeztetett. A Synergy esetében nincsenek meg a hagyományosan vett vezérlők, minden művelet. A műveletek argumentumként kapják a kérést, majd tudásukhoz mérten egy válasszal kell visszatérniük. Legegyszerűbb formában:

function sayHello(request) {
    return {
        body: 'Szia ' + (request.params.name || 'világ!')
    };
}
Ahol a request.params.name például a HTTP GET-tel érkező name paraméter értékét hordozza.

A műveleteket URL-ekhez köthetjük, így:

mapConnect('sayHello', {path:'/szia'});
A kimenetet öntsük HTML formába, ehhez készítsünk egy sablont, és egyúttal a műveletbe bevarrt üdvözlő szöveget is emeljük ki onnan:

<p>Szia, <%= c.name || 'világ' %>!<p>
A sayHello() műveletünket értesítjük a sablon használatáról:

function(request) {
    return {
      body: layout({name: request.params.name})
    };
}
A keretrendszer ejs összetevője lesz az, aki a háttérben kapcsolatot teremt sablon és művelet között. A sablon fájlnevéből (legyen layout.ejs) származtatva implicit elérhető lesz a layout nézet, az annak argumentumként adott objektum pedig megállapodás szerint c objektumként jelenik meg a sablonban. Nem szükségszerű az ejs használata, a Synergy nézetekről külön bejegyzésben is értekezik Peter.

Maga a Synergy moduláris felépítésű, illetve valójában maga a Synergy csak egy csupasz webalkalmazás váz, valamennyi funkcionalitás xjs modulokkal érhető el (ezt a szerző a Gem, CPAN működéséhez hasonlítja, és ezzel dugába is dőlt a djangós hasonlatom). A keretrendszer tartalmaz MySQL, PostgreSQL, JSON, Logger, Unit és további modulokat, valamint egy beépített webkiszolgálót, amelyekkel könnyen elindítható egy alkalmazás. Legfrissebb újításként tegnap egy YUICompressor modul is része lett a forráskódnak, így egy éles állapot legyártása során a JS és CSS állományokat akár egy minimalizáló szűrőn is átnyomhatjuk.

A Synergy iránt érdeklődőknek kiindulópontként ajánlom Peter "hello, world" Tutorial: Synergy Server-Side JavaScript cikkét, holnapra esőt mondanak. Kellemes hétvégét.
 
1

Köszi

Bártházi András · 2008. Május. 9. (P), 16.01
Köszönöm, már szemeztem a dologgal én is, de nem igazán tudtam kideríteni, hogy miről is szól a Synergy - ahogy látom egy erősen fejlesztés alatt rendszer, amit saját szervere tud még csak futtatni. Nem találtam, te nem tudsz valamilyen tervről, ami Apache vagy más webszerverbe ágyazná? Lehet persze proxy-zni is, de...
2

Nem olvastam még róla

Török Gábor · 2008. Május. 9. (P), 16.34
Még nekem sem teljesen tiszta, a legfrissebb revizióban például már megjelentek Apache Commons modulok, de Peter még nem írt erről semmit.
3

forrás

yaanno · 2008. Május. 10. (Szo), 09.40
Köszi az updatet, érdekes projekt. Nem láttam forráshoz hozzáférést - csak én néztem be, vagy egyelőre nincsen publikálva a dolog?
4

SVN

Török Gábor · 2008. Május. 10. (Szo), 10.00
A bejegyzés végén direkt azért a tutorialra hivatkoztam, mert az azzal kezdődik, hogy töltsd le a forrást (:

$ svn co -r 166 http://dev.michaux.ca/svn/xjs
5

omg

yaanno · 2008. Május. 10. (Szo), 10.10
Tejóég :) köszi!