json вместо html

Есть страница пользователя, т.е. стена пользователя (как на вконтакте или фейсбуке). С помощью «infinite scrolling» подгружаются разный тип контента, т.е. комментарий, запись на стене, список фото и т.д. Самый простой способ — это возвращать html, но хотелось бы все таки работать с json, сами понимаете почему.

Новости, список фото, обычные записи — это компоненты, а стена — это «user activity stream». В php компоненты общаются между собой с помощью внутреннего API. А вот как научить общаться компоненты на стороне клиента — пока неясно.

Помогите советом, как лучше всего спроектировать подобный функционал на стороне клиента, чтобы можно было использовать json для рендеринга вместо html, принимая во внимание то, что компоненты должны существовать автономно, т.е. никакого хардкода в компоненте «стена» не должно быть. Т.е. в компоненте «стена» не дожно быть чего-то подобного:

if(component == 'news'){
 //отобразить новость
} elseif(component == 'comment'){
//отобразить комментарий
}
  • Вопрос задан
  • 5647 просмотров
Пригласить эксперта
Ответы на вопрос 7
dshvechikov
@dshvechikov
есть разного рода javascript шаблонизаторы, думаю вам стоит смотреть в эту сторону. К примеру, handlebarsjs.com/
Ответ написан
@1x1
Можно подгружать нужные компоненты, вроде такой схемы:
var callback=function() {
    known_components[component_id](data);
}
if (!known_components[component_id]) {
    load_component_js_from_server(component_id, callback)
} else {
    callback();
}
Ответ написан
toptalo
@toptalo
undefined
Можно получить пример json, чтобы лучше понять ситуацию?
Ответ написан
asm0dey
@asm0dey
А может генерировать на сервере HTML а потом конвертировать его в json?
Ответ написан
События, что сказать.
В транспорте, на получении json что-то в стиле:
app.trigger('load'+data.component,data)
В компонентах на это событие:
app.on('loadNews',function(data){/*парсим шаблон*/})
Ответ написан
Eternalko
@Eternalko
Попробуйте глянуть в сторону:
icanhazjs
Ответ написан
Комментировать
@scrivener
Мне кажется, самое время вам начать копать какой-нибудь javascript фреймворк. Типа Backbone, Knockout и др.

По шаблонизаторам — самый легкий и быстрый Dot.js
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы