I've been using Yeoman ember generator for the past 1 month and now, I'd like to give ember-cli a try.
I run the generator and launch the app, everything works fine.
ember new my-new-app ember server
but I'd like to know how does
{{content-for 'head'}}
in app/index.html works?
When looking at other examples from http://www.ember-cli.com/#tutorials, none of them are using this particular helper? Is it because they are using older version of ember-cli? Why weren't they using this content-for helper?
I'm pretty sure that ember.js doesn't have this content-for helper in default, so I'm guessing ember-cli wrote it somewhere? Where is it and what is it for?
Also, when I inspect the element of my-new-app page, the div tag of 'Welcome to Ember.js' appeared at the body tag instead of head tag? How is that possible? {{mind-blown}}
( in app/index.html, {{content-for 'head'}} is placed inside head tag)
Installing Ember is done using NPM. While you're at it we recommend you to also install phantomjs (if you don't have it already). Ember CLI uses phantomjs to run tests from the command line (without the need for a browser to be open).
Ember CLI, Ember's command line interface, provides a standard project structure, a set of development tools, and an addon system. This allows Ember developers to focus on building apps rather than building the support structures that make them run.
We call such packages "addons." Ember developers are also free to use regular npm packages in their apps. Addons can include JavaScript code, reusable UI components, compiling tools, data visualization tools, deployment pipelines, templates, stylesheets, and more. Think of addons as node libraries with superpowers.
It was recently added to ember-cli based on this discussion.
Here is the relevant code from the commit:
EmberApp.prototype.contentFor = function(config, match, type) { var content = []; if (type === 'head') { content.push(calculateBaseTag(config)); content.push('<meta name="' + config.modulePrefix + '/config/environment" ' + 'content="' + escape(JSON.stringify(config)) + '">'); } content = this.project.addons.reduce(function(content, addon) { if (addon.contentFor) { return content.concat(addon.contentFor(type, config)); } return content; }, content); return content.join('\n'); };
From Ember CLI guide:
app/index.html
The
app/index.html
file lays the foundation for your application. This is where the basic DOM structure is laid out, the title attribute is set and stylesheet/javascript includes are done. In addition to this,app/index.html
includes multiple hooks -{{content-for 'head'}}
and{{content-for 'body'}}
- that can be used by Addons to inject content into your application’shead
orbody
. These hooks need to be left in place for your application to function properly, but they can be safely ignored unless you are working directly with a particular addon.
I was actually looking for where Welcome to Ember.js
is coming from (which is obviously in app\templates\application.hbs
), but first stumbled upon content-for
helpers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With