node.js - tiempo - nodejs mongodb
Diseños en Express 3 y EJS (3)
En la versión 3 de Express se eliminaron algunas características:
the concept of a "layout" (template engine specific now)
partial() (template engine specific)
Registro de cambios: https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x
Se puede cambiar el valor partial()
para la característica propia de EJS denominada include
, pero ¿cuál es la alternativa para los diseños?
Luché con esto también. Entonces puse un proyecto github con un ejemplo para ejs y dustjs.
https://github.com/chovy/express-template-demo
No estoy seguro de la diferencia entre una inclusión parcial y una inclusión, no es necesario que pase los datos explícitamente a una inclusión. No estoy seguro de por qué querrías un parcial.
Pero para un diseño, solo especificas un bloque como este:
//layout.ejs
<html>
<%- body %>
</html>
//page1.ejs
<% layout(''layout'') -%>
This is loaded from page 1 and overrides <%- body %> in the layout.ejs.
Si alguien quiere agregar más ejemplos, simplemente envíe una solicitud de extracción.
Parece que desde Express 3, la función de diseño está delegada a la responsabilidad de los motores de plantillas. Puede usar ejs-locals ( https://github.com/RandomEtc/ejs-locals ) para el diseño.
Instalar ejs-locals
npm install ejs-locals --save
Use ejs-locals como su motor de aplicaciones en app.js
var express = require(''express'');
var engine = require(''ejs-locals'');
...
app.engine(''ejs'', engine);
app.set(''view engine'', ''ejs'');
Ahora puedes usar el diseño
layout.ejs
<body>
<%- body %>
</body>
index.ejs
<% layout(''layout'') -%>
<div class="container">
<div class="jumbotron">
...
Otra opción es usar Express-partials ( https://github.com/publicclass/express-partials ). Los dos hacen lo mismo, así que es tu elección.
Puede imitar los diseños de EJS en Express 2.x con la opción "incluir". Vea mi respuesta aquí:
https://.com/a/12477536/446681