Esta é a estratégia que usei para carregar modelos em um frontend Amber:
- Você começa seu projeto Amber como de costume
- Faça a classe do controlador (Widget) que usará o template html
- Use o arquivo HTML estático inicial ou
- O #renderOn: de algum widget
- Para fazer um div com um id onde você inserirá o conteúdo: html div id: ‘bigTemplate’
- Use o require.js com o plugin de texto para carregar o template
- Use o callback dessa chamada para fazer seu controlador continuar o fluxo ou reagir conforme apropriado
Alguns dos benefícios que percebi até agora são:
- Copie e cole uma parte do código dos exemplos de bootstrap ou de qualquer outra fonte
- Faz colaboração com designers que fornecem HTML para ser menos atrito
- Permite que você use seu editor de texto favorito para compor html
- Libera você de usar a tela como a única maneira de obter html renderizado
- Lucros com os recursos de cache do navegador
- Torna seu código-fonte Amber menor
- Separação de interesses aprimorada , tornando seu código-fonte Amber mais focado no comportamento (Controladores) e vagamente acoplado à aparência (Visualizações)
Aposto que a barra de navegação do bootstrap será um exemplo popular:
AppNavBar>>renderOn: html
html div id: 'navbar'.
"The navbar is a complex piece of html.
Lets forget the canvas way and grab it from a template. Bam!"
require
value:(Array with: 'bower_components/text/text!views/navbar.html')
value:[ :template |
'#navbar' asJQuery html: template].
AppNavBar>>initialize
super initialize.
AppRouter when: 'aboutToRoute' do:[ self clearActive ]
AppNavBar>>clearActive
"Removes the .active class from all tabs"
'.navbar-nav > li' asJQuery removeClass: 'active'