2012-05-21 4 views
3

В настоящее время я создаю приложение, в котором интерфейс делает много тяжелой работы. Чтобы все было аккуратно и организовано, я бы хотел использовать requirejs. Однако для использования require.js в полной мере все модули, которые я использую, должны соответствовать требованиям AMD.Создание модулей requirejs Совместимость с AMD

Это означает, что каждый раз, когда обновляемый модуль обновляется, мне нужно либо дождаться появления совместимой с AMD версии, либо сделать ее самостоятельно (о которой я сейчас не знаю).

Это настоящий поворот.

Глядя на это https://github.com/jrburke/backbone/blob/optamd/backbone.js, мне кажется, что создание модуля, такого как Backbone AMD-совместимый, не так просто, как перенос плагина в общую функцию.

Есть ли более или менее простой способ сделать модуль совместимым с AMD?

+0

Заканчивать обновление ответа и/или https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim –

ответ

2

Ну его версия довольно пуленепробиваемая, поэтому она будет работать при самых разных обстоятельствах. Поскольку вы знаете среду, в которой работаете, и что доступно/что нет, вы можете сделать некоторые предположения, которые позволят вам сделать что-то более простое.

Заканчивать эту суть, где я делаю bacbkonejs модуль AMD, предполагая, JQuery, подчеркивание и определить в глобальной области, и я не нужна CommonJS поддержка: https://gist.github.com/2762813

Я просто добавить

define(function() { 
    var obj = {}; 
    obj._ = window._; 
    obj.jQuery = window.jQuery; 

наверху и

.call(obj); 
    return obj.Backbone; 
}); 

до основания.


Благодаря @SimonSmith для приведения UseJS в мое внимание. UseJS - это плагин загрузчика AMD, который позволит вам загружать модули без AMD без их модификации. Я не использовал использовать себя, но пока это выглядит многообещающе: https://github.com/tbranyen/use.js/

UPDATE

RequireJS 2.0 теперь непосредственно поддерживает функциональные возможности вы ищете через прокладку конфиги: https://github.com/jrburke/requirejs/wiki/Upgrading-to-RequireJS-2.0#wiki-shim

+0

Удивительный! Благодаря! Я с нетерпением жду ES6, это действительно нужно стандартизировать. – nimrod

+0

Кстати, я полагаю, вы имеете в виду возвращение obj._ not return obj.Backbone :) – nimrod

+0

Прост в использовании use.js - https://github.com/tbranyen/use.js/ –

Смежные вопросы