Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ускорение загрузки скриптов, как прописать? (https://javascript.ru/forum/misc/67947-uskorenie-zagruzki-skriptov-kak-propisat.html)

Black_Star 16.03.2017 17:46

Ускорение загрузки скриптов, как прописать?
 
Вложений: 1
Добрый день, уважаемые. Я тут начитался умных статеек по ускорению загрузок скриптов http://frontender.info/script-loading/
решил тоже испробовать (поскольку PageSpeed рекомендует к использованию). Но почему-то пока что не работает. Подскажите, пожалуйста почему мои скрипты не подгружаются. где я допускаю ошибку?


<!-- Load Scripts -->
<script>var scr = {
    "scripts": [
        {"src": "lib/modernizr/modernizr.js", "async": false},
        {"src": "lib/jquery/jquery-3.1.1.min.js", "async": false},
        {"src": "lib/owl-carousel/owl.carousel.min.js", "async": false},
        {"src": "js/script_agency.js", "async": false}
    ]
};
!function (t, n, r) {
    "use strict";
    var c = function (t) {
        if ("[object Array]" !== Object.prototype.toString.call(t))return !1;
        for (var r = 0; r < t.length; r++) {
            var c = n.createElement("script"), e = t[r];
            c.src = e.src, c.async = e.async, n.body.appendChild(c)
        }
        return !0
    };
    t.addEventListener ? t.addEventListener("load", function () {
            c(r.scripts);
        }, !1) : t.attachEvent ? t.attachEvent("onload", function () {
                c(r.scripts)
            }) : t.onload = function () {
                c(r.scripts)
            }
}(window, document, scr);
</script>

рони 16.03.2017 18:25

Black_Star,
на картинке ничего не видно, почему вы решили что не работает?

ruslan_mart 16.03.2017 18:59

Не понял в чём суть Вашего скрипта, если честно.

![
	{src: "lib/modernizr/modernizr.js", async: true},
	{src: "lib/jquery/jquery-3.1.1.min.js"},
	{src: "lib/owl-carousel/owl.carousel.min.js"},
	"js/script_agency.js"
]
.forEach(function(p) {
	if(typeof p === 'string') p = {src: p};
	var s = document.createElement('script');
	s.async = !!p.async;
	s.src = p.src;
	document.head.appendChild(s);
});

Black_Star 16.03.2017 20:35

Цитата:

Сообщение от рони (Сообщение 447591)
на картинке ничего не видно, почему вы решили что не работает?

рони при запуске страницы, ни одна js не подключается, согласно "моего" данного примера.

Цитата:

Сообщение от Ruslan_xDD (Сообщение 447592)
Не понял в чём суть Вашего скрипта, если честно.

![
	{src: "lib/modernizr/modernizr.js", async: true},
	{src: "lib/jquery/jquery-3.1.1.min.js"},
	{src: "lib/owl-carousel/owl.carousel.min.js"},
	"js/script_agency.js"
]
.forEach(function(p) {
	if(typeof p === 'string') p = {src: p};
	var s = document.createElement('script');
	s.async = !!p.async;
	s.src = p.src;
	document.head.appendChild(s);
});

Ruslan_xDD ваш пример запустил страницу, но я пока не могу понять почему именно так правильно подключать. Можете описать что именно вы написали? К примеру почему именно modernizr.js подгружаем асинхронно? почему скажем не jQuery ? Да, и как этот код будет действовать в старых браузерах ( допустим IE<=9) ну или тех где асинхронность не поддерживается?

Vlasenko Fedor 17.03.2017 16:36

http://requirejs.org/
Собственная поделка :lol:
https://jsfiddle.net/vlasenkofedor/5pDXf/


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