צימוד Yui ו YQL לבנות יישומונים דינמי

17 יוני 2009 בשעה 11:14 על ידי יונתן לבלנק | על פיתוח | 14 תגובות

Yahoo! Developer Network מטיף יונתן לבלנק אודות המחבר: יונתן לבלנק (האתר: jcleblanc ) עובד עם קבוצת שילוב שותף ב -Yahoo! Developer Network כמו מטיף בכיר מהנדס תוכנה / טכנולוגיה. התמקדות ביחסים שותף והדרכה, כמו גם אינטגרציה מפתח חיצוני, יונתן עובד עם ומקדם טכנולוגיות מתפתחות כדי לסייע באימוץ ושימוש בטכניקות חדשות ההתפתחות החברתית. כמהנדס תוכנה, יונתן יצירות רבות עם התפתחות אינטראקציה חברתית באינטרנט, פיתוח שיטות חדשות לקישור רשתות חברתיות לנהוג את האידיאל של האינטרנט פתוח. לפני יאהו, עבד יונתן בתוך הייצור הן בתקשורת מוצר פנטזיה צוותי פיתוח ב CBSSports.com, שם פיתח על מוצרים כגון עטורת הפרסים של האמי טירוף לצעוד על נגן וידאו לפי דרישה. נולדה וגדלה בקנדה, סיים ג'ונתן מן אלגונקווין המכללה לאמנויות וטכנולוגיה יישומית עם תואר במדעי המחשב, וכיום מתגוררת בדבלין, קליפורניה עם אשתו.

Yui יש רשימה עשירה להפליא של מניפולציה של נתונים ושירותים UI בספרייה שלה, אבל לבוא עם נתונים עשיר לא פחות מעניינת היא בדרך כלל האחריות שלך לפועל. באותה מידה, YQL יש להביא נתונים עשיר ויכולת אינטראקציה, אבל היא חסרה כלי ויזואליזציה של Yui. אם ניקח את הדמיית ותכונות שליטה Yui צימוד אותם עם צינור את הנתונים הגולמיים של YQL, אנו יכולים לבנות עשיר להפליא, יישומונים אינטראקטיביים ללא צורך ליצור כל אחד או נתונים חזותיים מנגנוני אחסון עצמנו.

אני אתן לך סיור של שני יישומונים בנוי עם Yui ו YQL בפוסט זה. אחת מציג תוכן זמין לציבור ואת בונה אחרים על יישומון כי המקורית עם מרכיב PHP בצד השרת כדי להציג נתונים על ידי המשתמש הפרטי לאימות עם OAuth.

גישה לנתונים אישי

שימוש Yui קבל השירות , אנו מסוגלים לבצע פניות הציבור YQL כתובת שאילתה מבלי הכאב של התמודדות עם סוגיית מדיניות מאותו מוצא שבדרך כלל מונעים מאיתנו לעשות XHR מבוססי בקשות לשרת זה לא על תחום זהה לבקשת מקוריים. להלן דוגמת קוד קטן אשר מציג כיצד אתם הייתם קוראים YQL באמצעות Yui קבלת השירות :

 <script type="text/javascript">
 var getYQLData = function (שאילתה) {
     / / להכין את ה-URL עבור Yui GET בקשה:
     var yqlPublicQueryURL = "http://query.yahooapis.com/v1/yql?";
     var sURL = yqlPublicQueryURL + "q =" + שאילתה
         + "& = פורמט JSON & callback = yqlWidget.getYQLDataCallback";

     / / לעשות GET בקשה YQL עם שאילתה ובלבד
     transactionObj var = YAHOO.util.Get.script (sURL, {
         onSuccess: onYQLReqSuccess,
         onFailure: onYQLReqFailure,
         היקף: זו
     });

     לחזור transactionObj;
 }
 </ Script>

כתובת האתר שאילתה ( sURL ) הוא מורכב מחלקים שונים כדי לפצות את הבקשה. yqlPublicQueryURL משתנה מכיל את URI הציבור להכנת בקשות YQL. ישנם גם שלושה פרמטרים שאילתה שאנו עוברים יחד לאורי הזה. q פרמטר היא שאילתה YQL כי אנו משתמשים ב לבקשתנו (למשל select * from flickr.photos.search where text="YDN" ), format הוא פורמט שאנחנו רוצים להחזיר (JSON או XML) של הבקשה, ואם אנחנו רוצה לעטוף JSON חזרו הנתונים פונקציה (a la JSONP ) אנו יכולים להגדיר פונקציה התקשרות באמצעות callback פרמטר. כאשר פונקציה זו מפעילה את השירות קבל יגרום בקשה query.yahooapis.com עם שאילתה שצוין. על הצלחה, מסר באגים יוצג onSuccess התקשרות עבור השירות קבל אז התקשרות מוגדר בשאילתה YQL ייקרא לנתח את התוצאות חזרו JSON.

