Ember.js → Компиляция шаблонов в Ember.js 1.10

Только немного отвлёкся от Ember.js, как в нём внезапно произошли изменения, а именно, сменился движок рендеринга шаблонов. Был Handlebars, а стал какой-то HTMLBars, у которого я даже официального сайта не наблюдаю. Хотя для рядового разработчика ничего не меняется, внешне сами шаблоны остаются почти как есть, основные же отличия во внутренностях.

Если в двух словах, то было и стало.

Раз:

1
2
<script src="/bower_components/handlebars/handlebars.js"></script>
<script src="/bower_components/ember/ember.js"></script>

Два:

1
2
<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

1
2
3
4
5
6
7
8
9
{
  "name": "package-name",
  "version": "0.0.1",
  "private": true,
  "devDependencies": {
    "grunt": "~0.4.0",
    "grunt-ember-templates": "0.5.0"
  }
}

Gruntfile.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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 - шаблоны будут скомпилированы.

Комментарии

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