Jester: czy to jeszcze Javascript? ;)

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 , ,  | brak comments

Prototype - oficjalne API i dokumentacja

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 , , , , ,  | 9 comments

JavaScript idzie w dobrym kierunku

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(/^[email protected]([\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 ,  | 7 comments