ivansky
@ivansky
Maniac Coder

Как наилучшим способом настроить Require.js?

Доброго времени суток,
уважаемые.

Как наилучшим способом настроить Require.js?

Читал документацию к requirejs .
Различные статьи/ответы по этой библиотеке (пример 1, пример 2, и т.д.).

Все работает нормально когда используешь 1-2 библиотеки (jQuery, Backbone, ...)
Однако, когда я загружаю около 10 - 20 библиотек и скриптов (jQuery плагины и прочие прелести), начинает работать некорректно.
Часто показывает, что не может подгрузить файл (конфиг не срабатывает и файлы пытается тянуть не учитывая path)
Firefox вообще отказывается работать с конфигурацией.

index.html
<!DOCTYPE html>
<html>
	<head>
		<script data-main="js/main" src="/js/require.js"></script>
	</head>
	<body>
 		<!-- so much code -->
 	</body>
 </html>


/js/main.js
requirejs.config({
	baseUrl: 'js',
	paths: {
		'jquery': '/assets/plugins/jquery/dist/jquery.min',
		'inspinia': '/assets/js/inspinia',
		'jquery-ui': '/assets/plugins/jquery-ui/jquery-ui.min',
		'bootstrap': '/assets/plugins/bootstrap/dist/js/bootstrap.min',
		'underscore': '/assets/plugins/underscore/underscore-min',
		'backbone': '/assets/plugins/backbone/backbone',
		'lodash': '/assets/plugins/lodash/lodash.min',
		'text': '/assets/plugins/requirejs-plugins/lib/text',
		'pace': '/assets/plugins/pace/pace.min',
		'socketio': '/assets/plugins/socket.io-client/socket.io',
		'switchery': '/assets/plugins/switchery/dist/switchery.min',
		'metis-menu': '/assets/plugins/metisMenu/dist/metisMenu.min',
		'slimscroll': '/assets/plugins/slimscroll/jquery.slimscroll.min',
		'gritter': '/assets/plugins/gritter/js/jquery.gritter.min',
		'sparkline': '/assets/js/plugins/sparkline/jquery.sparkline.min',
		'toastr': '/assets/plugins/toastr/toastr.min'
	},
	shim: {
		'jquery':{
			exports: 'jQuery'
		},
		'socketio': {
			exports: 'io'
		},
		'backbone': {
			deps: ['underscore', 'jquery'],
			exports: 'Backbone'
		},
		'underscore': {
			exports: '_'
		},
		'bootstrap': ['jquery'],
		'metis-menu': ['jquery'],
		'slimscroll': ['jquery'],
		'gritter': ['jquery'],
		'inspinia': [],
		'app': []
	}
});

requirejs(['test']);

requirejs(['app'], function(App){
	App.initialize();
});


/js/test.js
'use strict';

define([
	'jquery',
	'lodash',
	'backbone',
	'socketio',
	'jquery-ui',
	'metis-menu',
	'slimscroll',
	'toastr'
], function($, _, Backbone, SocketIo){

	var io = SocketIo('http://'+window.location.host+'/');

	$(document).ready(function () {

	// ... so much code

	});

});


Что я делаю не так? Как добиться стабильности?
  • Вопрос задан
  • 820 просмотров
Решения вопроса 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Попробуйте отрубить половину библиотек. Если стабильность восстановится, можно будет по одной подключать обратно.

'backbone': {
      deps: ['underscore', 'jquery'],
      exports: 'Backbone'
    },
    'underscore': {
      exports: '_'
    },

Этот кусок уже не нужен года, наверное, два как:)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы