shared/app.js
function(entryPath, attributes) {
    if (this.options.templateAdapterInstance) {
      this.templateAdapter = this.options.templateAdapterInstance;
    } else {
      var templateAdapterModule = attributes.templateAdapter || this.defaults.templateAdapter,
        templateAdapterOptions = {entryPath: entryPath},
        templateEngine = require(attributes.templateEngine || this.defaults.templateEngine);

      templateAdapterOptions = this.setTemplateFinder(templateAdapterOptions);
      this.templateAdapter = require(templateAdapterModule)(templateAdapterOptions, templateEngine);
    }
  }
function(entryPath, attributes) {
    if (this.options.templateAdapterInstance) {
      this.templateAdapter = this.options.templateAdapterInstance;
    } else {
      var templateAdapterModule = attributes.templateAdapter || this.defaults.templateAdapter,
        templateAdapterOptions = {entryPath: entryPath},
        templateEngine = require(attributes.templateEngine || this.defaults.templateEngine);

      templateAdapterOptions = this.setTemplateFinder(templateAdapterOptions);
      this.templateAdapter = require(templateAdapterModule)(templateAdapterOptions, templateEngine);
    }
  }
@shared

Initialize the `templateAdapter`, allowing application developers to use whichever
templating system they want.

We can't use `this.get('templateAdapter')` here because `Backbone.Model`'s
constructor has not yet been called.