Prototype JavaScript Framework

редактировать
Prototype
Автор (ы) Сэм Стивенсон
Разработчик (и) Prototype Core Команда
Первый выпускФевраль 2005 г.; 15 лет назад (2005-02)
Стабильный выпуск 1.7.3 / 22 сентября 2015 г.; 5 лет назад (22.09.2015)
Репозиторий Измените это в Wikidata
Написано наJavaScript
Тип JavaScript библиотека
Лицензия Лицензия MIT
Веб-сайтprototypejs.org

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

Содержание
  • 1 Функции
  • 2 Примеры служебных функций
    • 2.1 Функция $ ()
    • 2.2. Функция $ F ()
    • 2.3 Функция $$ ()
    • 2.4 Объект Ajax
  • 3 Объектно-ориентированное программирование
  • 4 Проблемы
  • 5 См. Также
  • 6 Ссылки
  • 7 Библиография
  • 8 Внешние ссылки
Возможности

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

. Prototype также предоставляет библиотечные функции для поддержки классов и объектов на основе классов. В 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"); // Возвращена обычная ссылка на объект var prototypeEnhancedDomElement = $ (domElement); // Ссылка на расширенный объект прототипа
Примечание : Как и символ подчеркивания (_), символ $является допустимым «символом слова» в идентификаторах JavaScript и не имеет другое значение в языке. Он был добавлен в язык одновременно с поддержкой регулярных выражений, чтобы можно было эмулировать соответствующие Perl -подобные переменные, такие как $ `и $'.

функция $ F ()

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

$ F ("id_of_input_element")

Функция $$ ()

функция доллара - это механизм выбора CSS от Prototype. Он возвращает все совпадающие элементы по тем же правилам, что и селектор в таблице стилей CSS. Например, если вы хотите получить все элементы с классом "pulsate", вы должны использовать следующее:

$$ ("a.pulsate")

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

$$ («a.pulsate»). каждый (Effect.Pulsate);

Объект Ajax

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

новый Ajax.Request ("http: // localhost / server_script", {параметры: {значение1: $ F ("form_element_id_1"), значение2: $ F ("form_element_id_2")}, onSuccess: showResponse, onFailure: showError});
Объектно-ориентированное программирование

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

var FirstClass = Class.create ({// Метод инициализации служит конструктором initialize: function () {this.data = "Hello World";}});

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

Ajax.Request = Class.create (Ajax.Base, {// Переопределить метод инициализации initialize: function (url, options) {this.transport = Ajax.getTransport (); this. setOptions (options); this.request (url);}, //... добавление дополнительных методов...});

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

Проблемы

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

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

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

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

Сейчас широко ожидается, что большинство этих идей и проблем будут решены в версии Prototype 2.0, но Prototype разработчикам придется научиться работать с измененным синтаксисом, и большая часть существующего кода прототипа устареет.

См. также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Библиография
Внешние ссылки
Последняя правка сделана 2021-06-02 08:47:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте