Backbone.js呈现延迟?

时间:2013-09-04 12:52:21

标签: javascript backbone.js requirejs

我是骨干新手,我不知道有一个问题。我使用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 };

});

我在控制台中没有错误。这种行为是否正常?

1 个答案:

答案 0 :(得分:1)

这很正常。

RquireJs通过http请求加载依赖项,这些请求确实有超时。此外,在浏览器中,最大并行下载存在限制。这些延迟在启动时可以轻松添加2秒,并结合网络延迟。

如果您想最小化此延迟,请使用RequireJS docs中提到的r.js最小化文件。

编辑:如果minify无法解决问题,浏览器分析工具可以帮助您。