Jump to content

Прототип JavaScript-фреймворка

(Перенаправлено с Script.aculo.us )
Прототип
Оригинальный автор(ы) Сэм Стивенсон
Разработчик(и) Прототип основной команды
Первоначальный выпуск февраль 2005 г .; 19 лет назад ( 2005-02 )
Стабильная версия
1.7.3 / 22 сентября 2015 г .; 8 лет назад ( 22 сентября 2015 )
Репозиторий
Написано в JavaScript
Тип библиотека JavaScript
Лицензия МОЯ лицензия
Веб-сайт прототип .org  Edit this on Wikidata

Prototype JavaScript Framework — это JavaScript- фреймворк, созданный Сэмом Стивенсоном в феврале 2005 года как часть поддержки Ajax в Ruby on Rails . Он реализован в виде одного файла кода JavaScript, обычно называемого prototype.js. Prototype распространяется как самостоятельно, так и в составе более крупных проектов, таких как Ruby on Rails, script.aculo.us и Rico. По состоянию на март 2021 г. По данным w3techs, Prototype используют 0,6% всех сайтов. [ 1 ]

Prototype предоставляет различные функции для разработки приложений JavaScript. Возможности варьируются от ярлыков программирования до основных функций для работы с XMLHttpRequest .

Prototype также предоставляет библиотечные функции для поддержки классов и объектов на основе классов. [ 2 ] Вместо этого в JavaScript создание объектов основано на прототипах : функция создания объекта может иметь prototype свойство, и любой объект, назначенный этому свойству, будет использоваться в качестве прототипа для объектов, созданных с помощью этой функции. Платформу Prototype не следует путать с этой функцией языка.

Примеры служебных функций

[ редактировать ]

Функция $()

[ редактировать ]

Долларовую функцию $() можно использовать как сокращение для функции getElementById . Чтобы обратиться к элементу в объектной модели документа (DOM) HTML- страницы, используется обычная функция, идентифицирующая элемент:

document.getElementById("id_of_element").style.color = "#ffffff";

Функция $() сокращает код до:

$("id_of_element").setStyle({color: '#ffffff'});

Функция $() также может получать элемент в качестве параметра и возвращать, как и в предыдущем примере, расширенный объект-прототип.

