MooTools — компактний JavaScript-фреймворк. Короткий вступ

Червень 28, 2008 Автор: admin

В цій статті я коротко постараюсь розповісти про MooTools, опанувавши який, можна значно прискорити процес написання скриптів і, як наслідок, скоротити час реалізації Web-проектів. Для подальшого, більш глибокого, вивчення цього фреймворку внизу статті ви зможете знайти невеличку збірку Web-ресурсів по темі.

Я почав вивчення MooTools з метою створення сучасних та якісних анімаційні ефектів на сторінках своїх сайтів. Моє знайомство з MooTools сталося зовсім недавно, тому мене можна сміло вважати початківцем. І, як наслідок, не варто наразі чекати від мене фахових відповідей на складні питаннях, які вас турбують.

Слід зауважити, що в даній статті свідомо не піднімається питання, який JavaScript-фрейморк - кращий для роботи. Я, по-перше, не маю достатніх знань, щоб про це розповідати, а, по-друге, зовсім не маю на меті нав’язувати вам той, чи інший, продукт. MooTools не є і не може бути панацеєю від усіх ваших бід, оскільки для кожного окремого проекту оптимальними можуть бути різні інструменти (той же Prototype, jQuery, тощо).

Фреймворк (від англ. framework) проста концептуальна структура, яку використовують для вирішення складних, проблемних задач. Іншими словами — це набір інструментів, бібліотек і домовленостей призначений для винесення рутинних одноманітних завдань в окремі модулі, які можна використовувати повторно. Головна мета використання фреймворку - дозволити програмістові зосередитися на завданнях унікальних для поточного проекту, замість того, щоб постійно «винаходити колесо».

Що таке MooTools?

MooTools — це компактний, модульний, об’єктно-орієнтований JavaScript-фреймворк, який дозволяє додати на Web-сторінку ефекти і анімацію. MooTools, як і всі сучасні JavaScript-бібліотеки, має засоби для того, щоб виконувати пошук елемента на сторінці, вказавши його характеристики: id, клас css, ім’я тегу чи їх комбінацію.

Задача будь-якого JavaScript-framework’а:

  • Забезпечити кросбраузерність створених програм (скриптів);
  • Надати набір класів і функцій для реалізації програм (функції для роботи з об’єктами і подіями; функції для реалізації Ajax, функцій для JavaScript-анімації).

Логотип MooToolsГоловна перевага використання готових бібліотек в тому, що вони вже протестовані під різними браузерами і ви не витрачаєте час на тестування, а зосереджуєтеся на виконанні поставленої перед вами задачі.

Під кросбраузерністю (від англ. «cross-browser») MooTools слід розуміти однакову роботу коду і відсутність будь-яких помилок в Safari 2+, Internet Explorer 6+, Firefox 2+, Opera 9+.

Давайте для початку підключимо MooTools:

<script type="text/javascript" src="mootools.js"></script>

Слід зазначити, що демонстраційні матеріали на офіційному сайті проекту дозволяють навіть недосвідченим програмістам відносно легко «прикрутити» певний ефект з фреймворку на власний сайт. Для цього потрібно лише виконувати вказівки розробників, щоправда, англійською мовою.

Переглянути анімаційні ефекти фреймворку одразу в браузері можна на офіційному сайті, а точніше на сторінці — http://demos.mootools.net/.

Офіційний сайт MooToolsСеред основних переваг MooTools над аналогами спеціалісти виділяють малий об’єм коду. Логіка тут така: чим більший функціонал заложений в менший об’єм, тим краще.

На момент написання статті вже існує версія 1.2, яка займає: 90 Кб (нестиснута версія - Uncompressed), 70 Кб (JSMin), 60 Кб (YUI Compressor).

Великим плюсом framework’а MooTools є його модульність, яка дає змогу розробнику вибирати лише ті модулі, які йому необхідні для поточної роботи і тим самим мінімізувати розмір коду.

На сторінці http://mootools.net/more ви при необхідності можете вибрати, які компоненти слід включити в JavaScript-файл.

MooTools випускається під відкритою вихідною ліцензією MIT (Open Source MIT license), яка дає вам можливість використовувати цей фреймворк і змінювати код не порушуючи авторське право.

Тепер давайте трошки розглянемо можливості MooTools.

Отримання посилання на елементи DOM

Для того, щоб працювати з елементами на сторінці, потрібно отримати на них посилання. Для цього в Mootools існують дві основні функції - $() і $$(), за допомогою яких можна отримувати елементи по id, класу, тегу або css селектору.

