2013-07-21 3 views
0

У меня есть проект проекта Backbonejs (BB). У меня Fat Free Framework (F3) работает для кода на стороне сервера. Поскольку я прошу об этом, пожалуйста, имейте в виду, я просто изучаю эти два инструмента для веб-разработчиков: когда маршрутизатор BB выполняет какую-либо маршрутизацию? У меня есть ссылка на веб-странице, которая соответствует маршруту в маршрутизаторе BB, но маршрутизатор F3 продолжает пытаться справиться с этим и терпеть неудачу. Как эти два маршрутизатора работают вместе и не мешают?Fat Free router blocks Магистральный маршрутизатор, как/когда работает Backbone router.js?

Большое спасибо за помощь.

+0

мне, это действительно не имеет смысл иметь маршруты в обеих рамках. Либо вы разрабатываете большую часть материала в Backbone.js, и используете F3 только для материала базы данных, или наоборот, а Backnbone.js ist просто отвечает за события и просмотр. – sascha

+0

@ Sn0opy: Да, это _exactly_, что я пытаюсь сделать. Разработайте приложение почти в полном объеме с помощью BB, используйте только F3 для бит связи с базой данных на стороне сервера. Попытка понять это. – Locohost

+0

@muistooshort: Я отправлю код BB, когда вернусь домой в этот вечер. – Locohost

ответ

0

Если вы не используете PushState, то остовы маршруты легко отличить от сервера маршрутов:

  • /Route1
  • /route2
  • /Route1 # маршрут/а
  • /route1 # route/b

Часть перед хэшем является переданной на сервер (маршруты F3). Часть после хеша соответствует магистральным маршрутам.

//F3 routing 
$f3->route('GET /route1',…) 
$f3->route('GET /route2',…) 

//Backbone routing 
routes: { 
    "route/a": "routeA", 
    "route/b": "routeB", 
} 

Обратите внимание, что магистральная маршрутизатор не генерирует запрос HTTP на сервер (если вы специально не определить его, конечно).

Что генерирует автоматически HTTP-запросы, является моделью Backbone. Модель базовой модели сопоставляется с ресурсом сервера с использованием urlRoot. Затем методы fetch(), save() и destroy() отображаются соответственно методам GET, PUT и DELETE HTTP.

Проверить этот пример:

userModel = Backbone.Model.extend({ 
    urlRoot: '/user' 
}); 
var user=new userModel({id:123}); 
user.fetch();// GET /user/123 
user.save();// PUT /user/123 
user.destroy();// DELETE /user/123 

На стороне сервера, вы можете легко отобразить пользовательский класс как это:

$f3->map('/user/@id','User'); 
class User { 
    function get($f3,$args){…} 
    function put($f3,$args){…} 
    function delete($f3,$args){…} 
} 
+0

Это хэштегов в URL-адресе, который мне не хватало.Это не упоминается в инструкциях маршрутизатора BB, и это очень важно: -/Я полагаю, что теперь у меня почти все рабочие части. @ xfra35: Спасибо за тонну за вашу помощь :-) Я немного пожарил. – Locohost

+0

Добро пожаловать :) Вот [короткий учебник] (http://backbonetutorials.com/). Мне показалось очень поучительным начать работу с Backbone. – xfra35

+0

Ах, боже, я видел эту статью. Раньше я читал это немного. Но по какой-то причине четко заявленная информация в разделе маршрутизатора о том, что хэштег просто не придерживался. Я чувствую себя немного глупым: -/ Часть маршрутизации F3 и установка файла .htaccess также были не слишком простыми. – Locohost