簡體   English   中英

Handlebars.js-組合模板

[英]Handlebars.js - Combining Templates

我下面的代碼的每個部分都會創建一個新的handlebars.js模板,以調用“用戶行為API”。 如您所見,每個部分都有相似的代碼,但有一個或兩個變量。

有沒有辦法清理此代碼,並將這些單獨的功能組合為一個功能? 看起來好像很多代碼,但是再說一次,我還是新手。

// BEHANCE API INFO ---
var apiKey = 'ZLBxK9rEfHwJf9K0rmseNr2fS2gS2HJW';
var userID = 'creativemints';
var perPage = 10;
var behanceUserAPI = 'http://www.behance.net/v2/users/' + userID + '?callback=?&api_key=' + apiKey;
var behanceProjectAPI = 'http://www.behance.net/v2/users/' + userID + '/projects?callback=?&api_key=' + apiKey + '&per_page=' + perPage;

// BEHANCE - USER HEADER ---
(function () {
    function setUserTemplate() {
        var userData = JSON.parse(sessionStorage.getItem('behanceUser')),
            getTemplate = $('#userHead').html(),
            template = Handlebars.compile(getTemplate),
            result = template(userData);
        $('header').html(result);
    }
    if (sessionStorage.getItem('behanceUser')) {
        setUserTemplate();
    } else {
        $.getJSON(behanceUserAPI, function (user) {
            var data = JSON.stringify(user);
            sessionStorage.setItem('behanceUser', data);
            setUserTemplate();
        });
    }
})();

// BEHANCE - USER ABOUT ---
(function () {
    function setUserTemplate() {
        var userData = JSON.parse(sessionStorage.getItem('behanceUser')),
            getTemplate = $('#userAbout').html(),
            template = Handlebars.compile(getTemplate),
            result = template(userData);
        $('.about').html(result);
    }
    if (sessionStorage.getItem('behanceUser')) {
        setUserTemplate();
    } else {
        $.getJSON(behanceUserAPI, function (user) {
            var data = JSON.stringify(user);
            sessionStorage.setItem('behanceUser', data);
            setUserTemplate();
        });
    }
})();

// BEHANCE - USER FOOTER ---
(function () {
    function setUserTemplate() {
        var userData = JSON.parse(sessionStorage.getItem('behanceUser')),
            getTemplate = $('#userFoot').html(),
            template = Handlebars.compile(getTemplate),
            result = template(userData);
        $('footer').html(result);
    }
    if (sessionStorage.getItem('behanceUser')) {
        setUserTemplate();
    } else {
        $.getJSON(behanceUserAPI, function (user) {
            var data = JSON.stringify(user);
            sessionStorage.setItem('behanceUser', data);
            setUserTemplate();
        });
    }
})();

// BEHANCE - USER COPYRIGHT ---
(function () {
    function setUserTemplate() {
        var userData = JSON.parse(sessionStorage.getItem('behanceUser')),
            getTemplate = $('#userCopyright').html(),
            template = Handlebars.compile(getTemplate),
            result = template(userData);
        $('#copyright').html(result);
    }
    if (sessionStorage.getItem('behanceUser')) {
        setUserTemplate();
    } else {
        $.getJSON(behanceUserAPI, function (user) {
            var data = JSON.stringify(user);
            sessionStorage.setItem('behanceUser', data);
            setUserTemplate();
        });
    }
})();

還沒有測試過,但是您應該能夠將代碼簡單地修改為類似於

// BEHANCE API INFO ---
var apiKey = 'ZLBxK9rEfHwJf9K0rmseNr2fS2gS2HJW';
var userID = 'creativemints';
var perPage = 10;
var behanceUserAPI = 'http://www.behance.net/v2/users/' + userID + '?callback=?&api_key=' + apiKey;
var behanceProjectAPI = 'http://www.behance.net/v2/users/' + userID + '/projects?callback=?&api_key=' + apiKey + '&per_page=' + perPage;

// BEHANCE - USER HEADER ---
(function () {

function setUserTemplate(templateSelector, htmlSelector) {
    var userData = JSON.parse(sessionStorage.getItem('behanceUser')),
        getTemplate = $(templateSelector).html(),
        template = Handlebars.compile(getTemplate),
        result = template(userData);
    $(htmlSelector).html(result);
}

if (!sessionStorage.getItem('behanceUser')) {
    $.getJSON(behanceUserAPI, function (user) {
        var data = JSON.stringify(user);
        sessionStorage.setItem('behanceUser', data);
    });
}

setUserTemplate('#userHead','header');
setUserTemplate('#userAbout','.about');
setUserTemplate('#userFoot','footer');
setUserTemplate('#userCopyright','#copyright');
})();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM