Структурирование приложения backbone.js - PullRequest
2 голосов
/ 28 января 2012

У меня есть приложение backbone.js с несколькими моделями, представлениями, коллекциями и шаблонами (в теге сценария с типом text / template с идентификатором, который представления используют для загрузки шаблона с использованием _.template ($ (id)) .html ())).

В настоящее время все вышеперечисленное находится в одном файле, что делает его довольно уродливым. Это автономное приложение (т. Е. Оно загружается из локальной файловой системы и обращается к веб-серверу, который разрешает запросы из разных источников). Я пытался выяснить, как переместить представления, модели и шаблоны в отдельные файлы, я попытался просто переместить представления и модели в views.js и models.js, но представления зависят от шаблонов и шаблонов. не может быть помещен в views.js (как его JS-файл, и поэтому не может иметь тегов script ..).

Мое единственное решение на данный момент, кажется, заключается в перемещении шаблонов в глобальные переменные, что было бы хорошо, за исключением экранирования строк javascript / многострочных строк, которые потребовались бы.

Как это обычно обрабатывается?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 28 января 2012

Используйте RequireJS для упаковки ваших представлений и моделей в модули, а RequireJS позаботится о разрешении зависимостей для вас. Таким образом, вы также можете перейти к одному представлению или модели для каждого файла вместо того, чтобы помещать их все в один views.js или models.js.

Затем используйте плагин text! для хранения ваших шаблонов в текстовых файлах и их использования как обычных модулей.

define(function (require, exports, module) {
  var templateText = require("text!./person.tmpl");
  var $ = require("jquery");

  exports.PersonView = Backbone.View.extend({
    render: function () {
        doStuffWith(_.template(templateText));
    }
  });
});
2 голосов
/ 28 января 2012

Взгляните на эти начальные приложения, использующие Backbone и RequireJS.

В этом есть Backbone.LocalStorage, который может помочь вам с автономными вещами.

https://github.com/jcreamer898/Savefavs

Этот другой просто стартер для создания приложения ...

https://github.com/jcreamer898/RequireJS-Backbone-Starter

Они позволяют работать с шаблонами с помощью ...

define([
        'jquery', 
        'backbone',
        'underscore', 
        'models/model',
        'text!templates/main.html'], 
function($, Backbone, _, model, template){
    var MyView = Backbone.View.extend({
        initialize: function(){
            this.template = _.template(template);
        },
        render: function(){
            this.template(model);
        }
    });
    return new MyView();    

});

1 голос
/ 29 января 2012

Возможно, вы захотите проверить шаблон Магистральная магистраль . Это добавляет хорошую модульную структуру к вашему основному приложению, не загрязняя глобальное пространство имен, и обеспечивает простое кэширование шаблонов.

Действительно легко изменить шаблон рендерера на то, что отличается от JST. Даже если общая идея может быть реализована без каких-либо требований на стороне сервера, шаблон также предоставляет базовое приложение node.js.

...