Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Реализация плагина (https://javascript.ru/forum/misc/76196-realizaciya-plagina.html)

Nlk 12.12.2018 20:20

Реализация плагина
 
Добрый день.
Помогите с реализацией Popup плагина.

<!-- Инициализация настроек плагина в html файле -->
settings ({
  button: ".classOne",
  content: ".classTwo"
});


// js файл скрипта
let settings = (function() {
    return function(settings) {
      //получение настроек плагина
    }
})();


Вопрос:
Весь остальной код плагина куда добавить?

вар1
let settings = (function() {

   // если здесь добавлю код плагина то settings не доступен будет
   document.addEventListener("click", function (event) {
      ~
     //settings.button  undefined
   });

    return function(settings) {
      //получение настроек плагина
    }
})();


вар2
let settings = (function() {

    return {
       settings: function(settings) {
         //получение настроек плагина
       }
    },

    othercode: function () {
       // можно добавить сюда он будет видеть settings но тут будет много кода тогда и он будет доступен глобально
       document.addEventListener("click", function (event) {
         ~
       });
    }
})();

Nexus 12.12.2018 21:01

Можно сделать так
const settings = function(settings) {
    //Other private information/methods
    const makeDialog = function() {};

    return { //Public api
        openPopup: function {
            return makeDialog().open(), this;
        },
        closePopup: function {}
    };
};

Nlk 14.12.2018 01:07

Nexus,
Спасибо, последую вашим рекомендациям, попробую организовать код таким образом.
А this здесь для чего предполагается?
return makeDialog().open(), this;

рони 14.12.2018 05:55

Цитата:

Сообщение от Nlk
А this здесь для чего предполагается?

для создания цепочки, как в jquery

Nlk 15.12.2018 00:31

Сделал немного иначе, скажите для плагина popup это нормальная структура?

// HTML
popup ({
    buttons: ".popup_button",
    content: ".popup_content"
});


// JS
const popup = (function () {
    'use strict';

    document.addEventListener("click", function (event) {
        // основной код popup'а
    });

})();

Nlk 16.12.2018 01:06

Подскажите пожалуйста.

рони 16.12.2018 07:25

Nlk,
http://javascript.ru/forum/project/3...histom-js.html
https://github.com/arshtepe/multiPopupJS

рони 16.12.2018 07:30

Nlk,
https://scotch.io/tutorials/building...t-modal-plugin
https://vanillalist.top/plugins/search?s=modal

Nlk 16.12.2018 21:17

рони,
Спасибо


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