Prototype спрощення роботи з ajax

Чому варто використовувати Prototype?

Зрештою, Prototype також виконує функції XMLHttpRequest. маючи свій Ajax.Request і пов'язані з ним об'єкти. Вам вже не потрібно писати код для використання цього об'єкта в різних браузерах.

Директорія, яка містить HTML-файл програми, містить також директорію з ім'ям js. Ця директорія містить prototype.js. код об'єкта цієї статті в файлі co2.js. а так само і решті код додатка в файлі eevapp.js.

зміна клімату

Як Prototype може нам допомогти в роботі з нашими додатками? Які вимоги ці додатки мають?

CO2 аплет

На зображенні 1-1 показаний екран браузера для додатка. У верхньому лівому кутку програми - аплет, який показує рівень вмісту CO2 в атмосфері в обраний користувачем рік.


Малюнок 1-1. Елемент select показує рівень CO2

Ці дані були отримані з обсерваторії Мауна-Лоа в результаті досліджень, призначених до проведення урядом США на Гаваях. Вимірювання проведені на великій висоті в заповідниках. Вчені всього світу використовують цю інформацію в своїх дослідженнях кліматичних змін.

Коли Prototype починає працювати

У eevapp.js файлі міститься код, який виконується, коли користувач вибирає рік зі списку.

Значення "co2_select" - це id списку вибору, за яким клікає користувач, вибираючи рік.

повертає посилання на DOM-елемент. Це еквівалетнно виконання document.getElementById ( "co2_select"); .

Простими словами, коли користувач вибирає рік в річному меню, браузер виконує цю функцію. Що виконує дана функція? Функція отримує посилання на HTML div елемент з id "co2ppm", знову ж таки, використовуючи скорочення Prototype'а. Властивість innerHTML об'єкта div. показує, що бачить користувач в браузері, - немає значення, що повертається в результаті виклику методу

Об'єкт під назвою co2lev описаний у верхній частині файлу eevapp.js.

лаконічний синтаксис

Цей символ долара знову з'являється в синтаксисі: $ F ( "co2_select"). Функція Prototype $ F () видає значення елемента в форматі HTML. Додаток використовує цю функцію для зміни показуваного рівня CO2 кожен раз, коли користувач вибирає інший рік.

Є одна порада щодо $ F (): для списку вибору значення видається тільки якщо елемент option містить атрибут value: . У всякому разі, версія Prototype'а, яку я використовував (1.4.0) не видавала значення з $ F (). якщо я пропускав частина value = ".".

огляд об'єкта

Визначення об'єкта CO2Levels з'являється в файлі co2.js. На зображенні 1-2 представлена ​​UML-діаграма класу, що описує об'єкт.

Prototype спрощення роботи з ajax

Малюнок 1-2. діаграма класу

Ось повний код для об'єктів CO2Levels. Перший рядок створює новий об'єкт, використовуючи базовий синтаксис Prototype, локальна змінна levels - це об'єкт, схожий на асоціативний масив, який з'єднує року з рівнями змісту CO2. Я не написав велику частину років для того, щоб зробити це все Новомосковскбельним.

Створення об'єктів Prototype

Prototype-об'єкт Hash

Наприклад, метод Hash.keys () повертає масив всіх Hash -Ключі (таких як все року). Метод values ​​() повертає масив значень (рівні вмісту СО2). Метод merge () додає нові ключі і значення в Hash.

Наш об'єкт CO2Levels використовує принцип делегування, за яким він звертається до своїх же методам keys (). values ​​(). і add (). Ці методи делегують роботу у вбудований об'єкт Hash. який зберігається як локальна змінна: levelsHash.

Давайте подивимося на getYear ().

Додавання в існуючий хеш

Об'єкт CO2Levels включає метод add (). який може додавати нові ключі і значення (додаткові року і рівні вмісту СО2) до існуючої інформації.

Код потім передає цей об'єкт для обробки методом merge () Prototype-об'єкта Hash. Цей метод об'єднує новий об'єкт з існуючою інформацією в хеше, поєднуючи їх повністю в одну групу даних або асоціативний масив.

Метод merge () повертає існуючі дані з новою парою властивість-значення, додаючи її до кінця.

З невеликим рефакторингом код може використовувати XMLHttpRequest для здійснення вибірки будь-якої нової інформації про рівні вмісту СО2 від Mauna Loa Observatory, потім додати її до існуючих даних на стороні клієнта.

Зрештою, в об'єкті Prototype Hash є також метод inspect (). Завдяки йому з'являється Новомосковскбельное відображення змісту хеша, як на зображенні 1-3.

Prototype спрощення роботи з ajax

Малюнок 1-3. Хеш. Як він виглядає.

Об'єкт CO2Levels делегує завдання inspect () методу внутрішньому об'єкту Prototype Hash.