Componentes
Cómo reusar código
Como programadores sabemos que copiar y pegar código es nuetro pan de cada día y por eso simplificamos nuestro trabajo con librerías, módulos y componentes
Un componente es un grupo de código JS y etiquetas HTML que realiza una sola función y que puede ser copiado o incluido junto con otros componentes para simplificar el diseño de páginas web, por ejemplo:
<!-- mywebpage.html -->
<!DOCTYPE html>
<html>
<head>
<title>My Web App</title>
</head>
<body>
<header>
My Company here
</header>
<content>
:
Content here
:
</content>
<footer>
@contact us
@follow us
</footer>
</body>
</html>
Inclusión de componentes
Al diseñar varias páginas nos damos cuenta que el mismo encabezado y pié de página es repetido en cada una de ellas. Y si agregamos un nuevo estilo o una nueva imagen al encabezado (como un logo) entonces tendremos que ir a cada una de las páginas y cambiarlo, haciendo el trabajo tedioso. Vamos a simplificarlo con componentes:
<%- include('head') %>
<content>
:
Content here
:
</content>
<%- include('foot') %>
Y los componentes serán guardados en archivos head.ejs
y foot.ejs
(extensión .ejs para identificar componentes)
<!-- head.ejs -->
<!DOCTYPE html>
<html>
<head>
<title>My Web App</title>
</head>
<body>
<header>
My Company here
</header>
<!-- foot.ejs -->
<footer>
@contact us
@follow us
</footer>
</body>
</html>
Datos en componentes
Tambien podemos usar datos en componentes, de esta manera se podrán actualizar cuando los datos cambian y el componente se podrá reutilizar en diferentes páginas. Por ejemplo, creamos un componente employees.ejs
que muestra la lista de registros, asi:
<!-- employees.ejs -->
<table>
<tr><th>Id</th><th>Name</th><th>Phone</th><th>Salary</th></tr>
<% if (list.length > 0) { %>
<% for(item of list){ %>
<tr>
<td><%=item.id%></td>
<td><a href="/employee/<%=item.id%>"><%=item.name%></a></td>
<td><%=item.phone%></td>
<td><%=item.salary%></td>
</tr>
<% } %>
<% } else { %>
<tr>
<td colspan="4">Employees not found</td>
</tr>
<% } %>
</table>
Y lo usamos así, pasando los datos al componente:
<%- include('head') %>
<content>
<%- include('employees', {list}) %>
</content>
<%- include('foot') %>
Y nuestra vida como programador se hace mucho más fácil