2017-04-15 2 views
0

이것은 파일에서 내 Handlebars 템플릿을로드하는 데 사용하는 함수입니다. 로컬 파일을로드하는 경우에도 매우 느린 것으로 나타났습니다. 제 의견으로는 XMLHttpRequest()는 로컬 파일에 대해 아주 방대하지 않습니다. 예를 들어 같은 일을 할 수있는 방법이 있습니까? jQuery get() 또는 좀 더 빨리? 감사합니다 사용의XMLHttpRequest slow ... 같은 일을 더 빨리하는 방법?

function getTemplate (name, callback, dir) { 
    if (dir === undefined) dir = '' 
    var xhr = new XMLHttpRequest() 
    var url = '/scripts/templates/' + dir + name + '.html' 
    xhr.open('GET', url, true) 
    xhr.onreadystatechange = function() { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     var raw = xhr.responseText 
     var compiled = Handlebars.compile(raw) 
     callback(compiled) 
    } 
    } 
    xhr.send() 
} 

예 : 가져 오기에 대한

getTemplate('no-results', function (tmp) { 
    $(historyContainer).append(tmp()) 
    }) 
+0

작동하려면? – nixkuroi

답변

0

확인이 팅겨 솔기는 당신이 그것을 렌더링, 또는 대부분의 시간을 복용 요청을인지 확인하기 위해 타이머를 할 수도

function getTemplate (name, callback, dir) { 
    if (dir === undefined) dir = '' 
    var xhr = new XMLHttpRequest() 
    var url = '/scripts/templates/' + dir + name + '.html' 

    return fetch(url).then(function (res) { 
    return res.text() 
    }).then(function (html) { 
    var compiled = Handlebars.compile(html) 
    callback(compiled) 
    }) 
} 
-1

읽기 this 기사. XMLHttpRequest() 대신 Fetch를 사용할 수 있습니다.

Example: 

@meth = GET | POST | PUT 
@url = path 
@data = {test1: "teste1"} 

function ajaxRequest(meth, url, data) { 
    return fetch(url, { 
     method: meth, 
     headers: {'Content-Type': 'application/json'}, 
     body: data, 
     credentials: 'same-origin' 
    }) 
    .then(resp => { 
     if(resp.status != 200) throw new Error(resp.statusText) 
     return resp.text() 
    }) 

}

+0

예제를 기반으로 가져 오기 사용을 표시 하시겠습니까? – Spyder