Anuncios

Bienvenidos sean a este post, hoy veremos como implementar a Model de MVC.

Anuncios

Cuando vimos nuestro primer proyecto que era para calcular los valores fibonacci del MVC solo implementamos la parte de vistas y controladores pero no la de modelos, en este post veremos porque la importancia de implementarlo para llevar un mejor control del almacenamiento de datos, para ello usaremos el codigo del post anterior, sino lo poseen les dejo un link para descargar el archivo con todos los archivos del proyecto:

Anuncios

Extraigan el directorio en la pc donde van a trabajar, una vez realizado esto nuestro siguiente paso sera crear un directorio llamado models en el directorio notas o raiz del proyecto, y ahi crearemos un archivo con el nombre de Notas.mjs y le agregaremos el siguiente codigo:

models/Notas.mjs

const _nota_clave = Symbol('clave');
const _nota_titulo = Symbol('titulo');
const _nota_cuerpo = Symbol('cuerpo');

export class Nota {
        constructor(clave, titulo, cuerpo) {
                this[_nota_clave] = clave;
                this[_nota_titulo] = titulo;
                this[_nota_cuerpo] = cuerpo;
        }

        get clave() { return this[_nota_clave]; }
        get titulo() { return this[_nota_titulo]; }
        set titulo(nuevo) { this[_nota_titulo] = nuevo; }
        get cuerpo() { return this[_nota_cuerpo]; }
        set cuerpo(nuevo) { this[_nota_cuerpo] = nuevo; }
}

export class AlmacenNotasAbs {
        async cerrar() {}
        async create(clave, titulo, cuerpo) {}
        async read(clave) {}
        async update(clave, titulo, cuerpo) {}
        async delete(clave) {}
        async listarClaves() {}
        async contar() {}
}
Anuncios
Anuncios

Primero definiremos tres variables que usaremos internamente para la clave, el titulo y el cuerpo de cada nota, observen que usamos a la clase Symbol, esta es una caracteristica de ES2015 muy interesante porque nos permite establecer como claves a campos privados de un objeto, esto es principalmente porque mediante esta clase cada una de las creadas sera unica e irrepetible teniendo su propia ubicacion en memoria, despues tendremos dos clases y podremos exportar a ambas pero comencemos con la primera.

Anuncios
Anuncios

La primera clase se llamara Nota y sera la encargada de crear cada una de nuestras notas, observen que lo primero que tenemos es un constructor para establecer los valores de las tres variables anteriores mediante los valores que le pasemos como argumento y en todos los casos usaremos a this para que estos valores solo afecten a los del objeto creado de esta clase, es decir cada nota, despues tendremos metodos get y set para recuperar y establecer los valores establecidos con el constructor, el unico que no podemos modificar es la clave, pasemos a la siguiente clase.

Anuncios
Anuncios

La segunda sera la encargada principalmente del CRUD, las funciones encargadas de manejar los datos, ya sea para su creacion, lectura, actualizacion y eliminacion (deje los nombres en ingles para que coincida con las siglas pero no es obligatorio hacerlo asi), y a su vez tenemos algunas funciones mas para poder realizar otras tareas pero por el momento no haran nada porque no poseen ningun instruccion, lo que en otros lenguajes conocemos como prototipos, vamos a hacer una prueba basica para ver como trabaja para ello en el directorio models ejecutaremos el interprete sin ningun archivo:

tinchicus@dbn001vrt:~/notas/models$ node
Welcome to Node.js v16.20.2.
Type ".help" for more information.
>
Anuncios

Dentro de nuestro interprete ejecutaremos la siguiente linea:

> const { Nota } = await import("./Notas.mjs")
Anuncios

Esto importara nuestra clase para poder utilizarlo, nuestro siguiente paso sera crear una nueva nota y para ello ingresaremos la siguiente linea:

> let nota = new Nota('id0001','Primera Nota','Texto de prueba')
Anuncios

En este caso pasamos los tres datos para crear la nueva nota, para ver su valor simplemente llamemos al objeto creado anteriormente:

> nota
Nota {
  [Symbol(clave)]: 'id0001',
  [Symbol(titulo)]: 'Primera Nota',
  [Symbol(cuerpo)]: 'Texto de prueba'
}
>
Anuncios

Ahora ejecuten la siguiente linea:

> nota[Symbol('clave')] = 'id0002'
Anuncios

En teoria esto deberia modificar la clave de nuestra «nota» pero si tomamos lo que mencionamos de Symbol deberia suceder otra cosa, llamemos nuevamente al objeto para ver que sucedio:

> nota
Nota {
  [Symbol(clave)]: 'id0001',
  [Symbol(titulo)]: 'Primera Nota',
  [Symbol(cuerpo)]: 'Texto de prueba',
  [Symbol(clave)]: 'id0002'
}
>
Anuncios

Observen que agrego un nuevo valor de clave, pero esto es solo para verificar el funcionamiento de la clase Nota, en el proximo post veremos como implementar a CRUD para nuestra aplicacion, antes de finalizar les dejo un archivo con los codigos del proyecto y los trabajado en este post:

Anuncios

En resumen, hoy hemos visto como implementar los modelos de MVC, para que y con que utilidad, despues hicimos las modificaciones necesarias para poder implementarlos y por ultimo hicimos una prueba simple para verificar su funcionamiento, espero les sea de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50