DCSIMG
Sammy Js - RESTful Evented JavaScript - Don't Worry, Be Happy - Development is FUN

Sammy Js - RESTful Evented JavaScript

פורסם בתאריך May 25 2011, 06:01 PM על ידי Arnold | ישנם תגובות
בעידן של Web 2.0 (עוד מעט Web 3 :) ) פיתוח אפליקציות קפץ כמה שלבים קדימה.
כיום אין כמעט אתר אשר לא משתמש בטכנולוגיית ajax.
נניח ואתם רוצים להקים אפליקציה קטנה, Gmail למשל, ובזמן פיתוח לשפר את חווית שימוש ולבטל בכלל ריענוני עמודים, אז Sammy Js הוא הכלי בשבילכם
sammyjs
הקדמה

Gmail מאפשר לנו לדפדף בין האזורים במערכת שלהם ללא ריענון באתר. אם נתבונן בקישור נראה כי גוגל משתמשת ב anchor:

g1

ספריית Sammy Js עוקבת אחרי הקישור שלנו ובהתאם להגדרות שנגדיר היא מבצעת את הפעולה.

נגדיר את ההגדרות הבסיסיות לאפליקציה:

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.1.min.js"></script>   
<script src="https://github.com/quirkey/sammy/raw/master/lib/min/sammy-latest.min.js"></script>
    <script>
jQuery(function ($) {
    var app = $.sammy(function () {
        this.get('#/', function (context) {
            console.log("start page");
        })
    }).run('#/')
});
    </script>

אם נריץ את האפליקציה נקבל את:

image

כפי שאתם יכולים לראות ברגע שהעמוד שלנו עלה, התווסף לנו “#/” לקישור.

הספרייה מראה לנו גם מה ה route שהופעל (ניתן לראות זאת ב fire bug).

ניקח את זה כמה שלבים קדימה

נכין עמוד HTML:

<ul>
    <li><a href="#/">home</a></li>
    <li><a href="#/About">about</a></li>
    <li><a href="#/Article/1">Artile 1</a></li>
</ul>
<br /><br />
<div id="home" class="page">home</div>
<div id="about" class="page">about</div>
<div id="article" class="page">article <span id="num"></span></div>

לאחר שהכנו את ה HTML שלנו בואו נגדיר את הניתוב באפליקציה:

var app = $.sammy(function () {
    this.get('#/', function (context) {
        $("div").hide();
        $("#home").show();
    });

    this.get('#/About', function (context) {
        $("div").hide();
        $("#about").show();
    });
}).run('#/')

נריץ ונראה שהאפליקציה מציגה את ה DIV הרצוי (כמובן שזאת דוגמא מאוד בסיסית)

קישור 3 מכיל נתיב למאמר מספר 1 (נגיד ויש לי כמה מאמרים שונים שנטענים ב ajax).

נגדיר את הניתוב למאמר (ניתוב דינאמי):

this.get('#/Article/:Id', function () {
    $("div").hide();
    $("#article").show();
    $("#num").text(this.params["Id"])
});

תשימו לב כי לאחר Article אני מעביר פרמטר שנקרא Id ובעזרת

this.params["Id"]

אני שולף את הנתון המועבר (1 במקרה שלנו) ומכניס אותו לspan בשם num.

אתם יכולים לראות את האפליקציה המלאה כאן:

http://blogs.microsoft.co.il/blogs/arnold/Demos/sammyjs/sammyjs.html

במאמרים הבאים אציג לכם שימוש יותר מתקדם בספריה