![Entornos de desarrollo](http://jamj2000.github.io/hlc-fullstack/hlc-fullstack.png)
[![cc-by-sa](http://jamj2000.github.io/hlc-fullstack/cc-by-sa.png)](http://creativecommons.org/licenses/by-sa/4.0/)
IES Luis Vélez de Guevara - Écija - Spain
# Índice
#### [Apuntes](#apuntes)
#### [Cuestiones](#cuestiones)
#### [Prácticas](#practicas)
#[Apuntes](#indice)
1. Elabora los apuntes de esta Unidad y guárdalos en GitHub en un repositorio llamado 'Apuntes_HLC_Fullstack'.
#[Cuestiones](#indice)
1. Instala `nodejs` y `npm`.
1. ¿Qué significan las siglas `npm`?
1. Inicia `node` y ejecuta las siguientes métodos del módulo `os`:
- `os.` y pulsamos tabulador 2 veces
- `os.type()`
- `os.platform()`
- `os.arch()`
- `os.release()`
- `os.cpus()`
- `os.totalmem()`
- `os.freemem()`
- `os.uptime()`
- `os.networkInterfaces()`
- `os.userInfo()`
1. Inicia `node` y ejecuta las siguientes métodos del módulo `process`:
- `process.` y pulsamos tabulador 2 veces
- `process.env`
- `procces.pid`
- `procces.ppid`
- `procces.uptime()`
1. ¿Qué pasos debemos seguir para iniciar un nuevo proyecto de NodeJS? Pon un ejemplo.
1. ¿Cómo instalamos módulos para un proyecto de NodeJS? Pon un ejemplo.
1. Para que sirve el archivo `package.json`?
1. Explica qué hacen las siguientes sentencias:
```node
const express = require('express');
const mongoose = require('mongoose');
const routes = require('./routes');
const config = require('./config');
```
1. Explica qué hace la siguiente sentencia:
```node
module.exports = router;
```
1. Explica qué hace la siguiente sentencia:
```node
module.exports = {
Cliente,
Articulo
};
```
1. Explica qué hace la siguiente sentencia:
```node
module.exports = {
ip : process.env.HOST || '0.0.0.0',
port : process.env.PORT || 3000,
db_uri : process.env.DB_URI || 'mongodb://localhost:27017/tienda'
};
```
1. Busca información en Internet acerca del Middleware para Express. ¿Cuál es la función del middleware? ¿Qué módulos existen para Express?
1. ¿Para que se utiliza el método app.use() de express?
1. Pon un ejemplo de uso de app.use (express.static( )).
1. Pon un ejemplo de uso de app.listen ( ).
1. ¿Para que se utilizan los métodos router.get(), router.post(), router.put() y router.delete() de express?
1. Pon un ejemplo de uso de router.get ().
1. Pon un ejemplo de uso de mongoose.connect ().
#[Prácticas](#indice)
Las prácticas de este tema y los siguientes están destinadas a que el alumno/a desarrolle una aplicación fullstack con las características que se piden.
- La aplicación se realizará enteramente en Javascript, tanto en el backend como en el frontend, pudiéndose utilizar también HTML, CSS y los frameworks relacionados que se consideren oportunos.
- La aplicación permitirá las 4 operaciones CRUD sobre la base de datos.
- Cada alumno/a realizará su propia aplicación de forma independiente, eligiendo cada uno una temática distinta. Ejemplos:
- Gestión de un instituto de secundaria.
- Gestión de un taller.
- Gestión de jardines.
- etc
- Se proponen las siguientes temáticas:
1. Almacen de productos
2. Taller mecánico
3. Mercería
4. Vivero de plantas
5. Mensajería
6. Meteorología
7. Concesionario de coches
8. Gestión del olivar
9. Supermercado
10. Instituto de educación secundaria
11. Hospital
12. Ganadería
13. Armería
## Práctica 1
**Diseño de la Base de Datos**.
- Deberás elegir el nombre de la base de datos.
- Deberás crear al menos 2 colecciones, cada una con un mínimo de 4 campos.
- Inserta al menos 10 documentos en cada colección.
- Realiza las pruebas oportunas para comprobar el correcto funcionamiento.
## Práctica 2
**Servicio API RESTful**
- Crea un servidor que atienda las peticiones de los clientes en el puerto 3000.
- Al iniciar el servidor, esté deberá realizar la conexión a la base de datos de la práctica anterior.
- Define los modelos de datos.
- Define las rutas necesarias para acceder a los datos.
- El servicio de datos se realizará en formato JSON.
- Realiza las pruebas necesarias (con postman, curl o similar) para comprobar la correcta funcionalidad de la API.