我是骨干新手,我不知道有一个问题。我使用backbone.js的骨干。当我想第一次渲染一些视图时(当我在浏览器中重新加载页面时)index.html立即显示但是它被隐藏了大约2秒然后再次显示渲染模板。如果我然后在视图之间导航(没有点击刷新)它工作顺利,但初始渲染做错了。这是我的代码:
查看:
define(['jquery','underscore','backbone', 'text!../../../templates/home/HomeView.tpl'],
function($, _, Backbone, HomeTemplate)
{
var HomeView = Backbone.View.extend(
{
events:{
},
render: function ()
{
var template = _.template(HomeTemplate);
this.$el.html(template);
return this;
}
});
return HomeView;
});
路由器:
define(['jquery','underscore','backbone'],
function($, _, Backbone)
{
var container = $("#container");
var AppRouter = Backbone.Router.extend(
{
routes:
{
"": "home"
},
home: function()
{
require(['views/home/HomeView'],
function(HomeView)
{
var Home = new HomeView({el: container});
Home.render();
});
}
});
var initialize = function()
{
var app_router = new AppRouter();
Backbone.history.start();
};
return { initialize: initialize };
});
我在控制台中没有错误。这种行为是否正常?
答案 0 :(得分:1)
这很正常。
RquireJs通过http请求加载依赖项,这些请求确实有超时。此外,在浏览器中,最大并行下载存在限制。这些延迟在启动时可以轻松添加2秒,并结合网络延迟。
如果您想最小化此延迟,请使用RequireJS docs中提到的r.js最小化文件。
编辑:如果minify无法解决问题,浏览器分析工具可以帮助您。