Creación de la función loadInitialRoute
Taller de Creación de Router para Single Page App con JavaScript
Contenido del curso
Juan Esteban Galvis
Diego Valenzuela
Juan Esteban Galvis
Jimmy Buriticá Londoño
Paolo Joaquin Pinto Perez
Ivan Santiago
David Gonzalez
Sebastian Lomas
Darwist Jesus Garcia Torres
Daniel Abanto
Juan Carlos Valencia López
Juan Jose Vega
Juan David Avila Caycedo
Company_adminJorge Humberto Nemogá Pinzón
Luis Guilermo Figueroa Hernandez
Ricardo Celis
ProfesorAlexis Sebastian Ramos Caballero
Juan Carlos Valencia López
Diego Lozano
Carlos Eduardo Diaz Polanco
Daniel Abanto
Juan Jose Vega
Andrea Estefania Blanco Avila
Orlando Manuel Mendoza Vargas
Juan Carlos Valencia López
Christian Perez
Gonzalo Pimentel
por qué PathNameSplit(1) ? si PathNameSplit es un vector string y no una función.
efectivamente es un error, al final del curso el man lo corrige, la forma correcta es pathNameSplit.slice(1)
jajaj si cuando lo corrigió entendí todo jaja
Explicación del funcionamiento del método _loadInitialRoute()
_loadInitialRoute() { // window.location.pathname = "/index.html" const pathNameSplit = window.location.pathname.split('/'); // window.location.pathname.split('/'); Crea un array // (2)["", "index.html"] const pathSegs = pathNameSplit.length > 1 ? pathNameSplit.slice(1) : ''; // pathSegs = ["index.html"] this.loadRoute(...pathSegs); // this.loadRoute("index.html"); }
GRACIAS
¿Por qué le pasa un string vacío si pathNameSplit no tiene más de 1 elemento?
Creo que es asi:
¿Qué quiere decir pathNameSplit(1)? Realmente no lo entiendo, ¿Por qué usa () si pathNameSplit(1), si pathNameSplit no es una funcion?
realmente split devuelve un array entonces el profe quizo colocar fue pathNameSplit[1]
La correccion la hace mas adelante
pathNameSplit.slice(1)
Cuando usar under score al inicio del nombre de una función?
Cuando se quiere privada.
Yo uso una sintaxis propia para hacer metodos privados. Pero solo podría acceder a atributos estáticos y privados, por ende es estático también para la clase pero no lo es para los otros metodos privados y atributos que se declaren con de esta maner
const MyClass = (()=>{ const soyUnAtributoPrivadoConstante = "como estas?"; const soyUnMetodoPrivado = name => { console.log(`hola ${name} ${soyUnAtributoPrivadoConstante}`); }; return class { name; constructor(name = '', apellidos = '') { this.name = name; } soyUnMetodoPublico() { if (this.name !== '') { soyUnMetodoPrivado(this.name); } else { console.log('no tengo nombre'); } } }; })(); const numbreLorena = new MyClass('Lorena'); const sinNombre = new MyClass(); numbreLorena.soyUnMetodoPublico(); sinNombre.soyUnMetodoPublico(); numbreLorena.soyUnMetodoPrivado("Leidy"); // No tienes se pueden ejecutar son privados sinNombre.soyUnMetodoPrivado("Jorge"); // No tienes se pueden ejecutar son privados
En este caso es funcional para el programador, al indicarle que es un método privado. Si te das cuenta quien lo ejecuta es el contructor de la clase. No debería ser usado por el usuario dado que es un método de inicialización de la rutas para la clase Routes.
nombrar los metodos con _ al inicio tiene algun nombre?, asi como "Camel case".
exacto, es una buena práctica
Hola lgfh, si no mal recuerdo el nombre de la nomenclatura es snake case, saludos.
la funcion no deberia de estar dentro de la clase?
Si debe de estar dentro de la clase, para que en el constructor se pueda llamar correctamente
class Router { constructor(routes) { this.routes = routes; this._loadInitialRoute(); } } _loadInitialRoute() { const pathNameSplit = window.location.pathname.split('/'); const pathSegs = pathNameSplit.length > 1 ? pathNameSplit.slice(1): ''; this.loadRoute(...pathSegs) }
No entendi la explicacion de this.loadRoute(...pathSegs) ¿Por que se coloca '...' ?
Que buena explicación, gracias.
no hay forma dehacerlo sin this ?
Lo que pasa es que el profesor está haciendo en lo enrutador utilizando POO, claro que se puede hacer de forma que no se use POO pero habría que reestructurar un poco el código para que se adapte al paradigma que se utilizará para crear el algoritmo
Tengo la duda si es que tengo un html grandisimo, lo voy a poner en en el objeto donde dice template?
Quería saber que hacia paso por paso y jugando con la consola:
_loadInitialRoute(){ const pathNameSplit = window.location.pathname.split('/'); //retorna array despues de quitar el / ["blah.com", "location"] const pathSegs = pathNameSplit.length > 1 ? pathNameSplit.slice(1) : ''; //revisa si el array tiene mas de un elemento y regresa el segundo ["location"] this.loadRoute(...pathSegs) }```
split = dividir, le quita el / a la ruta