2013-09-04 3 views
0

임베디드를 처음 접했을 때 알아낼 수없는 한 가지 문제가 있습니다. require.js와 함께 백본을 사용합니다. 처음으로 (브라우저에서 페이지를 다시로드 할 때) 일부보기를 렌더링하려는 경우 index.html이 즉시 표시되지만 약 2 초 동안 숨겨진 다음 렌더링 된 템플릿으로 다시 표시됩니다. 그런 다음보기간에 이동할 때 (새로 고침없이) 부드럽게 작동하지만 초기 렌더링은 잘못된 결과를 초래합니다. 여기 내 코드입니다 :Backbone.js 렌더링 지연?

보기 :

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

정상입니다.

RquireJs는 HTTP 요청을 통해 종속성을로드하며 이러한 요청에는 시간 초과가 있습니다. 또한 브라우저에는 최대 병렬 다운로드에 대한 제한이 있습니다. 이러한 지연은 네트워크 대기 시간과 함께 시작시 최대 2 초까지 쉽게 추가 할 수 있습니다.

지연을 최소화하려는 경우 RequireJS docs에서 설명한 r.js 파일을 최소화하십시오.

편집 : 문제가 해결되지 않으면 브라우저 프로파일 링 도구가 도움이 될 수 있습니다.

+0

답해 주셔서 감사합니다. 그것의 이상한 모든 localhost, 그리고 당신이 사용자에게 뭔가를 보여준 후 공백으로 돌아갈 때부터 사용하기 위해 다소 anoying ... 어떻게 첫 번째 깜박을 피하기 위해? – gorgi93

+0

이것은 4 개의 요청으로 localhost에서 2 초 지연이 발생할 것이라고 확신하지 않습니다. 나는 똑같은 설정을 사용하고 그것은 거의 즉각적이다. 유일한 차이점은 원시 텍스트를 입력하는 대신 내 백본 템플릿을 JS 함수로 사전 컴파일하는 것입니다. 이것은 당신의 비 효율성이 초기 템플릿 렌더링에 있다고 믿게합니다. 내가 미리 컴파일을 시도해 볼께. –

+0

크롬 개발자 도구를 사용하여 어떤 일이 벌어 졌는지 더 자세히 보았습니까? –

관련 문제