DOM (Document Object Model - об’єктна модель документа) — стандартний спосіб представлення Web-сторінок за допомогою набору об’єктів, що визначає набір інтерфейсів, незалежних від платформи і мови, який дозволяє програмам і сценаріям динамічно змінювати структуру, вміст і стиль документів.

Функція $() аналогічна document.getElementById().

Наприклад,

// отримання елемента з id = myElement
var myElem = $('myElement');

$$() - посилання на декілька об’єктів одразу. В якості аргументу використовують css селектор чи селектори.

// отримання всіх малюнків (тег <img>)
var myElems = $$(’img’);

Якщо вам потрібно вибрати деякі елементи усередині іншого елементу, то можна скористатись функцією $E() або $ES(), які можуть приймати другий аргумент - фільтр. Різниця між ними лише в тому, що $E() повертає один елемент, а $ES() - всі, відповідні селектору усередині вказаного елементу:

// наступний код повертає перше посилання
// всередині елемента DOM з id = 'myElement'
$E('a', 'myElement');
// отримання всіх посилань всередині елемента DOM з id = 'myElement'
$ES('a', 'myElement');

Створення і додавання елемента в DOM

Нові елементи створюються за допомогою класу Element:

var myImage = new Element ( 'img' , {
'src' : 'picture.jpg', 'alt': 'Моя світлина'
});

Окрім іншого, в другий аргумент можна передавати спеціальні атрибути styles і events, для установки стилів і обробників подій для створюваного елементу.

Тепер, щоб додати створений елемент в документ, можна скористатися одній з наступних функцій:

  • injectBefore(element);
  • injectAfter(element);
  • injectInside(element);
  • injectTop(element).

Приклад.

// створений елемент додамо перед елементом з id = 'search':
myImage.injectBefore($('search'));

Додавання «слухачів»

У Mootools обробники подій («listeners») додаються до елементів за допомогою функції addEvent(). Синтаксис:

element.addEvent (event, function);

Тип події треба вказувати без приставки ‘on’, тобто ‘click’, а не ‘onclick’.

Функціонал MooTools згодиться, що не маловажно, для об’єктно-орієнтованого програмування на JavaScript. Наприклад, створимо клас:

var myClass = new Class({
initialize: function(){
...
}
});

В MooTools є можливість розширяти за допомогою методу extend функціонал JavaScript-класів. Приклад:

String.extend({
alert: function(){
alert(this);
}
});
'Hello, Ukraine!'.alert();

Результат: діалогове вікно зі значенням рядка, тобто «Hello, Ukraine!».

Можливостей в MooTools ще чимало, але, гадаю, для початку цього буде достатньо. Для детальнішого ознайомлення з фреймворком можете скористатись джерелами зазначеними внизу даної публікації. Найкраще, як на мене, для професійного вивчення завітати одразу на офіційну сторінку з документацією по MooTools, що знаходиться за адресою http://docs.mootools.net/.

Джерела

Популярність: 38%

Теґи до статті: , , , , , , , , , , , , , , , .

Сподобалось?

Поділіться цією статтею з друзями:   Share on Twitter! Share on Delicious Share on Digg! Share on Reddit! Subscribe by RSS! Share on StumbleUpon!

Читайте також:

Залишити коментар

