Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Библиотека Envo (https://javascript.ru/forum/project/69933-biblioteka-envo.html)

grifix 28.07.2017 20:28

Библиотека Envo
 
Понимаю что во времена Angular, React и прочих фреймоврков может быть не очень актуально, но все же решил опубликовать свою простенькую библиотеку для огранизации плагинов старого доброго jQuery. Библиотка решает следующие задачи:
  • Организация кода плагина в виде псевдо-класса
  • Наследование плагинов
  • Передача параметров в плагин
  • Подключение плагинов к странице
  • Ajax-перзагрузка плагинов
  • Подписка на события
Если кому интересно, прошу сюда: https://bitbucket.org/grifix/envo
Примеры использования тут: https://bitbucket.org/grifix/envo/sr...les/?at=master

grifix 28.07.2017 20:39

Видимо немного ошибся разделом, просьба перенести в "Ваши сайты и скрипты" :)

рони 28.07.2017 20:48

grifix,
интересно ... но много букв пропущено ... для примера
здесь
Цитата:

Сообщение от grifix
Ajax-перЕзагрузка плагинов

там
ПредполОжим нам нужно изменить
Создадим простой плагин, который показываЕт сообщение
Такие классы позволяют не привязыВать
Указать парАметры при подключении
Задать парамЕтры после подключения

grifix 29.07.2017 10:06

Спасибо, забыл включить проверку орфографии Ж). Поправлено.

Так выглядит код простого палагина:
(function ($) {
        var parent = envo.Plugin; // Плагин от которого наследуется данный плагин
        var prototype = envo.makePluginPrototype(
            'demo.PluginA', // Название псевдо-класса плагина (используется при наследовнии)
            'demo_pluginA', // Имя плагина (используется для подключиня плагина к DOM-элементам)
            parent,
            {
                message: 'Hello world!' //Конфигурация плагина по умолчанию
            }
        );
        
        // Функция которая подключается к плагину в момент наложения его на DOM елемент
        prototype.init = function () {
            var that = this;
            
            that.elButton = that.find('button');
            that.elButton.click(function () {
                that.showMessage();
            });
            
            parent.prototype.init.call(that);
        };
        
        // Метод псевдо-класса плагина
        prototype.showMessage = function () {
            var that = this;
            alert(that.cfg.message);
            return that.el();
        };
    })(jQuery);


А так код плагина который его наследует:
(function ($) {
        var parent = demo.PluginA;
        var prototype = envo.makePluginPrototype(
            'demo.PluginB',
            'demo_pluginB',
            parent
        );
        
        prototype.showMessage = function () {
            var that = this;
            parent.prototype.showMessage.call(that);
            confirm("Are you sure!");
            return that.el();
        };
    })(jQuery);

grifix 29.07.2017 15:33

Цитата:

с основами jQuery есть проблемы:
Не вижу приципиальной разницы между:
(function($) {$(function){}})(jQuery);
и
jQuery(function($) {});

Хотя второй вариант все же лучше, так как короче :).
Библотека старая, ей уже больше 5 лет, код начальной закгрузки кочует с первой версии, поэтому может быть не оптимальным :)


Цитата:

Почитайте что такое плагины jQuery: basic plugin pattern jQuery.fn()
Цитата:

A jQuery plugin is simply a new method that we use to extend jQuery's prototype object. By extending the prototype object you enable all jQuery objects to inherit any methods that you add.
Если вы загляните в исходный код envo то увидите что evnvo.makePluginPrototype именно это и делает: регистрирует jQuery.fn ;)

Цитата:

jQuery.widget()
В API jQuery нету функции widget ;)

grifix 29.07.2017 21:20

Гм, похоже вы правы Rise и я придумал велосипед, который во многом дублирует jqueryUi.widget :)


Часовой пояс GMT +3, время: 01:48.