Ember.js → Компиляция шаблонов в Ember.js 1.10
Только немного отвлёкся от Ember.js, как в нём внезапно произошли изменения, а именно, сменился движок рендеринга шаблонов. Был Handlebars, а стал какой-то HTMLBars, у которого я даже официального сайта не наблюдаю. Хотя для рядового разработчика ничего не меняется, внешне сами шаблоны остаются почти как есть, основные же отличия во внутренностях.
Если в двух словах, то было и стало.
Раз:
<script src="/bower_components/handlebars/handlebars.js"></script> <script src="/bower_components/ember/ember.js"></script>
Два:
<script src="/bower_components/ember/ember-template-compiler.js"></script> <script src="/bower_components/ember/ember.js"></script>
Второй момент - это предварительная компиляция *.hbs шаблонов в JavaScript-код. В предыдущей записи, посвящённой Ember.js, использовался модуль ember-precompile, однако сейчас я его даже пробовать не стал, уверен, что ошибки вылезут довольно быстро. Есть же и другие инструменты, рекомендованные на официальном сайте данного фреймворка (здесь).
Использоваться будет вот такая штука - grunt-ember-templates. Нет времени объяснять, просто создаём подобные файлы и готово.
package.json
{ "name": "package-name", "version": "0.0.1", "private": true, "devDependencies": { "grunt": "~0.4.0", "grunt-ember-templates": "0.5.0" } }
Gruntfile.js
module.exports = function(grunt) { grunt.initConfig({ emberTemplates: { compile: { options: { templateName: function(src) { return src.replace(/web\/app\/templates\//, '').replace('/\./g', '/'); }, templateCompilerPath: 'web/bower_components/ember/ember-template-compiler.js', handlebarsPath: 'web/bower_components/handlebars/handlebars.js' }, files: { "web/app/templates.js": "web/app/templates/*.hbs" } } } }); grunt.loadNpmTasks('grunt-ember-templates'); grunt.registerTask('default', ['emberTemplates']); };
Естественно, пути к соответствующим файлам должны быть прописаны правильно. Что ещё важно отметить - опции templateCompilerPath и handlebarsPath добавлены неспроста. На данный момент npm-модули ember-template-compiler и handlebars не справляются со своей задачей и на замену им нужно подсунуть аналогичные файлы, но из модулей bower-а. Думаю, что в ближайшее (или нет) время код обновят и такие извороты не понадобятся, но пока так.
Устанавливаем модули npm и запускаем grunt - шаблоны будут скомпилированы.
Комментарии