הגדרת את זה יישומון באתר שלך או בבלוג הוא פשוט כמו להוריד את הקוד מ js-yql-display תיקייה github ב http://github.com/jonleblanc/yql-utilities/tree/master ו את הפעלת יישומון כמו זו:

 <- קובץ יישומון כוללים ->
 <script type="text/javascript" src="yql_js_widget.js"> </ script>

 <-! סגנונות יישומון ->
 <style>
 div.imgCnt {גבול: 1px solid rgb (96, 96, 96);
     שולי: 5px 5px 5px 0pt; לצוף: עזבו;
	 צבע הרקע: rgb (241, 241, 241); רוחב: 100px;
	 גובה: 140px;}
 div.imgCnt img {גבול: 0; שוליים: 5px;}
 div.imgCnt div.imgTitle {padding: 5px; font-size: 11px;
     text-align: מרכז;}
 </ Style>

 <script type="text/javascript">
 var config = {"באגים": נכון};
 var פורמט = '<div class="imgCnt" align="center"> "
     + "<A href =" http://www.flickr.com/photos/ {הבעלים} / {id} / "
     + "Target =" _blank "> <img src =" http://farm3.static. "
     + 'Flickr.com / {שרת} / {id} _ {סוד}. Jpg? V = 0 "
     + 'רוחב גובה = "80" = "80" /> </ a> "
     + '<div Class="imgTitle"> "
     + "<A href =" http://www.flickr.com/photos/ {הבעלים} / "
     + '{Id }/">{ כותרת} </ a> "
     + '</ Span> </ p>';
 var yqlQuery =
     "SELECT * FROM flickr.photos.search שבו הטקסט =" YDN "';
 var insertEl = 'widgetContainer';
 yqlWidget.push (yqlQuery, config, פורמט, insertEl);
 </ Script>

כל מספר של שאילתות YQL הציבור יכול להתבצע תוך שימוש בדוגמה לעיל - כל התיעוד עבור אופן את התסריט עובד תצורה ניתן למצוא באתר github . אם נריץ את הקוד הנ"ל אנחנו יכולים בקלות להציג את התמונות האחרונות שלנו Flickr:

Flickr תמונה להציג

אז למה כל הרעש הזה סביב השימוש YQL ו Yui יחד כזה? ובכן, לי הכלים הללו להביא לי די קרוב סוג המסורתית (Model View Controller) של תבנית העיצוב MVC. YQL היא צבירת נתונים נפלאים כלי מניפולציה, אבל בסוף היום זה רק נתונים. אנו להכניס את הפונקציונליות בקר באמצעות כלי עזר Yui כגון קבלת השירות או מנהל החיבורים , ואז נוכל לבנות שכבת המצגת שלנו על גבי זה באמצעות יישומונים כמו DataTable ו תרשימים .

עדכון פרטית זרם

גישה לנתונים משתמשים פרטיים

בואו לבחון את ההתאמה של Yui ו YQL עוד קצת על ידי לקיחת הבסיס נבנה יישומון ג'אווה סקריפט הציבור שאילתה הצמדת רכיב צד השרת כדי לאמת ולאחסן מושב OAuth. באמצעות Y! OS PHP SDK , אנו יכולים להרחיב את יישומון ג'אווה סקריפט כדי להציג את זרם לעדכן פרטים תג אישי של המשתמש מאומת במקור יישומון. מכיוון שאנחנו באמצעות SDK PHP על תחום זהה יישומון שלנו כדי לבצע שיחות מאומתים שלנו YQL, אנחנו כבר לא צריכים לדאוג לגבי אותו המוצא סוגיות מדיניות. משמעות הדבר היא כי אנחנו יכולים להחליף את השימוש של השירות Yui קבל עם מנהל החיבורים של Yui . היתרון לשימוש מנהל החיבורים כאן הוא שאנחנו יכולים להשתמש בקשת רגילה ajax ואת מטפלים באירועים של כלי התקשרות במקום בתוך השאילתה YQL. פונקציה בקשה חדשה שלנו היה נראה משהו כזה:

 <script type="text/javascript">
 var getYQLData = function (שאילתה) {
     / / להכין URL & לפרסם נתוני POST מנהל Yui חיבור:
     var sURL = "private_data_fetch.php";
     var postData = "q =" + השאילתה;

     / / להגדיר את מנהל החיבורים callbacks האירוע
     var התקשרות = {
         הצלחה: parseYQLResults,
         כישלון: onYQLReqFailure
     };

     / / להפוך את בקשת POST כדי YQL עם שאילתה ובלבד
     var transactionObj = YAHOO.util.Connect.asyncRequest ('POST',
	     sURL, התקשרות, postData);

     לחזור transactionObj;
 }
 </ Script>

