<commit_before><!---
Ejemplos de inserción de videos

<video class="stretch" controls><source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4"></video>
<iframe width="560" height="315" src="https://www.youtube.com/embed/3RBq-WlL4cU" frameborder="0" allowfullscreen></iframe>

slide: data-background="#ff0000" 
element: class="fragment" data-fragment-index="1"
-->

## HLC - Fullstack
---
![HLC-Fullstack](http://jamj2000.github.io/hlc-fullstack/hlc-fullstack.png)
<small> 2018-19 - IES <NAME> - Écija - Spain </small>


## Backend con NodeJS y Express

[![cc-by-sa](http://jamj2000.github.io/hlc-fullstack/cc-by-sa.png)](http://creativecommons.org/licenses/by-sa/4.0/)


## Índice
--- 
- ### Introducción
- ### Node.js
- ### El servidor web
- ### Accediendo a la BD
- ### Ajustes finales
- ### Comprobando la API

<!--- Note: Nota a pie de página. -->



## Introducción


### En esta Unidad aprenderemos a

- Instalar y configurar el entorno de desarrollo.
- Gestionar las dependencias mediante el uso del gestor de paquetes.
- Elaborar una API RESTful.
- Hacer peticiones a la API desde distintos clientes.
- Definir el modelo de datos y acceder a la base de datos desde el código de la aplicación.


### Aplicación de ejemplo

- Existe una aplicación funcional de ejemplo.
- El código está disponible en [`https://github.com/jamj2000/tienda0`](https://github.com/jamj2000/tienda0)
- Los archivos usados para el backend son:
  - **package.json**
  - **server.js**
  - **models.js**
  - **routes.js**
  - **config.js**



## Node.js

![Node](assets/node.png)


### Motor Javascript V8

![v8 engine](assets/v8-engine.png)

Node.js® es un entorno de ejecución para JavaScript construido con el **motor de JavaScript V8 de Chrome**.


### Instalación

**Entorno de ejecución**

```bash
sudo  apt  install  nodejs
```

**Gestor de paquetes**
```bash
sudo  apt  install  npm
```

Note: **npm** =  **N**ode **P**ackage **M**anager


### Inicio de un proyecto

```bash
mkdir  nombre-proyecto
cd     nombre-proyecto

npm  init  -y 
```

Note: La opción -y (--yes) de `npm init` crea un archivo **package.json** con opciones por defecto, sin hacer preguntas al usuario.


### Archivo package.json

```json
{
  "name": "hola",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.4"
  },
  "devDependencies": {
    "nodemon": "^1.18.4"
  }
}
```


### Instalación de módulos

```bash
     npm  install  express  -S  
     npm  install  nodemon  -D  
sudo npm  install  yarn     -g  
```

o de forma más corta

```bash
     npm  i  express  -S  
     npm  i  nodemon  -D  
sudo npm  i  yarn     -g
```


### Opciones

### -S,  --save
- dependencia de aplicación. Añade a archivo package.json.
- En las últimas versiones de `npm` no es necesaria esta opción.

### -D,  --save-dev
- dependencia de desarrollo. Añade a archivo package.json.

### -g,  --global
- instala en el sistema de forma global. Se usa normalmente para paquetes ejecutables.<commit_msg>Update diapositivas.md<commit_after><!---
Ejemplos de inserción de videos

<video class="stretch" controls><source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4"></video>
<iframe width="560" height="315" src="https://www.youtube.com/embed/3RBq-WlL4cU" frameborder="0" allowfullscreen></iframe>

slide: data-background="#ff0000" 
element: class="fragment" data-fragment-index="1"
-->

## HLC - Fullstack
---
![HLC-Fullstack](http://jamj2000.github.io/hlc-fullstack/hlc-fullstack.png)
<small> 2018-19 - IES <NAME> - Écija - Spain </small>


## Backend con NodeJS y Express

[![cc-by-sa](http://jamj2000.github.io/hlc-fullstack/cc-by-sa.png)](http://creativecommons.org/licenses/by-sa/4.0/)


## Índice
--- 
- ### Introducción
- ### Node.js
- ### El servidor web
- ### Accediendo a la BD
- ### Ajustes finales
- ### Comprobando la API

<!--- Note: Nota a pie de página. -->



## Introducción


### En esta Unidad aprenderemos a

- Instalar y configurar el entorno de desarrollo.
- Gestionar las dependencias mediante el uso del gestor de paquetes.
- Elaborar una API RESTful.
- Hacer peticiones a la API desde distintos clientes.
- Definir el modelo de datos y acceder a la base de datos desde el código de la aplicación.


### Aplicación de ejemplo

- Existe una aplicación funcional de ejemplo.
- El código está disponible en [`https://github.com/jamj2000/tienda0`](https://github.com/jamj2000/tienda0)
- Los archivos usados para el backend son:
  - **package.json**
  - **server.js**
  - **models.js**
  - **routes.js**
  - **config.js**



## Node.js

![Node](assets/node.png)


### Motor Javascript V8

![v8 engine](assets/v8-engine.png)

Node.js® es un entorno de ejecución para JavaScript construido con el **motor de JavaScript V8 de Chrome**.


### Instalación

**Entorno de ejecución**

```bash
sudo  apt  install  nodejs
```

**Gestor de paquetes**
```bash
sudo  apt  install  npm
```

Note: **npm** =  **N**ode **P**ackage **M**anager


### Inicio de un proyecto

```bash
mkdir  nombre-proyecto
cd     nombre-proyecto

npm  init  -y 
```

Note: La opción -y (--yes) de `npm init` crea un archivo **package.json** con opciones por defecto, sin hacer preguntas al usuario.


### Archivo package.json

```json
{
  "name": "hola",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.4"
  },
  "devDependencies": {
    "nodemon": "^1.18.4"
  }
}
```


### Instalación de módulos

```bash
     npm  install  express  -S  
     npm  install  nodemon  -D  
sudo npm  install  yarn     -g  
```

o de forma más corta

```bash
     npm  i  express  -S  
     npm  i  nodemon  -D  
sudo npm  i  yarn     -g
```


### Opciones

**-S,  --save**
- dependencia de aplicación. Añade a archivo `package.json`.
- En las últimas versiones de `npm` no es necesaria esta opción.

**-D,  --save-dev**
- dependencia de desarrollo. Añade a archivo `package.json`.

**-g,  --global**
- instala en el sistema de forma global. Se usa normalmente para paquetes ejecutables.
{'fraction_non_alphanumeric': 0.16352996995097263, 'fraction_numerical': 0.018345721967420528, 'mean_word_length': 3.261455525606469, 'pattern_counts': {'":': 26, '<': 23, '<?xml version=': 0, '>': 23, 'https://': 6, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4602679', 'n_tokens_mistral': 2529, 'n_tokens_neox': 2356, 'n_words': 656}