Angular templates are very cool and all, there's jsut one thing im used to that im missing:
This is only about building/packaging your JS for prod
When i require a handlebars template with require.js:
require(["hbs!my-template"], function(tmpl) {
//use the template in here
});
HBS can parse the template, find dependencies and subdependencies, and include all those. Further, with require.js i can automatically get all the dependencies included in my build, just by asking for my-template
They all seem to work more or less the same way:
- Scan directory for all files named "*.mysuffix", for example
templates/dashboard/**/*.html
- Concat all those and add them to template cache, when your one single angular app starts
- I have more than one angular app on a page
- I have several different pages, where some reuses widgets from each other The angular community seems to favor folder structures like this
app
/directives
/dashboard
/settings
/controllers
/dashboard
/settings
/templates
/dashboard
/settings
My opinion is that that stuff only works for small apps. For larger apps you need smth like this:
app
/widgets
/account
/other-thing
/pages
/dashboard
/settings
A widget can be used on both dashboard/settings, and that folder contains a controller it needs, a template it needs and so. All code concerning one unit on the page is in one folder.
I honestly think I never used ng-include and I think we don't use it internally. We just pull every template through directives (our routing is weird, Jan wrote about it here http://jan.varwig.org/archive/angularjs-views-vs-directives) so I honestly don't know what tooling exists on top of that for compiling.
However, including templates required by templates in my view should be the job of the template compiler. For instance, in Handlebars, if you use partials, it pulls the partial file by itself.