מנהל הקשר משמש כדי להפוך את בקשות AJAX ל PHP SDK (שאת הפניות שוכנות private_data_fetch.php בתוך קוד לעיל) עם השאילתה כפרמטר POST. SDK בתורו גורם בקשת אימות עבור נתונים אישיים של המשתמש, מרוקן את מחרוזת כמו JSON להחזיר את הבקשה. אז כל מה שאתה צריך לעשות הוא לנתח את מחרוזת JSON באמצעות השירות JSON Yui , אחרי שאתה נקרא YAHOO.util.JSON.parse() על תוצאות העסקה, הנתונים יכולים להיות מטופלים באופן זהה את הנתונים first למשל.

מאז YQL מניב תוצאות כאשר את הבקשה מכונה, אין צורך בבית הזה נתונים על עצמך. YQL יכול למשוך נתונים מכל מקור זמין, כך שתוכל לבנות יישומונים כאלה להציג תוצאות דינמי עם כל רענון.

שניהם של יישומונים לראווה בהודעה זו זמינים באופן חופשי להורדה תרומה על github בבית
http://github.com/jonleblanc/yql-utilities/tree/master . יישומונים אלו הם:

  • js-yql-display : יישומון ג'אווה סקריפט כדי להציג נתונים YQL הציבור
  • php-yql-display : JavaScript / PHP יישומון כדי להציג נתונים YQL פרטית

שתף להרחיב: הפוך עם del.icio.us | digg זה! | reddit!

