- Ventajas
Carga el contenido de nuestra applicacion una sola vez al navegador
la navegacion es dentro de la misma pagina
Facil de debuggear
Facil de crear

- Desventajas
No tan compatible con el seo porque solo tiene una sola cabecera
No puede ser un proyecto escalable
- Crea la carpeta del proyecto
- Inicia el repositorio local
	$ git init
- Inicializa npm 
	$ npm init
- Crea las carpetas y archivos principales para tu priyecto
	-> public -> index.html
	-> src    -> pages
						-> routes
						-> styles
						-> utils
						-> templates
						-> index.js
	-> package.json
- babel y webpack ayudan a que nuestro codigo 
	pueda ser interpretado en cualquier navegador

- Agrega los plugins que se utilizaran
		+ @babel/[email protected] //lector de js moderno
		+ [email protected] //interprete de js moderno
		+ [email protected] //ver en vivo los cambios
		+ [email protected] //transformar nuestro html
		+ [email protected] //usar webpack en tiempo real
		+ [email protected] //para correr webpack
		+ --save-dev //para guardar en el local
		
$ npm install @babel/core babel-loader html-webpack-plugin webpack webpack-cli webpack-dev-server --save-dev

- Crea un archivo webpack.config.js
const path = require('path'); //para declarar la ruta raiz
const HtmlWebpackPlugin = require('html-webpack-plugin'); 

module.exports = {
  entry: path.resolve(__dirname, './src/index.js '), //archivo de entrada
  output: {
    path: path.resolve(__dirname, 'dist'), //path de salida
    filename: main.js //archivo creado
  },
  resolve: {
    extensions: ['.js'],
  },
  module: {
    rules: [
      {
        test: /\\.js?$/, //todos los archivos .js
        exclude: /node_modules/, //excepto los de esta carpeta
	      use: { //seran interpretados por este loader
          loader: 'babel-loader'
        }
      }
    ]
  },
  plugins: [  //apoyos
    new HtmlWebpackPlugin(
      {
        inject: true, //declaramos que vamos a inyectar un valor
        template: './public/index.html', //base del archivo
        filename: './index.html', //nombre del archivo final por crear
      }
    )
  ]
}
//se agregan los scripts para correr webpack
"scripts": {
    "build": "webpack --mode production",
    "start": "webpack-dev-server --open --mode development"
  },

//debera existir un archivo public/index.html para que funcione 
//con su html:5 correspondiente