Создайте глобально доступный модуль с помощью Webpack - PullRequest
0 голосов
/ 21 октября 2019

У меня есть следующий модуль утилит, который я хочу сделать глобальным из myApp.utils в Webpack.

var utils = (function(){
return {
    isIOSDevice: function(){
        return !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);
    },

    isMobileDevice: function(){
        return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)
    },

    scrollToBottomOfPage: function(){
        var e = (document.scrollingElement || document.body);
        e.scrollTop = e.scrollHeight;
    },

    isSamsungBrowser: function(){
        return !!navigator.userAgent.match(/SamsungBrowser/i)
    },

    debounce: function(func, wait, immediate){
        var timeout;
        return function() {
            var context = this, args = arguments;
            var later = function() {
                timeout = null;
                if (!immediate) func.apply(context, args);
            };
            var callNow = immediate && !timeout;
            clearTimeout(timeout);
            timeout = setTimeout(later, wait);
            if (callNow) func.apply(context, args);
        };
    }
};
})();

export {utils}

Затем в моем файле, который Webpack компилирует, чтобы требовать и импортировать модули (я новичок в Webpack иЯ не знаю имени этого файла) У меня есть следующий код:

import {utils} from "utilities";

var myApp = {};
(function(){
    this.utils = utils;
}).apply(myApp);


global.myApp = myApp;

Это работает и позволяет мне выполнять любую из моих служебных функций из консоли браузера с помощью следующего кода:

myApp.utils.isSamsungBrowser(); 

Однако я не уверен, что способ, которым я сделал объект myApp глобально доступным, является правильным, поскольку я создаю несколько областей действия myApp (global.myApp & var myApp).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...