Találkoztam mojolicious, programozó jegyzetek
Mojolicious (ejtsd: „modzholishes”) - egy új és gyorsan fejlődő webes keretrendszer. Perl-ben írt. És ő írta őket, hogy ne Aby aki, mint Sebastian Riedel, aki az egyik Catalyst fejlesztők. Nemrég Mojolicious tárgya volt heves vita a közösségben Perl-programozó, úgyhogy nem tudtam nem próbálja ki.
1. Mit írjak Mojolicious?
Ha autóval a google szó Mojolicious, megtalálható a következő felülvizsgálat:
Miután elolvasta mindezt, nem értettem a lényeg - mi olyan jó Mojolicious. hogy minden, amit mondanak róla. Tényleg szükségem van rá, vagy ez csak valakinek gondjai az ideális alkalmazás architektúra, tökéletes kódot, és stb? És végül kíváncsisága engem.
2. Telepítés és beállítás
Mojolicious lehet helyezni CPAN, vagy ha a FreeBSD, a kikötőkben. By the way, a FreeBSD jelenleg standard Perl értelmező lett 5,12, mert 5.10 már nem támogatott. Ne felejtsd el, hogy frissítse!
pkg_upgrade -o perl-5.12.3 perl-5.10.1_3
pkg_add -r p5-Mojolicious
Mi szép, a keret nem húzza a nem függőségeket. A Catalyst, ahogy hallottam, húz egy Moose. ami sok csomagot. Ezután létrehoztam az első projekt:
/ Projects / mojolicious / test_app /
CD
/ Projects / mojolicious / test_app /
Mojo generál alkalmazás TestApp
Ekkor a következő könyvtár felépítése:
lib - az összes kódot itt tárolódik
log - rönkök vannak írva itt
köz - statikus fájlok (css, js, képek)
script - Modzholishesa mag
t - az összes vizsgálat
tempaltes - oldalsablonok
Azt is létrehozott egy kis kódot lehet azonnal ellenőrizni akcióban. A alkalmazás futhat az Apache vagy Nginx. de közben hibakeresés sokkal kényelmesebb használni a beépített webszerver Modzholishesa:
/ Test_app / script / test_app démon --restart
Alapértelmezésben a szerver figyeli 3000. port.
Ha azt szeretnénk, véleményem szerint, a beépített web szerver - ez kurva. Többé nem kell torzulhat emelésével helyi Apache. Vagy gyakorlat az írás kódot VIM SSH-n keresztül kapcsolatot. Nem, VIM + SSH - is jó. Mindaddig, amíg az internet minden rendben. Nos, vagy amíg a szükségességét, hogy csak kisebb változtatásokat.
I beépített webszerver csak egy probléma. A Windows (Windows 7 + eper Perl) gomb - -restart valami miért nem működik. Ennek eredményeként, a szerver újra kell indítani manuálisan módosítása után a kódot.
Kiegészítés: Az új verziók Mojolicious eltávolítjuk a kulcsot - -restart. Ehelyett azt javasolta, hogy használják morbo kiszolgáló:
morbo script / test_app
Hogyan kell használni Mojolicious CGI módban FastCGI és PSGI, olvasható Mojolicious :: útmutatók :: Cookbook. Minden nagyon egyszerű. Például becsavarásával Apache CGI módban végezzük egy sorban httpd.conf:
ScriptAlias / test_app "/ path / to / script / test_app"
... és a csapat ...
cd / usr / local / www / apache22 / data /
chown -R EAX: www. / test_app
chmod -R g + rx. / test_app
... a helyzet javítása érdekében. Mint, minden működik. Azonban, ha megnézi a naplókat az alkalmazás úgy tűnik, hogy valami nem működik jól:
Megszabadulni ilyen üzenetek nagyon egyszerű - csak hozzá ./test_app/lib/TestApp.pm következő:
# Ez a módszer az úgynevezett egyszer, amikor a szerver elindul
sub indítás # 123;
my $ self = műszak;
# Ez az, amit hozzáfűzni:
# Secret jelszót lehet hozzáférni pwgen -s 16
$ Self -> titkos # 40; „* POpRTm; M<;5?fk
3. Útvonal és kezelési érvek
Egy kis füst dokumentáció, azt többé-kevésbé értik azt az általános elvet a keret. Például felvenni a helyszínen egy új oldalt, akkor meg kell adni a TestApp :: startup () metódus a következő:
# A oldal / example-oldal /, a kért eljárás GET:
$ R -> útvonal # 40; '/ Példa-oldal /' # 41; -> via # 40; 'Get' # 41; -> a # 40; 'Példa-oldal # index' # 41; ;
# Ugyanezen az oldalon, a kért eljárás POST:
# -> keresztül ( 'post') -> a (például oldalas # eredményeként ');
# Ha a módszer nem fontos:
# $ R-> útvonal ( '/ például oldalas /') -> a (például oldalas # eredményeként ');
Ezután hozzon létre test_app / lib / TestApp / Példa / Page.pm:
csomag TestApp. Példa. oldal;
használja Mojo. Base 'Mojolicious :: Controller';
# Nyomtatása például oldalas
sub index # 123;
én # 40; $ self # 41; = @_;
# Nagyon akartam írni a lehetőségét vezető rönk
# De én nem tudom, hol dugjon ezt egy sor kód :)
$ Self -> app -> log -> hibakeresés # 40; "Rendering / pl oldalas /." # 41; ;
$ Self -> render # 40; var1 => '123'. var2 => '456' # 41; ;
# 125;
Mint látható, van egy kapcsolat Útvonal:
$ R -> útvonal # 40; „/ Név oldal /” # 41; -> a # 40; „Class # módszer neve” # 41; ;
Oldal nevek ugyanakkor természetesen lehet önkényes. Ha azt szeretnénk, hogy az érveket telt el a felhasználó, ez történik az alábbiak szerint:
# Szerezd meg a nevét minden paramétert:
én @names = $ self -> param;
# Szerezd meg a paraméter neve:
my $ value = $ self -> param # 40; „Név” # 41; ;
# Szerezd meg a paraméter lett átadva a módszer GET:
my $ value = $ self -> req -> query_params -> param # 40; „Név” # 41; ;
# Szerezd meg a paraméter lett átadva a módszer POST:
my $ value = $ self -> req -> body_params -> param # 40; „Név” # 41; ;
Részletek kezelésével kapcsolatos kéréseket is megtekinthető itt.
4. kész sablonok
Otthon már majdnem kész, már csak azt, hogy egy sablont is. Ehhez létre sablonokat / example / page / index.html.ep file:
% Layout 'default';
% Cím 'Preveeed!';