4.1 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
5895f700f9fc0f352b528e63 | Configura un motor de plantillas | 2 | 301564 | set-up-a-template-engine |
--description--
Trabajar en estos desafíos implica escribir tu código usando uno de los siguientes métodos:
- Clona este repositorio de GitHub y completa estos desafíos localmente.
- Usa nuestro proyecto inicial de Replit para completar estos desafíos.
- Utiliza un constructor de sitios de tu elección para completar el proyecto. Asegúrate de incorporar todos los archivos de nuestro repositorio de GitHub.
Cuando hayas terminado, asegúrate de que un demo funcional de tu proyecto esté alojado en algún lugar público. Luego, envía la URL en el campo Solution Link
.
Un motor de plantillas te permite usar plantillas estáticas (como las escritas en Pug) en tu aplicación. En tiempo de ejecución, el motor de plantillas reemplaza variables en un archivo de plantilla con valores reales que pueden ser suministrados por tu servidor. Luego transforma la plantilla en un archivo HTML estático que se envía al cliente. Este enfoque hace más fácil el diseño de una página HTML y permite mostrar variables en la página sin necesidad de hacer una llamada API desde el cliente.
Añade pug@~3.0.0
como una dependencia en tu archivo package.json
.
Express necesita saber qué motor de plantillas está utilizando. Utilizaremos el método set
para asignar pug
como el valor de view engine
de la propiedad: app.set('view engine', 'pug')
La página no se cargará hasta que procese correctamente el archivo de índice en el directorio views/pug
.
Cambia el argumento de la sentencia res.render()
en la ruta /
para que sea la ruta del archivo al directorio views/pug
. La ruta puede ser una ruta relativa (relativa a las vistas), o una ruta absoluta, y no requiere una extensión de archivo.
Si todo ha ido según lo previsto, ¡la página de inicio de tu aplicación dejará de mostrar el mensaje "Pug template is not defined.
" y ahora mostrará un mensaje indicando que has renderizado con éxito la plantilla Pug!
Envía tu página cuando creas que lo has hecho bien. Si te encuentras con errores, puedes revisar el proyecto completado hasta este punto aquí.
--hints--
Pug debe ser una dependencia.
(getUserInput) =>
$.get(getUserInput('url') + '/_api/package.json').then(
(data) => {
var packJson = JSON.parse(data);
assert.property(
packJson.dependencies,
'pug',
'Your project should list "pug" as a dependency'
);
},
(xhr) => {
throw new Error(xhr.statusText);
}
);
El motor de vistas debe ser Pug.
(getUserInput) =>
$.get(getUserInput('url') + '/_api/server.js').then(
(data) => {
assert.match(
data,
/('|")view engine('|"),( |)('|")pug('|")/gi,
'Your project should set Pug as a view engine'
);
},
(xhr) => {
throw new Error(xhr.statusText);
}
);
Utiliza el método de ExpressJS correcto para renderizar la página de índice de la respuesta.
(getUserInput) =>
$.get(getUserInput('url') + '/').then(
(data) => {
assert.match(
data,
/FCC Advanced Node and Express/gi,
'You successfully rendered the Pug template!'
);
},
(xhr) => {
throw new Error(xhr.statusText);
}
);
Pug debe estar funcionando.
(getUserInput) =>
$.get(getUserInput('url') + '/').then(
(data) => {
assert.match(
data,
/pug-success-message/gi,
'Your projects home page should now be rendered by pug with the projects .pug file unaltered'
);
},
(xhr) => {
throw new Error(xhr.statusText);
}
);
--solutions--
/**
Backend challenges don't need solutions,
because they would need to be tested against a full working project.
Please check our contributing guidelines to learn more.
*/