props name emberjs ember create component classnamebindings bubbling ember.js flask jinja2 handlebars.js

ember.js - name - ember onclick



¿Puedes usar dos plantillas HTML como manubrios y Jinja? (4)

Intento escribir una aplicación en JavaScript con la biblioteca ember.js, que depende en gran medida del sistema de plantillas de Handlebars. Sin embargo, estoy usando FLASK, que también usa el sistema de plantillas jinja.

¿Es posible usar ambos renderizadores de plantillas al mismo tiempo? O necesito usar uno sobre otro. Cualquiera que tenga experiencia en el uso tanto del matraz como de ember.js sabe cuál sería potencialmente más fácil de reemplazar con el otro (tal vez sea más fácil reemplazar el manillar con Jinja o viceversa).


Tenga en cuenta que estos dos motores de plantillas están en lugares diferentes. Jinja2 se ejecutará en el lado del servidor, Handlebars se ejecutará en el lado del cliente. Podría usar ambos sin interferencia si lo necesitara.

Pero dicho esto, realmente no hay necesidad de usar plantillas del lado del servidor si tiene un marco de cliente enriquecido como ember.js. En su situación, es probable que el servidor Flask tenga rutas que brinden datos a través de solicitudes ajax al cliente ember.js, por lo que el cliente es realmente el mejor lugar para que se realice la representación de la plantilla.


Como dijo @Miguel, realmente no necesitas Jinja2 si usas ember.js, descubrí que si no quieres renderizar esas plantillas, simplemente devuelve flask.send_file (''tu archivo html aquí'') en vez de devolver el matraz. render_template (''su archivo html aquí''). Ver los documentos para más detalles.


Aunque fundamentalmente estoy de acuerdo con @Miguel y @Ali, varias empresas con las que he trabajado mezclan el modelo RESTful para API con HTML generado por el servidor. [ NOTA: Este no debería ser el caso cuando se usa Ember, pero estoy trabajando con Flask / Jinja2 y Backbone en la base de código de mi cliente actual.]

De hecho, encontré una solución usando Pybars , basada en algunas lecturas de la guía de estilo de Khan Academy :

@app.template_filter("handlebars") def handlebars_filter(context, filepath): source = open( filepath, "r").read().decode(''utf-8'') template = pybars.Compiler().compile( source ) return Markup( u"".join( template( context )))


Puede marcar secciones de código como {% raw %} para decirle a jinja2 que lo ignore. Envuelva su plantilla de handlebars.js en etiquetas sin formato como esta:

{% raw %} <script id="foo-template" type="text/x-handlebars-template"> <p>{{foo}} - {{bar}}</p> </script> {% endraw %}