Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ruby on Rails – висхідна зірка комп’ютерних інф...docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
771.77 Кб
Скачать

10. Ajax (Asynchronous JavaScript and xml)

Досить недавно (кілька років тому) вважалось, що браузери не в змозі самостійно обробляти дані. При створенні ужитку, який використовує браузер, тому ж самому браузеру направлялися дані – і це єдиний час коли про нього згадували. Час від часу користувачу потрібно було заповнити поля форми чи клікнути на гіперпосилання, тим самим пробуджуючи програму від сплячки вхідним запитом. У відповідь вона відсилала користувачу готову сторінку, а увесь рутинний процес вертався у своє русло.

Проте, можливості браузера набагато більші, ніж ми собі уявляємо. Він вміє працювати з програмним кодом (майже всі браузери працюють з JavaScript та підтримують flash-технології). Виявляється , також, що JavaScript на браузері може у фоновому режимі взаємодіяти з програмою на сервері, обновляючи, таким чином інформацію, призначену для користувача. Jesse James Garret (вчений-дослідник із Флориди, який керував проектом по розробці AJAX, один з розробників Google Maps) назвав такий метод взаємодії AJAX, що колись означало Asynchronous JavaScript and XML. А зараз – це потужна технологія, що дозволяє зменшити потреби браузера. Цей напрям розвитку веб ужитків яскраво демонструє те, що програми не повинні бути повільними, але навпаки – скорочувати час реакції браузера на певні дії користувача. За допомогою AJAX частково пришвидшується перехід від настільних до веб ужитків1.

Отже, AJAX – це техніка побудови більш інтерактивних, динамічних та цікавих сторінок. Наприклад, мені потрібно відобразити на сторінці певний елемент, який після кожної конкретної дії буде обновлюватися. Проте нелогічно буде якщо для досягнення цього результату я буду обновлювати цілу сторінку замість цього елементу. Саме у такому випадку приходить на допомогу AJAX (прикладом елементів може бути годинник, корзина покупця, частина таблиці, що змінилася у ході роботи та ін.).

AJAX є асинхронним, тобто, бібліотеки JavaScript можуть з’єднуватися з сервером в будь-який момент, а веб сторінка тим часом не завмирає в очікуванні відповіді. Він використовує JavaScript на браузері, будь-яку мову програмування на сервері, та XML для задання повідомлень.

Як же ж саме працює AJAX на Rails?

Зазвичай, використання AJAX потребує достатньо великих навиків як у дизайні, так і у програмуванні. Але коли ми маємо справу з Rails – все зводиться до простого використання цієї технології до такої степені, що використовувати її – те саме, що не використовувати.

Отже, розглянемо особливості реалізації AJAX на Rails. Як тільки браузер сформував і відобразив початкову сторінку, дії користувача заставляють його відображати нову веб сторінку (така суть закладена у будь-яку веб програму). Та за допомогою лише кількох кроків можна позбутися цього:

  • активація тригера: тригер активується в тому випадку, коли користувач нажав кнопку, посилання чи заповнив поля форми;

  • виклик веб клієнтом сервера: метод JavaScript, що називається XMLHttpRequest, відсилає дані, які зв’язані з тригером, обробнику подій на сервері. Даними можуть виступати ID прапорця, текст в полі вводу, або ж і ціла форма;

  • сервер пророблює деякі дії: обробник дії зі сторони сервера (а в нашому випадку це контроллер дії Rails) пророблює певні операції з даними і повертає HTML фрагмент веб клієнту;

  • клієнт отримує відповідь: JavaScript зі сторони клієнта, який Rails створює автоматично, отримує фрагмент HTML і використовує його для обновлення певної наперед визначеної частини поточної сторінки HTML. Найчастіше зміни відбуваються у тегу <div>2.

Окрім цих кроків можна трохи біше потрудитись, і тоді можна заставити сервер повертати будь-який вид даних у відповідь на AJAX запит.

Для реалізації підтримки AJAX браузером Rails використовує бібліотеки JavaScript Prototype та script.aculo.us. Ці бібліотеки можна використовувати по за середовищем Rails. Проте у ньому вони настільки майстерно вбудовані, що, напевне, нікому цього робити і не захочеться.

