Recently I have included require.js to my project. I thought it will help me manage my scripts and speed up page loading, adding only this files which are necessary. But result was quite oposite.
My question is, why after added AMD framework all scripts are loading at the end? (see photo) When I was including script via script tag js was loading properly, after DOM (without images etc.) was loaded. When I've added require.js, all scripts were loading after everything on page was loaded (with images), which results in pretty big delay.
I'm concerned, what is the difference between require.js and normal scripts including and then concatenating them into one single file?
My code below, for reference:
require.js scripts structure:
|- main.r.js
|- lib/
|- config.js
|- require.js
|- sliders.js
main.r.js:
require(['./lib/config'], function() {
require([
'jquery',
'modernizr',
'./lib/sliders'
], function($, modernizr, sliders) {
sliders.init();
});
});
config.js:
require.config({
baseUrl: 'scripts/',
paths: {
jquery: '../assets/jquery/jquery.min',
modernizr: '../assets/modernizr/modernizr',
bxslider: '../assets/bxslider-4/jquery.bxslider.min'
},
shim: {
bxslider: {
deps: ['jquery'],
exports: 'jQuery.fn.bxSlider'
}
}
});
sliders.js:
define(['jquery', 'bxslider'], function($) {
var maxiSlider = function() {
var $mSlider = $('.maxi-slider');
// init slider
var slider = $mSlider.bxSlider({
// auto: true,
pager: false,
onSliderLoad: function(currentIndex) {
$mSlider.find('li').eq(currentIndex).addClass('banner-animation');
},
onSlideAfter: function($slideElement, oldIndex, newIndex) {
$('.banner-animation').removeClass('banner-animation');
$mSlider.find('li').eq(newIndex + 1).addClass('banner-animation');
}
});
}
return {
init: function() {
maxiSlider();
}
}
});