【发布时间】:2013-11-17 22:06:02
【问题描述】:
我有一个优化的 config.js(大约 420kB),它由 requirejs 加载,每次新用户注册并登录此文件时都会获取并放入缓存中,但用户第一次获取此文件时总是有一个 @ 987654321@,然后用户必须刷新然后加载。
我以为是超时问题,所以改了waitSeconds : 200。这发生在 requireJs 2.1.6 中,所以我升级到最新的 2.1.9 仍然是同样的问题。
但是,如果我不使用优化器并使用未优化的配置文件 (3KB),它会加载大约 35-40 个小 js 文件(已缩小),一切都会好起来的!但我希望所有文件都在优化的 config.js 中,因为 http 请求较少(对移动设备有利)。
添加代码:
require.config({
paths : {
jquery : './vendor/libs/jquery-1.10.1.min',
underscore : './vendor/libs/underscore-min',
backbone : './vendor/libs/backbone-min',
marionette : './vendor/libs/backbone.marionette',
wreqr : './vendor/plugins/backbone.wreqr.min',
text : './vendor/plugins/text',
tpl : './vendor/plugins/tpl',
socketio : '../socket.io/socket.io.min',
spin : './vendor/plugins/spin.min',
shuffle : './vendor/plugins/jquery.shuffleLetters',
magicSuggest : './vendor/plugins/magicsuggest-1.3.0-min',
mCustomScroll : './vendor/plugins/jquery.mCustomScrollbar.concat.min',
imagesloaded : './vendor/plugins/imagesloaded',
qTip : './vendor/plugins/jquery.qtip.min',
visibility : './vendor/plugins/visibility',
tab : './vendor/plugins/tab',
dropdown : './vendor/plugins/dropdown',
interestsMap : './interestsMap',
moment : './vendor/plugins/moment.min',
favicon : './vendor/plugins/tinycon'
},
waitSeconds : 180,
shim : {
socketio : {
exports : 'io'
},
underscore : {
exports : '_'
},
backbone : {
deps : ['underscore','jquery'],
exports : 'Backbone'
},
marionette : {
deps : ['backbone'],
exports : 'Backbone.Marionette'
},
wreqr : {
deps : ['backbone'],
exports : 'Backbone.Wreqr'
},
shuffle : {
deps : ['jquery'],
exports : 'jQuery.fn.shuffleLetters'
},
magicSuggest : {
deps : ['jquery'],
exports : 'jQuery.fn.magicSuggest'
},
mCustomScroll : {
deps : ['jquery'],
exports : 'jQuery.fn.mCustomScrollbar'
},
visibility : {
exports : 'Visibility'
},
tab : {
deps : ['jquery'],
exports : 'jQuery.fn.tab'
},
dropdown : {
deps : ['jquery'],
exports : 'jQuery.fn.dropdown'
},
moment : {
exports : 'moment'
},
favicon : {
exports : 'Tinycon'
}
},
tpl : {
extension : '.tpl'
}
});
//Initialise
require([
'backbone',
'routers/index',
'app',
],function (Backbone ,Router ,app){
//var presence = io.connect(w.protocol+'//'+w.host+'/presence');
app.start();
Backbone.history.start();
});
**任何模块都没有错误,因为未优化的 config.js 文件加载正常。
构建配置
({
appDir : '../',
baseUrl: './scripts',
dir : '../../dist',
mainConfigFile : '../scripts/config.js',
name: "config",
optimizeCss : 'standard'
})
【问题讨论】:
-
你能添加一些代码吗?
-
已更新代码:)。现在我正在这样做:requirejs.onError = function(检查错误类型是否为超时,如果是,则重新加载()页面)。这可行,但用户体验不佳
-
你的构建配置呢?
-
您找到解决方案了吗?我遇到了同样的问题。
-
hm,所以你的主脚本命名为 config,配置也命名为 config 加上你没有提到输出文件。尝试重命名构建文件中的模块怎么样:
({ appDir : '../', baseUrl: './scripts', dir : '../../dist', mainConfigFile : '../scripts/config.js', name: "main", out: 'main-build.js' optimizeCss : 'standard' })
标签: javascript backbone.js requirejs marionette amd