Коментарів: 13 до “MooTools — компактний JavaScript-фреймворк. Короткий вступ”

  1. hellveenNo Gravatar каже:

    Думаю, це цікаво :)
    а мені треба вчити javascript…

  2. bohdaqNo Gravatar каже:

    десь рік назад вивчав js, правда не вдалось підкріпити на практиці отримані знання, тому і забув усе )

  3. Ваня НечаевNo Gravatar каже:

    Спасибо за инфу, очень интересно!!!

  4. SergoffNo Gravatar каже:

    Сам когда-то баловался джавой, но потом как-то забросил это дело. Да и готовых решений в интернете - пруд пруди.

  5. excieveNo Gravatar каже:

    А мені подобається jQuery :) Він ще менший, теж дозволяє модульність (хоча основа монолітна) та має велике комьюніті. Що думаєш про нього?
    До речі, чудово оформлена стаття :)

  6. adminNo Gravatar каже:

    Безумовно jQuery варте уваги. Я зустрічав багато схвальних відгуків про цю бібліотеку. Хоча поки не встиг на практиці щось реалізувати за її допомогою. І якщо об’єктивно, то інформації в зручному вигляді по jQuery куди більше за MooTools, особливо, якщо брати до уваги російськомовний/україномовний контент. Якісну і повноцінну інф-цію про цю бібліотеку можна, наприклад, почерпнути на jQuery – Javascript нового поколения. Від себе додам, що не варто зупинятись на одному фреймворку (я не збираюсь), адже, максимально об’єктивна оцінка може бути лише з часом після тривалого використання на практиці. А комбінація декількох бібліотек взагалі багато чого спрощує.

    excieve сказав: «До речі, чудово оформлена стаття».
    Дякую. Є ще бажання поставити якісний модуль для підсвітки коду. Але поки не натрапив на підходящий.

  7. excieveNo Gravatar каже:

    Щодо фреймворків звичайно правильно - на одному зупинятись не можна. Це відноситься і до мов програмування і до багатьох інших речей.

    Щодо плаґіну для підсвітки коду можу порадити wp-codebox, а ще краще його модифіковану версію, що рефакторить код оригінального плаґіна та додає декілька корисних речей. Цей плаґін підтримує дуже багато мов та форматів, дозволяє зручно налаштувати.

  8. adminNo Gravatar каже:

    Дяка за wp-codebox. Матиму час, обов’язково подивлюсь.

  9. OkspenNo Gravatar каже:

    Є питання. Якщо в мене є js-функція, яким чином я можу передати в неї змінну через посилання? Маю на увазі щось таке: onclick=”func(20)” а потім оперувати самим числом? До цього з javascript ніколи не був знайомий.

  10. adminNo Gravatar каже:

    Можна так. В шапці сторінки (між тегами <head> і </head>) прописуєш (описуєш те, що вона має робити) функцію:
    <script type=”text/javascript” language=”javascript”>
    function func(your_num){
       // оперуємо самим числом
       your_num = your_num + 1;
    }
    </script>

  11. OkspenNo Gravatar каже:

    Я мав трохи не те на увазі, але дякую, розібрався. І id треба брати в лапки onclick=”func(’20′)” - про цей момент я зовсім забув.

  12. GrAndSENo Gravatar каже:

    “MooTools - це компактний..” Дуже компактний.. Всього 90 Кб. :) Як на мене це забагато. В мене, наприклад, сам скрипт буде декілька секунд. В більшості випадків, краще використовувати елегантні рішення там де це необхідно. Так загальна вага скриптів буде значно меншою ніж сама бібліотека.
    Чесн окажучи, чи то я такий криворукий, що не вмію з framework’ами працювати, чи то не зустрічав тієї задачі, щоб не міг вирішити с Google та власниою головою швидше та приємніше ніж з framework’ом, однак мої сутички з MooTools (те чим я зараз займаюсь вимагало дечого, що вже реалізовано в MooTools, однак менше ніж до 30 Кб вичистити за день скрипт не вдалось, а потрібно ще було додавати масу іншого функціоналу, тому просто взяв і переписав потрібні мені функції самотужки, та взявши дещо з мережі. Загальна маса коду вийшла в районі 5-6 Кб з потрібним мені функціоналом), JQuery, JsHttpRequest, Aculos, Prototype (починалось все добре, де з якими навіть попрацювати плідно довелось, однак на тому чи іншому етапі переписував що мені було потрібно своїми руками, зібравши невеличко колекцію самописних і частково самописних реалізацій під ряд виконуваних задач)..

  13. adminNo Gravatar каже:

    Я поділяю ваші, GrAndSE, думки і перестороги. Але дозвольте додати від себе декілька фраз.

    Якщо взяти до уваги сучасні швидкості з’єднання з Інтернетом та ті можливості, які уже реалізовані в даному фреймворку, то …

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

    Дуже правильне зауваження, GrAndSE, щодо того, що не варто використовувати MooTools, якщо вам тільки потрібно зробити якусь дрібницю на сайті, наприклад, прикрутити AJAX для сайту, оскільки це робиться в декілька рядків коду.

    Але, що якщо вам на веб-сайті потрібно трохи більше: сучасна інтерактивна фотогалерея, гарні HTML-підказки, Multibox, Drag&Drop, інтерактивний календар, тощо. Скільки вам, наприклад, знадобиться часу, щоб реалізувати галерею хоча б такого рівня, як на сторінці http://habrahabr.ru/blogs/webdev/30039/ (це більше риторичне запитання і не відноситься особисто до GrAndSE). Не одна година, а може і не один день (imho). В такому випадку ви можете робити це самі (і достатньо довго) або використати готове рішення, наприклад, MooTools. І всі ці байти, які він важить, вам стануть в пригоді. Повірте, розробники даного модуля (imho) - професіонали світового рівня і за кожен байт коду готові відчитатися :)

    P.S. Свого часу я використовував ще старий реліз MooTools, видається 1.11, який був значно менший. Але зросли можливості модуля - зросла і вага.

Залишити коментар

XHTML: Ви можете використовувати наступні теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

Spam Protection by WP-SpamFree