Парус JS с EJS, но компоновщик для компиляции открытых шаблонов руля

Я немного новичок в базовых средах Node и javascript, поэтому, пожалуйста, потерпите меня:

Я искал подходящее сочетание интерфейсных и серверных сред (MVC) для работы с Node, и в настоящее время я решил использовать SailsJS/EmberJS, чтобы создать шаблон, с которым я могу поиграть и возможно использовать для будущих проектов.

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

Я хочу сохранить язык шаблонов (EJS), как он есть, с одним исключением в отношении компоновщика SailsJS. В настоящее время он компилирует публичные шаблоны как 'jst.js', которые не совместимы с рулями. Я хотел бы изменить это так, чтобы 'jst.js' содержал скомпилированные шаблоны руля, поэтому они передаются во внешний интерфейс (приложение ember), готовые к использованию.

Я предполагаю, что для этого потребуется дополнительная библиотека узлов. Как мне настроить Gruntfile.js для использования этой библиотеки, чтобы компоновщик мог выводить скомпилированные шаблоны руля в публичный каталог?

3 ответа

С текущей версией grunt-ember-templates как-то dev: раздел не работал. Как только я это снял, это сработало сразу:

var pipeline = require('../pipeline');

module.exports = function(grunt) {

grunt.config.set('emberTemplates', {
        compile: {
            options: {
                amd: true,
                templateBasePath: pipeline.templateBasePath
            },
            files: {
                '.tmp/public/jst.js': pipeline.templateFilesToInject
            }
        }
});

grunt.loadNpmTasks('grunt-ember-templates');
};

Шаблоны EJS в Sails имеют мало общего с шаблонами Ember. Одним из ключевых аспектов Ember и других клиентских сред приложений является то, как рендеринг выполняется на стороне клиента, а не на сервере. Кроме использования шаблона Sails EJS для доставки начальной полезной нагрузки пользователю; Паруса лучше всего будут работать с Ember в качестве REST API. Что касается того, как работать с предварительно скомпилированными шаблонами руля для оптимизации начальной полезной нагрузки, вы можете взглянуть на то, как Ember App Kit достигает этого. На самом деле, EAK - отличное место для старта по ряду причин.

Вы, наверное, уже поняли это, но для протокола...

Проверьте https://github.com/dgeb/grunt-ember-templates для этой "дополнительной библиотеки узлов"

и посмотрите http://sailsjs.org/#/documentation/concepts/Assets/TaskAutomation.html?q=task-configuration, чтобы узнать, как настроить задачу.

Я получил способ создать следующий файл на tasks\config\emberTemplates

var pipeline = require('../pipeline');

module.exports = function(grunt) {

    grunt.config.set('emberTemplates', {
        dev: {
            compile: {
                options: {
                    amd: true,
                    templateBasePath: pipeline.templateBasePath
                },
                files: {
                    '.tmp/public/jst.js': pipeline.templateFilesToInject
                }
            }
        }
    });

    grunt.loadNpmTasks('grunt-ember-templates');
};

И изменить tasks\pipeline.js с этими линиями

var templateBasePath = 'assets/templates/';
var templateFilesToInject = [
  templateBasePath + '**/*.hbs' //Note that whatever is replaced by '**/' will be included in the template name (necessary for defining components see http://emberjs.com/guides/components/defining-a-component/).
];

module.exports.templateFilesToInject = templateFilesToInject;
module.exports.templateBasePath = templateBasePath;

и, конечно, положить ваши шаблоны в assets/templates с .hbs расширение.

Другие вопросы по тегам