var domElement = document.getElementById("id_of_element");  // Usual object reference returned
var prototypeEnhancedDomElement = $(domElement);            // Prototype extended object reference
Примечание . Как и подчеркивание ( _), $ Символ является допустимым «словосимволом» в идентификаторах JavaScript и не имеет другого значения в языке. Он был добавлен в язык одновременно с поддержкой регулярных выражений , чтобы можно было эмулировать соответствующие Perl -подобные переменные, например: $` и $'.

Функция $F()

[ редактировать ]

Опираясь на $() функция: $F() функция возвращает значение запрошенного элемента формы. Для ввода «текста» функция вернет данные, содержащиеся в элементе. Для элемента ввода «выбрать» функция вернет текущее выбранное значение.

$F("id_of_input_element")

Функция $$()

[ редактировать ]

Функция доллар-доллар Prototype CSS — это механизм селектора . Он возвращает все соответствующие элементы, следуя тем же правилам, что и селектор в таблице стилей CSS. Например, если вы хотите получить все <a> элементы с классом «пульсировать», вы должны использовать следующее:

$$("a.pulsate")

Это возвращает коллекцию элементов. Если вы используете расширение script.aculo.us базовой библиотеки прототипов, вы можете применить эффект «пульсации» (мигания) следующим образом:

$$("a.pulsate").each(Effect.Pulsate);

Объект Аякса

[ редактировать ]

Стремясь уменьшить количество кода, необходимого для запуска кроссбраузерной XMLHttpRequest функция, Prototype предоставляет Ajax объект для абстрагирования различных браузеров. Имеет два основных метода: Ajax.Request() и Ajax.Updater(). Существуют две формы Ajax объект. Ajax.Request возвращает необработанный вывод XML из вызова AJAX, а Ajax.Updater внедрит возврат внутри указанного объекта DOM. Ajax.Request ниже находит текущие значения двух элементов ввода HTML-формы, отправляет HTTP-запрос POST на сервер с этими парами имя/значение элемента и запускает пользовательскую функцию (называемую showResponse ниже), когда HTTP-ответ получен от сервера:

new Ajax.Request("http://localhost/server_script", {
    parameters: {
        value1: $F("form_element_id_1"),
        value2: $F("form_element_id_2")
    },
    onSuccess: showResponse,
    onFailure: showError
});

Объектно-ориентированное программирование

[ редактировать ]

Prototype также добавляет поддержку более традиционного объектно-ориентированного программирования. Class.create() метод используется для создания нового класса. Затем классу присваивается prototype который действует как образец для экземпляров класса.

var FirstClass = Class.create( {
    // The initialize method serves as a constructor
    initialize: function () {
        this.data = "Hello World";
    }
});

Расширение другого класса:

Ajax.Request = Class.create( Ajax.Base, {
    // Override the initialize method
    initialize: function(url, options) {
        this.transport = Ajax.getTransport();
        this.setOptions(options);
        this.request(url);
    },
    // ...more methods add ...
});

Рамочная функция Object.extend(dest, src) принимает два объекта в качестве параметров и копирует свойства второго объекта в первый, имитируя наследование. Объединенный объект также возвращается в результате функции. Как и в примере выше, первый параметр обычно создает базовый объект, а второй — анонимный объект, используемый исключительно для определения дополнительных свойств. Все объявление подкласса находится в круглых скобках вызова функции.

Проблемы

[ редактировать ]

В отличие от других библиотек JavaScript, таких как jQuery , Prototype расширяет DOM. Планируется изменить это в следующей основной версии библиотеки. [ 3 ]

В апреле 2010 года блоггер Юрий «kangax» Зайцев (из Prototype Core) подробно описал проблемы, которые могут возникнуть в результате внедрения обезьянами новых методов и свойств в объекты, определенные W3C DOM. [ 3 ] Эти идеи перекликаются с мыслями, опубликованными в марте 2010 года Yahoo! разработчик Николас С. Закас [ 4 ] Они были резюмированы следующим образом [ 5 ]

  • Проблемы с кроссбраузерностью: хост-объекты не подпадают под действие правил, несовместимое поведение IE DOM и т. д.
  • Вероятность коллизий имен
  • Накладные расходы на производительность

К 2008 году уже документировались конкретные проблемы с использованием методов расширения DOM в старых версиях Prototype в сочетании с новыми версиями текущих браузеров. [ 6 ] Вместо добавления новых методов и свойств к уже существующим «хостовым» объектам DOM, таким как Element, нравиться element.hide(), решение этих проблем состоит в том, чтобы предоставить объекты-оболочки вокруг этих хост-объектов и реализовать на них новые методы. jQuery является таким объектом-оберткой в ​​библиотеке с таким именем. [ 3 ]

См. также

[ редактировать ]
  1. ^ «Статистика использования и рыночная доля библиотек JavaScript для веб-сайтов, март 2021 г.» . w3techs.com . Проверено 27 марта 2021 г.
  2. ^ «Прототип JavaScript Framework | Определение классов и наследования» . prototypejs.org . Проверено 5 июня 2020 г.
  3. ^ Перейти обратно: а б с Кангакс (5 апреля 2010 г.). «Что плохого в расширении DOM» . Проверено 6 апреля 2010 г.
  4. ^ Закас, Николас К. (2 марта 2010 г.). «Поддерживаемый JavaScript: не изменяйте объекты, которыми вы не владеете» . Проверено 6 апреля 2010 г.
  5. ^ Альмаер, Дион (6 апреля 2010 г.). «Прототип 2.0 не будет расширять DOM» . Проверено 6 апреля 2010 г.
  6. ^ Резиг, Джон (26 марта 2008 г.). «getElementsByClassName до прототипа 1.6» . Проверено 6 апреля 2010 г.

Библиография

[ редактировать ]
[ редактировать ]


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: bb92a161b8882c3128d081efbb905394__1694375340
URL1:https://arc.ask3.ru/arc/aa/bb/94/bb92a161b8882c3128d081efbb905394.html
Заголовок, (Title) документа по адресу, URL1:
Prototype JavaScript Framework - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)