14 תגובות

  1. [...] לא בטוח מה לעשות? ובכן, יש להם כמה דוגמאות לשימוש בנתונים רעידת אדמה. או שאתה יכול לבדוק את הכוונה שלהם על בניית ווידג'טים. [...]

    Pingback על ידי נתונים ציבוריים פריצה עם YQL באולם האקר / גשר קוד פתוח: כנס מקור אזרחי פתוח / 17-19 יוני, 2009 / פורטלנד, או - 17 יוני 2009 #

  2. גרמת לי לחשוב על פיתוח סדרה של Datasource לטפל בבקשות YQL. אפשר לראות את זה בעבודה זו דוגמה יחד עם יישומון DataTable.

    תודה על הרעיון.

    תגובה על ידי סאטיאם - 21 יוני 2009 #

  3. זו דוגמה מצוינת - אתה היכו אותי אליו:). אני לוקח מבט לתוך באמצעות YQL כמקור נתונים עבור מרכיבים שונים Yui ואת זה הוא דוגמה מושלמת לכך. יתרון נוסף הוא שאתה לא צריך לשמור את מקור הנתונים במסד הנתונים.

    - ג'ון

    תגובה על ידי יונתן לבלנק - 22 יוני 2009 #

  4. תודה. בכל מקרה, זה מראה על חולשה מינורי בתגובה מ YQL: הוא אינו מספק כל meta-נתונים על התוצאות.

    אני רק לנחש כי הרשומה הראשונה query.results הוא תבנית טובה עבור כל השאר, אבל זה לא יכול להיות נכון, אין באמת שום סיבה להניח שזה יהיה כך.

    יתר על כן, זה לא נותן מידע סוג הנתונים, אני אמור להיות מסוגל לנתח את התאריכים, מספרים booleans לסוגים מולדתם JavaScript, אבל אני לא יכול אלא אם כן היזם אומר לי, וזה חבל, כי המידע הוא כנראה שם בכל מקרה. אני יכול לבקש DESC, אבל עושה שתי בקשות יהיה לשכפל את זמן ההשהיה, חבל, באמת.

    תגובה על ידי סאטיאם - 22 יוני 2009 #

  5. ג'ון,

    האם תוכנית Yui לתמוך מקומי פונקציות / פונקציות שנוצרו באמצעות הסגרים כמו callbacks jsonp בעתיד?

    הדרך היחידה שאני רואה jsonp נתמך באמצעות פונקציות העולמי.

    Vipul

    תגובה על ידי Vipul - 24 יוני 2009 #

  6. אולי אין צורך להזכיר, אבל JSON Yui של util חייהם תחת YAHOO.lang, לא YAHOO.util.

    Common טעות. עשיתי את זה בעצמי כמה פעמים.

    תגובה על ידי לוק - 24 יוני 2009 #

  7. היי לוק, אתה ממש צודק - זה נראה כאילו אני להעתיק ולהדביק / מהר מדי בעת כתיבת החלק הזה של הפוסט. אני אומת כי בדק את הקוד בתוך github היא הפניה נכונה תחת lang כך יישומון לא יהיה צורך לעדכן צריך להיות שמיש.

    תודה על הצבעה זה.

    - ג'ון

    תגובה על ידי יונתן לבלנק - 1 יולי 2009 #

  8. Vipul - אם להיות כנה אני לא בטוח, צוות Yui כנראה יהיה טוב יותר לענות על זה יותר ממני

    תגובה על ידי יונתן לבלנק - 2 יולי 2009 #

  9. [...] יהונתן לבלנק על Yui 3: YUIBlog תורם יונתן לבלנק, מטיף טכני על צוות רשת המפתחים של יאהו, היה בדרום קרוליינה [...]

    Pingback על ידי בטבע במשך 17 יולי 2009 »ממשק המשתמש Yahoo! בלוג - 17 יולי 2009 #

  10. [...] במשך יותר הסבר מעמיק של מה שנבנה עם הכלי הזה תסתכל על ההודעה שלי בבלוג Yui ב http://www.yuiblog.com/blog/2009/06/17/yui- ו-yql / [...]

    Pingback על ידי צימוד Yui ו YQL לבנות JavaScript יישומונים | The Naked טכנולוג - 17 יולי 2009 #

  11. היי ג'ון,

    עשיתי חיפוש אך לא הצליחו לאתר כלשהו למשל פיתון מבוסס lib / קוד / גישה לנתונים פרטיים. האם אתה יודע אם "דבר" כזה קיים?

    תודה.

    תגובה על ידי אנטוניו - 10 ספטמבר 2009 #

  12. אנטוניו,

    יש יאהו פתח אסטרטגיה פייתון SDK זמין שאמור לעזור לך גישה פרטית למשתמש Yahoo! נתוני הפרופיל. SDK זה נמצא http://github.com/yahoo/yos-social-python/tree

    - ג'ון

    תגובה על ידי יונתן לבלנק - 14 ספטמבר 2009 #

  13. שלום,
    אני נבדק "נתונים גישה אישי" ויש לי שאלה. כאשר ליצור שאילתה יש reterned כל הנתונים בסדר, אבל מה שאנחנו עושים אם הנתונים לא לחזור או "שרת אישי" לא עובד כרגע. ואם יש לנו כמה "לדחוף" ואחד תפקיד "לגמול" כדי להפוך את הגישה לכמה שרתים difrent, אם לדחוף באמצע לא לחזור הנתונים, כל "לדחוף" הבא הוא להפסיק לעבוד! איך למנוע את זה. תודה!

    תגובה על ידי Jovchev - 8 אוקטובר 2009 #

  14. [...] YQLDataSource עבור Yui 2: "בזכות הכתבה של יהונתן לבלנק בבלוג Yui חשבתי שזה יהיה מגניב להיות YQLDataSource כדי שיהיה קל יותר להשתמש בנתונים YQL ב Yui 2 [...]

    Pingback על ידי בטבע במשך 11 מרס 2010 »ממשק המשתמש Yahoo! בלוג (YUIBlog) - 12 מרס 2010 #

מצטערים, טופס התגובה סגורה בשלב זה.

מאוכסן על ידי יאהו!

כל הזכויות שמורות © 2006-2011 Yahoo! Inc כל הזכויות שמורות. פרטיות - תנאי השירות

Powered by WordPress על יאהו אירוח אתרים .