gitextract_2njoxt7a/ ├── 1-instalacion-data-binding/ │ ├── index.html │ └── js/ │ └── main.js ├── 10-transiciones/ │ ├── index.html │ └── main.js ├── 11-ajax-vue-resource/ │ ├── index.html │ └── js/ │ └── main.js ├── 12-ajax-axios/ │ ├── index.html │ └── js/ │ └── main.js ├── 13-components-intro/ │ ├── index.html │ └── js/ │ └── main.js ├── 14-components-templates/ │ ├── index.html │ └── js/ │ └── main.js ├── 15-components-props/ │ ├── index.html │ └── js/ │ └── main.js ├── 16-prop-validation/ │ ├── index.html │ └── js/ │ └── main.js ├── 17-slots-named-slots/ │ ├── css/ │ │ └── main.css │ ├── index.html │ └── js/ │ └── main.js ├── 18-scoped-slots/ │ ├── css/ │ │ └── main.css │ ├── index.html │ └── js/ │ └── main.js ├── 19-custom-events/ │ ├── css/ │ │ └── main.css │ ├── index.html │ └── js/ │ └── main.js ├── 2-directivas-incluidas/ │ ├── index.html │ └── js/ │ └── main.js ├── 20-component-communication/ │ ├── css/ │ │ └── main.css │ ├── index.html │ └── js/ │ └── main.js ├── 21-components-inside-components/ │ ├── index.html │ └── js/ │ └── main.js ├── 22-dynamic-components/ │ ├── index.html │ └── js/ │ └── main.js ├── 23-custom-input-components/ │ ├── index.html │ └── js/ │ └── main.js ├── 24-ejercicio-components/ │ ├── finalizado/ │ │ ├── css/ │ │ │ └── main.css │ │ ├── index.html │ │ └── js/ │ │ └── main.js │ └── inicio/ │ ├── css/ │ │ └── main.css │ ├── index.html │ └── js/ │ └── main.js ├── 25-vue-cli/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ └── main.js │ └── webpack.config.js ├── 26-single-file-components/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Persona.vue │ │ └── main.js │ └── webpack.config.js ├── 27-render-function/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Elemento.vue │ │ └── main.js │ └── webpack.config.js ├── 28-hot-reloading/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Tareas.vue │ │ └── main.js │ └── webpack.config.js ├── 29-scoped-css/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Tareas.vue │ │ └── main.js │ └── webpack.config.js ├── 3-renderizado-de-listas/ │ ├── index.html │ └── js/ │ └── main.js ├── 30-css-modules/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ └── main.js │ └── webpack.config.js ├── 31-shared-state/ │ ├── index.html │ └── js/ │ └── main.js ├── 32-vuex-central-store/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Contador.vue │ │ ├── main.js │ │ └── store/ │ │ └── store.js │ └── webpack.config.js ├── 33-vuex-state/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── main.js │ │ └── store/ │ │ └── store.js │ └── webpack.config.js ├── 34-vuex-getters/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── Tareas.vue │ │ ├── components/ │ │ │ └── TareasRestantes.vue │ │ ├── main.js │ │ └── store/ │ │ └── store.js │ └── webpack.config.js ├── 35-vuex-mutations/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Contador.vue │ │ ├── main.js │ │ └── store/ │ │ └── store.js │ └── webpack.config.js ├── 36-vuex-actions/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── Contador.vue │ │ ├── main.js │ │ └── store/ │ │ └── store.js │ └── webpack.config.js ├── 37-vuex-modules/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Carro.vue │ │ │ └── Productos.vue │ │ ├── main.js │ │ └── store/ │ │ ├── modules/ │ │ │ └── productos.js │ │ └── store.js │ └── webpack.config.js ├── 38-vuex-structure/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Carro.vue │ │ │ └── Productos.vue │ │ ├── main.js │ │ └── store/ │ │ ├── getters.js │ │ ├── modules/ │ │ │ └── productos.js │ │ ├── mutations.js │ │ └── store.js │ └── webpack.config.js ├── 4-vue-devtools/ │ ├── index.html │ └── js/ │ └── main.js ├── 40-vue-router-intro/ │ ├── index.html │ └── js/ │ └── main.js ├── 41-vue-router-components/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ └── Home.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 42-vue-router-active-links/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ └── Home.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 43-vue-programmatic-nav/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ └── Home.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 44-vue-router-dynamic-routes/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Home.vue │ │ │ └── Usuario.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 45-vue-router-reacting/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Home.vue │ │ │ └── Usuario.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 46-vue-router-nested-routes/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Equipo.vue │ │ │ ├── EquipoJuan.vue │ │ │ └── Home.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 47-vue-router-nested-nav/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 48-vue-router-named-routes/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 49-vue-router-named-views/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 5-eventos/ │ ├── index.html │ └── js/ │ └── main.js ├── 50-vue-router-redirect/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 51-vue-router-passing-props/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 52-vue-router-history-mode/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ └── routes.js │ └── webpack.config.js ├── 53-vue-router-global-guard/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ ├── routes.js │ │ └── store.js │ └── webpack.config.js ├── 54-vue-router-route-guard/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ ├── routes.js │ │ └── store.js │ └── webpack.config.js ├── 55-vue-router-component-guard/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ ├── routes.js │ │ └── store.js │ └── webpack.config.js ├── 56-vue-router-meta-field/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ ├── routes.js │ │ └── store.js │ └── webpack.config.js ├── 57-vue-router-transitions/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ ├── routes.js │ │ └── store.js │ └── webpack.config.js ├── 58-vue-router-data-fetch/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Contacto.vue │ │ │ ├── Equipo.vue │ │ │ ├── Home.vue │ │ │ ├── NoEncontrado.vue │ │ │ ├── Usuario.vue │ │ │ ├── UsuarioBio.vue │ │ │ └── UsuarioFotos.vue │ │ ├── main.js │ │ ├── routes.js │ │ └── store.js │ └── webpack.config.js ├── 59-vue-router-srcoll/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Bio.vue │ │ │ └── Info.vue │ │ └── main.js │ └── webpack.config.js ├── 6-propiedades-computadas/ │ ├── index.html │ └── js/ │ └── main.js ├── 60-vue-router-lazy-load/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── Bio.vue │ │ │ └── Info.vue │ │ └── main.js │ └── webpack.config.js ├── 61-vue-directive-hooks/ │ ├── index.html │ └── js/ │ └── main.js ├── 62-vue-directive-object-literals/ │ ├── index.html │ └── js/ │ └── main.js ├── 64-mixins-intro/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── main.js │ │ └── mixins.js │ └── webpack.config.js ├── 65-mixins-merge/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── main.js │ │ └── mixins.js │ └── webpack.config.js ├── 66-global-mixins/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ ├── main.js │ │ └── mixins.js │ └── webpack.config.js ├── 67-vue-filters/ │ ├── .babelrc │ ├── README.md │ ├── index.html │ ├── package.json │ ├── src/ │ │ ├── App.vue │ │ └── main.js │ └── webpack.config.js ├── 68-form-input-basic/ │ └── index.html ├── 69-form-value-bindings/ │ └── index.html ├── 7-filtros/ │ ├── index.html │ └── js/ │ └── main.js ├── 70-form-input-modifiers/ │ └── index.html ├── 71-firebase-agregar/ │ └── index.html ├── 72-firebase-leer/ │ └── index.html ├── 73-firebase-actualizar/ │ └── index.html ├── 74-firebase-eliminar/ │ └── index.html ├── 75-firebase-transactions/ │ └── index.html ├── 76-firebase-push-agregar/ │ └── index.html ├── 77-firebase-listas-eventos/ │ └── index.html ├── 78-firebase-ordenar/ │ └── index.html ├── 79-firebase-filtrar/ │ └── index.html ├── 8-instancia-vue/ │ ├── index.html │ └── js/ │ └── main.js ├── 9-data-binding-atributos-clases/ │ ├── index.html │ └── js/ │ └── main.js └── README.md