Подтвердить что ты не робот

Ember.js и RequireJS

У кого-то был большой успех с RequireJS и Ember.js? Видя, как Эмбер любит привязывать свою структуру к глобальному объекту, я нахожу, что он может действительно прикладом головы с помощью Requirejs. Будет ли что-то вроде LAB.js работать лучше для Ember?

4b9b3361

Ответ 1

РЕДАКТИРОВАТЬ (2012-01-30): я сделал более полный пример в repo на битбакете.

Я успешно использовал RequireJS для загрузки Ember.js, а также аддона datetime (github). Пространство имен Ember остается глобальным, но все мои данные приложения, включая мой экземпляр Ember.Application, хранятся в модулях через RequireJS. Я также загружаю шаблоны ручек с помощью "text!" плагин.

У меня еще не было проблемы, но это не полное приложение, скорее доказательство концепции. Вот как я это сделал. Я могу загрузить приложение напрямую с помощью Safari без необходимости сервера. Вам все равно потребуется сервер для загрузки его с помощью Chrome, который не позволяет загружать файлы JavaScript из файловой системы.

1) Поскольку Ember.js использует BPM/Spade, я не мог использовать клон репо. Вместо этого я обматываю скомпилированную версию в модуле:

Библиотека/ember.js:

define(['jquery',
        'plugins/order!lib/ember-0.9.3.js',
        'plugins/order!lib/ember-datetime.js'],
         function() {
             return Ember;
});

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

2) Модули могут ссылаться на Ember следующим образом:

приложение/core.js:

define(['lib/ember'], function(Em) {
    MyApp = Em.Application.create({
        VERSION: "0.0.1"
    });
    return MyApp;
});

Здесь "Em" можно было назвать другим; он не ссылается непосредственно на глобальную переменную, а исходит из модуля, определенного в lib/ember.js.

3) Чтобы быть доступным с помощью Ember, необходимо зарегистрировать рули:

приложение/шаблоны/My-template.handlebars:

MyApp v{{MyApp.VERSION}}.

приложение/просмотров/My-view.js:

define(['lib/ember',
        'plugins/text!app/templates/my-template.handlebars'],
        function(Em, myTemplateSource) {

            Em.TEMPLATES["my-template"] = Em.Handlebars.compile(myTemplateSource);

            var myView = Em.View.create({
                templateName: "my-template";
            });

            return myView;
});

4) Я использую require-jquery.js(jQuery и RequireJS в комплекте).

Ответ 2

Существует лучший способ включить файл руля, который может иметь несколько блоков шаблонов. Которые могут быть скомпилированы и доступны в одном из них.

например: У вас есть следующий файл шаблонов Handlebars:

../шаблоны/sample.handlebars

<div><!-- just a filler html tag. Wont show up in your page -->
    <script type="text/x-handlebars" data-template-name="template1">
        Some Html or Template Content ...
    </script>
    <script type="text/x-handlebars" data-template-name="template2">
        Some Html or Template Content ...
    </script>
    <script type="text/x-handlebars" data-template-name="template3">
        Some Html or Template Content ...
    </script>
</div>

../просмотров/sampleView.js

define([
    'jquery',
    'lib/ember',
    'plugins/text!../templates/sample.handlebars'],
    function($, Em, myTemplateSource) {

        // Bootstrap method accepts a context element under which all handlebars
        // template blocks are defined. The filler <div> in this case.
        // Compiles and assigns to the EM.TEMPLATES hash correctly. 
        Em.Handlebars.bootstrap($(myTemplateSource));

        var myView = Em.View.create({
            templateName: "template1";
        });

        return myView;
});

Ответ 3

Я только что загрузил github стартовый набор для EmberJS + RequireJS, вы можете проверить его https://github.com/fernandogmar/Emberjs-RequireJS

Любые хорошие предложения будут высоко оценены. Получайте удовольствие!

Ответ 4

Ember CLI поддерживает синтаксис модуля ES6, который преобразуется в AMD. Похоже, что сообщество выходит за Ember CLI как предпочтительный способ использования Ember.

http://www.ember-cli.com

Ответ 5

В Mimosa есть несколько хороших примеров проектов с использованием Ember и Require.js. Здесь один для оформления заказа: https://github.com/dbashford/mimosa-ember-emblem-templates. Инструкции по его запуску находятся в README.