Opublikowane przez Jarosław Zabiełło
Tue, 03 Apr 2007 10:08:00 GMT
Rails jest inspiracją do powstawania coraz bardziej niesamowitych bibliotek. Takim przykładem jest biblioteka Jester która na bazie Prototype umożliwia za pomocą JavaScript komunikację z serwerem (AJAX) w stylu prawie identycznym do Rubiego i modułu ActiveResource używanego w Railsach. Jester używa do tego najnowszej implementacji REST która jest wbudowana i silnie promowana w RoR.
Tagi prototype, rails, rest | brak comments
Opublikowane przez Jarosław Zabiełło
Fri, 19 Jan 2007 15:53:00 GMT
Znana biblioteka Prototype doczekała się własnej dokumentacji, API oraz bloga: http://prototypejs.org. Prototype zapewnia lekkie, eleganckie API o składni wzorowanej na języku Ruby. Ta składnia jest tak ładna, że niektórzy nawet nie widzą potrzeby tworzenia dodatkowych helperów. W tej chwili to, moim zdaniem, najlepsza biblioteka do JavaScript i AJAX. Rails postawił zdecydowanie na dobrego konia. Pylons – niejako “z rozpędu”, bo skopiowali railsowe helpery – też. :)
Czytaj dalej...
Tagi ajax, dojo, javascript, prototype, rails, rjs | 9 comments
Opublikowane przez Jarosław Zabiełło
Mon, 13 Nov 2006 16:56:00 GMT
Muszę przyznać, że od czasu grzebania w bibliotece Prototype spojrzałem w trochę świeży sposób na język JavaScript. Prototype jest przykładem tego, jak bardzo elegancki, dynamiczny i obiektowy kodu można pisać w tym języku. Pozwala też na pisanie bardzo eleganckiego kodu mocno przypominającego język Ruby
Np. poniższy kod wyświetla cztery razy okienko alertu. (Odpowiednikiem bloku kodu (ang. closure) w Ruby jest tu anonimowa funkcja).
(4).times(function() {
alert("JavaScript is cool")
});
Co ciekawe, w JavaScript (podobnie jak Ruby) można przeciążać wszystkie obiekty. Np. poniżej do klasy Array dodano metodę inArray.
Array.prototype.inArray = function(needle) {
for(var key in this) {
if (this[key] === needle) {
return true
}
}
return false
}
JavaScript posiada też wbudowany operator do wyrażeń regularnych. Np. poniższy kod sprawdza poprawność pola w formularzu:
<script type="text/javascript">
//<![CDATA[
var MyForm = {
validateEmail: function() {
if ($F('email_id').match(/^.+?@([\w\d\.-]+?\.\w{2,5})\s*$/)) {
$('email_error').innerHTML = '';
return true;
} else {
$('email_error').innerHTML = 'Wrong email format!';
return false;
}
},
validateForm: function() {
return this.validateEmail() ? true: false;
}
};
//]]>
</script>
<form action="" method="post" onsubmit="return MyForm.validateForm()">
<table border="0" id="container">
<tr>
<th><label for="email_id">Email Adddress:</label></th>
<td>
<input type="text" id="email_id" onchange="MyForm.validateEmail()" />
<span id="email_error"></span>
</td>
</tr>
<tr>
<td colspan="2"><input id="submit" type="submit" /></td>
</tr>
</table>
</form>
Jakby tego było mało, JavaScript w nadchodzącej wersji 1.7 przejmuje trochę wygodnej składni Pythona!
Szkoda, że taki popularny PHP wzoruje się na brzydkiej składni Perla, C++ i Javy. JavaScript wybrał sobie znacznie bardziej eleganckie wzorce.
Tagi javascript, prototype | 7 comments