Не существует Единого Верного Пути, потому что каждый проект AMD отличается (некоторые люди оборачивают Backbone в функцию define
, некоторые используют конфигурацию shim
, все упорядочивают вещи в разные структуры папок...). Однако в основном адаптер должен работать в лексической области, в которой есть как Ractive
, так и Backbone
.
Таким образом, один из способов приблизиться к этому — создать простой модуль-оболочку, например:
define(["ractive","backbone"], function (Ractive, Backbone) {
// adaptor code goes here. No need to include the outer IIFE
// (https://github.com/Rich-Harris/Ractive/blob/master/plugins/adaptors/Backbone.js)
});
Затем вы можете либо продолжить выполнение
define(["ractive","ractive.backbone"], function(Ractive) {....});
для каждого модуля, который использует как Ractive, так и адаптер Backbone, или вы можете запросить адаптер Backbone один раз в начале вашего приложения — если он требуется до того, как Ractive что-либо отобразит, он будет работать:
// in main.js, or equivalent
require(["app","ractive.backbone"], function (app) {
app.init(); // or whatever
});
Я открыт для предложений о том, как сделать все это немного более понятным!
person
Rich Harris
schedule
10.10.2013