Розділ ІІ: RoR і Django: хто кого?

"Any sufficiently advanced technology looks like magic" – A. C. Clarke

Насамперед хочу розпочати із знайомства з Django. Django (Джанго) — високорівневий OpenSource Python-фреймворк для розробки веб-застосунків. Названо його було на честь джазмена Джанго Рейнхардта (у відповідності до музичних смаків одного зі засновників проекту).

Aрхітектура Django подібна на «Модель-Вид-Контролер» (MVC). Однак, те що називається «контролером» в класичній моделі MVC, в Django називається «вид» (англ. view), а те, що мало б бути «видом», називається «шаблон» (англ. template). Таким чином, MVC розробники Django називають MTV ("Модель-Шаблон-Вид").

Першочергово Django був створений для управління сайтами новин LJWorld.com, lawrence.com и KUsports.com компанії The World сompany (Лоуренс, Канзас (en), США). Не зважаючи на те, що розроблявся ще 2003 року, вийшов у світ аж 2005. Але з моменту початку розповсюждення його у статусі програмного забезпечення з відкритими вихідними кодами отримав величезну популярність в усьому світі як платформа до багаточисельних застосунків.

Розробники - засновники проекту: Адріан Головатий (англ. Adrian Holovaty), Саймон Віллісон (англ. Simon Willison), Джекоб Каплан-Мосс (англ. Jacob Kaplan-Moss), Вілсон Майнер (англ. Wilson Miner).

Наразі знайомство з Django закінчимо, так як воно неявно продовжуватиметься у процесі порівняння його з платформою RoR.

Порівнюючи дві молоді, але дуже потужні і перспективні технології, однозначного рішення щодо того яка із них краща, звісно, тяжко досягнути. Тим більше, що з Python і Django я не працювала. Однак, не зважаючи на це, я старатимуся зробити такий аналіз на основі певних теоретичних фактів, а також користуватися досвідом видатного науковця Jonathan S. Linowes із Parkerhill Technology Group LLC та його працею Evaluating Web Development Frameworks: Rails and Django.

Насамперед для порівняння потрібно вибрати певні критерії – пункти, за якими буде оцінюватися той чи інший фреймворк.

Критерій

Rails

Django

Технічний

Мова програмування

Ruby

Python

Концепція

Догматична, розумна, «магічний» результат

Вільно з’єднана, явний результат програмування

Структура розміщення файлів

Строга, функціональна

Розкидана, гнучка

База даних/модель

Заповнення таблиці за допомогою міграцій;

Три таблиці бази даних (розробка, тесування, публікація) вбудовані

Заповнення таблиці відбувається вручну;

Немає такої можливості

URL роутинг

routes.rb – централізований, описовий; зворотне відображення завершене

urls.py – розширений, стандартизований; зворотне відображення обмежене

Контроллер/вид

Контроллер/вид

Вид/шаблон

Форма/шаблон

Використовує Ruby

Спеціальна шаблонна мова Django

Адміністрування даних

Використання plug-in

Вбудований інструментарій для адміна

Адміністрування користувача (аутентифікація, сесії)

Реєстрацію повинен писати програміст; підтримання сесії; пересилання повідомлень за допомогою “flash”

Реєстрацію повинен писати програміст; підтримання сесії; пересилання повідомлень за допомогою сесії

AJAX

Вбудований

За бажанням

RSS/Atom/XML

Підтримує

Підтримує

Поширеність (локація)

За допомогою lug-in

Розроблений більш, ніж дюжиною мов

Підтримка

Проект/вихід у світ

  • як відкритий ресурс

  • як реліз версії 1.0

липень 2004

грудень 2005

липень 2005

Вересень 2008

Документація

Багато користувацьких довідників та туторіалів; API посилання – хороші; багато книг, користувацьких блогів, відеоуроків;

Багато користувацьких довідників та туторіалів;

API посилання – хороші; Декілька книг, користувацьких блогів, відеоуроків;

Засоби для тестування

Вбудовані

Не використовує тестові фікстури (проекти)

Підтримка

Широкий хостинг; в Україні - обмежений

Широкий хостинг; в Україні - обмежений

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]