Парус 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
расширение.