Soy un desarrollador de rieles tratando de aprender Backbone y luego me encontré con este problema: desde Underscore
plantillas incluyen símbolos como <%=%>
, supongo que las plantillas no se pueden incluir en los archivos erb
, por lo que está bien tener un rails parcial para cada plantilla individual? ¿Y qué extensión debería ser?¿Dónde en el marco de Rails debería colocar mis plantillas Backbone?
Respuesta
Puede escapar de los símbolos erb mediante el uso de dos %
en la etiqueta de apertura, y poner las plantillas de la columna vertebral en las vistas de rieles:
<script type='text/template' id="my-template'>
<%%= name %>
</script>
dará salida a lo siguiente en su página:
<script type='text/template' id="my-template'>
<%= name %>
</script>
Poner sus plantillas Backbone directamente en las vistas de sus rieles es en mi humilde opinión la mejor opción cuando está tratando de aprender. Ya estás luchando con los nuevos conceptos, no es necesario agregar otro obstáculo.
¿Dónde debería colocar sus plantillas Backbone? Yo diría nada. Creo que en la mayoría de las aplicaciones de Rails, el servidor debería ser responsable de todas las representaciones de HTML, mientras que el JavaScript del lado del cliente debería ser el único responsable de insertar ese HTML renderizado en el DOM. Entre otras cosas, esto hace que I18n sea más fácil.
La excepción sería si Rails simplemente se utiliza como un backend ligero para una aplicación que se ejecuta principalmente en el lado del cliente (aunque en ese caso, es posible que desee utilizar Sinatra o algo en su lugar). En este caso, Rails probablemente debería mostrar nada, y hacer que el JS do todos el renderizado.
Observe el principio subyacente aquí. O el servidor debe ser responsable de todas las representaciones, o el cliente debería hacerlo. Dividirlo hará la vida más difícil.
¿Qué hay de pequeñas piezas de renderizado, como filas de tablas? –
La misma respuesta. No divida la representación. ¿O no entiendo bien tu pregunta? –
Quizás malinterprete la respuesta. Bueno, para usar 'Backbone.js', tengo que escribir plantillas en alguna parte. Estas plantillas usan las etiquetas '<%= %>' y mi pregunta era si hay alguna manera de hacer que los rieles presenten estas etiquetas al cliente o si hay un formato que pueda usar para renderizar plantillas Backbone.js (Underscore.js) más fácilmente. –
Comenzando con Rails 3.1, proporciona dos cosas que hacen que trabajar con plantillas Backbone sea un poco más fácil: el inventario de activos y la compilación automática de JST (Plantilla de JavaScript).
Cree un directorio en su carpeta app/assets
llamada templates
. Este directorio será recogido automáticamente por la canalización de activos.
A continuación, nombre los archivos en ese directorio con una extensión de jst
y el tipo de plantilla que está creando ejs
(javascript incrustado). Incluso puedes anidarlos en directorios. Por ejemplo:
app/assets/templates/my_template.jst.ejs
app/assets/templates/bookmarks/show.jst.ejs
La tubería de activos también permite utilizar otros lenguajes de plantillas como CoffeeScript incrustado, bigote, manillar, etc., simplemente cambiando la extensión de archivo (incluyendo cualquier y gemas necesarias).
Ahora que hacen referencia a las plantillas de la TJS en sus puntos de vista Backbone, basta con utilizar la ruta de acceso al nombre de archivo:
var Bookmark = Backbone.View.extend({
template: JST['bookmarks/show'],
render: function() {
this.$el.html(this.template(this.model.attributes));
return this;
}
});
Es posible que tenga que añadir esta línea a su application.js
:
// require_tree ../templates
Aquí hay una buen artículo que explica todo esto con un poco más de detalle: http://www.bigjason.com/blog/precompiled-javascript-templates-rails-3-1
- 1. ¿Dónde debería definir mis plantillas de datos?
- 2. ¿Dónde debería colocar scriptmanager
- 3. MEF: ¿Dónde debería colocar el CompositionContainer?
- 4. ¿Dónde colocar el marco de la entidad en nuestra solución?
- 5. ¿Dónde debería colocar bibliotecas de terceros?
- 6. ¿Dónde colocar mis ayudantes Html personalizados?
- 7. ¿Dónde debería colocar las interfaces para MEF?
- 8. plantillas de jQuery: ¿dónde debería ponerlas?
- 9. ¿Dónde debería poner mis pruebas JUnit?
- 10. ¿Dónde debería colocar los archivos SQL en mi proyecto Java?
- 11. En Code Igniter, ¿dónde debería declarar mis variables globales?
- 12. Backbone dinámicamente cambiar plantillas
- 13. ¿Dónde debería colocar mi asp.net-mvc fuertemente tipado viewdata?
- 14. Dónde debería colocar helpers declarativos en ASP.NET MVC 3
- 15. ¿Dónde debería definir mi NinjectModule y mis fábricas?
- 16. ¿No se puede colocar en el marco?
- 17. ¿Dónde debería colocar el archivo de fuente en los recursos de Android?
- 18. ¿Dónde colocar recursos en el proyecto Grails?
- 19. persistence.xml dónde colocar en el proyecto Eclipse
- 20. ¿Debería destruir mis antecedentes?
- 21. ¿Cómo debería estructurar una aplicación Java? ¿Dónde pongo mis clases?
- 22. Dónde colocar scripts de utilidad en rieles
- 23. ¿Dónde debería colocar bibliotecas de JavaScript en una aplicación de Grails?
- 24. Rieles: ¿dónde colocar los archivos de datos?
- 25. Dónde colocar correlaciones de objetos (en RestKIt)
- 26. Dónde colocar log4j.xml
- 27. Dónde colocar el código de Rails que no es un modelo, vista, controlador o ayudante?
- 28. ¿Dónde guardar plantillas html?
- 29. ¿Dónde colocar objetos interactivos en JavaScript?
- 30. dónde colocar los archivos js en CodeIgniter
Un gran consejo, no lo sabía.De hecho, utilizo jst que están almacenados limpiamente en un árbol dentro de assets – apneadiving
Estaba usando una expresión regular personalizada para plantillas de subrayado. Gracias por los dos consejos '%'. – Agent47DarkSoul