@DVirt

Какую посоветуете js lib loader?

Здравствуйте.

Приложение построено полностью на ajax с использованием location.history
При необходимости требуется подгружать js скрипты, при этом если js скрипт уже загружен, его не требуется повторно загружать.

Уточните, пожалуйста, куда копать на данную тему?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Посмотрите SystemJS (щас нет смысла брать require.js) либо webpack.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@dixoNich
frontend developer
Написать самому. 10 строчек кода ведь.
Ответ написан
Stalker_RED
@Stalker_RED
cache = {}
function loadJS(src, callback) {
    if (cache[src]) {
        callback()
    } else {
        cache[src] = true;
        var s = document.createElement('script');
        s.src = src;
        s.async = true;
        s.onreadystatechange = s.onload = function() {
            var state = s.readyState;
            if (!callback.done && (!state || /loaded|complete/.test(state))) {
                callback.done = true;
                callback();
            }
        };
        document.getElementsByTagName('head')[0].appendChild(s);
    }
}


Пример использования, в котором последовательно подгружаются два скрипта.
if ($('.chart-flot').exists()) {
            loadJS('/js/plugins/flot/jquery.flot.min.js', function() {
                loadJS('/js/plugins/flot/jquery.flot.pie.min.js', function(){
                    if($('#disk_space_chart').exists()) {
                        $.plot("#disk_space_chart", diskSpaceData, {
                            series: {
                                pie: {
                                    show: true,
                                    radius: 1,
                                    innerRadius: 0.5,
                                    label: {
                                        show: true,
                                        radius: 2 / 3,
                                        formatter: function (label, series) {
                                            return '<div style="font-size:13px; text-align:center; padding:2px; color: #fff; font-weight: 600;">'
                                                + label + "<br>" + Math.round(series.percent) + "%</div>";
                                        },
                                        threshold: 0.1
                                    }
                                }
                            },
                            legend: {
                                show: false
                            }
                        });
                    }
                })
        });
    }

Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы