Name: ember-handlebars-brunch
Owner: Crowdstrike
Description: This Brunch plugin adds support for pre-compiling Ember Handlebars templates prior to runtime, utilizing the latest and greatest EmberJS build (v1.0.0).
Created: 2014-01-01 00:00:31.0
Updated: 2014-04-28 18:29:24.0
Pushed: 2014-09-07 01:52:16.0
Size: 187
Language: CoffeeScript
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
This Brunch plugin adds support for pre-compiling Ember Handlebars templates prior to runtime, utilizing the latest and greatest EmberJS build (1.2.0).
Add "ember-handlebars-brunch": "1.2.0"
to package.json
within your Brunch application codebase.
Within the templates compiler config object of the config.coffee
file, set precompile: true
to enable pre-compiling.
Note: Be sure to remove the handlebars-brunch plugin if it is installed in your current project.
lates:
precompile: true # default is false
root: 'templates/' # default is null
defaultExtension: 'hbs'
joinTo: 'javascripts/app.js' : /^app/
A few reminders about the configuration object mentioned above:
defaultExtension
propertyroot
should represent a directory located under your app
directory. If you do not provide a value for this property, ember-handlebars-brunch will, by default, set the template name to the path of your file, starting from app
. For instance, without defining the root
property, a template located at app/templates/index.hbs
will be registered with Ember as Ember.TEMPLATES['app/templates/index']
.If using the exact example configuration above, your views
and templates
directories should look similar to this:
app
? templates
??? index
? ??? login.hbs
??? application.hbs
??? index.hbs
? views
??? index
? ??? login.js
??? application.js
??? index.js
Based on the example above, you can define your views like so:
pp/views/application.js
ApplicationView = Ember.View.extend({
templateName: 'application'
pp/views/index.js
IndexView = Ember.View.extend({
templateName: 'index'
pp/views/index/login.js
IndexLoginView = Ember.View.extend({
templateName: 'index/login'
The precompiled templates are injected into the Ember.TEMPLATES
namespace. You can access them within your JS code like so:
anotherTemplate = Ember.TEMPLATES['index/login'];
If you wish to require
the template instead of declaring them directly within a view class or within your code as mentioned above, you have to use the full path to the file, starting from the templates directory;
ire('templates/index/login');