Aplicación Modelo/ Vista/ Controlador con Node.js, Express, Mysql, Bootstrap
1 Sobre la aplicación
Para probar y
adquirir conocimientos me he propuesto realizar una aplicación con
Node.js para afianzar cosas que no me quedaban claras.
Si bien, existen
muchos materiales y maneras de estructurar las aplicaciones Node.js,
he utilizado como base una estructura sugerida por el tutorial
http://teknosains.com/i/contoh-modular-nodejs-dan-bootstrap-source-code-inside
1.1 Características implementadas
La aplicación
cuenta con las siguientes funciones, he agregado funcionalidades y
actualmente sigue en desarrollo:
Acceso por
contraseñas a la aplicación.
- Módulo DashBoard.
- ABM de usuarios.
- ABM de grupos.
- ABM de módulos.
- ABM de vinculación de módulos y grupos.
- Módulo ejemplo de APIS por método GET
- Implementación de permisos para accesos a módulos.Bajar el código desde https://github.com/freelanceparaguay/nodeMVCExample
1.2 Para implementar
Existen detalles que
no se han trabajado, los archivos podrán servir de ejemplos para
cualquiera que desee continuarlos.
- Cambio de contraseñas de usuarios utilizando cuentas de correos electrónicos.
- Activación y desactivación de usuarios.
- Control de fortaleza de contrseñas.
- Actualmente no se trabajó en los procesos específicos de borrado en cascada de tablas cabeceras y detalles.
2 Estructura del código
La aplicación
cuenta con el siguiente modelo de directorios:
- Layout: directorio con templates que se encuentran en todos los modulos. Aquí se guardan los típicos header, footer, sidebar para dibujarlos en el documento final.
- Lib: en sub directorios se encuentran los modulos. Por cada módulo que desee agregar se deberá crear un sub directorio.
- Public: se encuentran los estilos, archivos javascripts y fuentes que son utilizadas por los archivos html.
3 Estructura interna de los módulos
Al momento de
realizar altas, bajas y modificaciones. Las mismas son divididas en
acciones:
- Save.
- Edit.
- Delete.
La estructura que
siguen los archivos se refleja en la siguiente tabla:
Modelo/ Model | ||
nodeDataBase.sql | : | Base de datos estructurada. |
View/ Vista, son los archivos que se encuentran dentro de cada módulo en el directorio /lib | ||
index.ejs | : | Implementa la vista con la estructura del html principal. |
modal_index.ejs | : | Implementa la vista de una ventana modal para edición de datos. Atención!, los nombres de campos se encuentran relacionados con los scripts en /public/nombreModulo_clientScripts.js |
Controlador/ Controller, son los archivos que se encuentran en el directorio /lib | ||
index.js | : | contiene las rutas y lógica del módulo. El que hacer cuando llega una petición. |
process.js | : | tiene implementada la lógica de los casos. Pequeñas funciones utilizadas en el index.js principal del módulo. |
Otros archivos | ||
/Public/js/profiles_clientScripts.js | : | Funciones de control de campos y otras cosas. Los nombres de campos de los formularios se encuentran relacionados con los scripts presentes en archivos JavaScript del lado del cliente. Estos siguen la modalidad de nombre de módulo seguido por _clientScripts.js |
pass.js | : | Implementación de funciones de encriptación. Este archivo se encuentra en la raíz del proyecto. |
4 Flujo de una llamada típica.
- Cliente con navegador invoca a la página por medio de método GET.
- Servidor recibe la url solicitada y la procesa por medio de las funciones app.get() en index.js.
- En index.js se llama a process.js para recuperar datos de la BD utilizando getRowsServer().
- Obtenidos los datos, desde el archivo index.js se llama a la función render() para dibujar la vista y los datos según la plantilla de index.ejs. Index.ejs, contiene los layouts header.ejs, sidebar.ejs y footer.ejs.
- El cliente recibe la respuesta con la página desplegada y los datos.
5 Módulo de administración de clientes
El
módulo deberá mantener al día los clientes, asignar perfiles y
administrar el acceso a las urls del menú.
El
módulo deberá poder ser implementado en distintas aplicaciones en
forma reutilizable.
Se
deberá poder hacer mantenimiento de los usuarios que utilizan la
aplicación, los usuarios se encuentran agrupados en grupos. Los
grupos se encuentran relacionados con los módulos del sistema.
6 Preparar la base de datos para la aplicación
Teniendo instalado Mysql procedemos de la siguiente forma.
6.1 Pasos
para crear base de datos Mysql
mysqladmin
create
nodeDataBase
-p
mysql
-u root -p
SET
PASSWORD=PASSWORD('
miclave
');
CREATE
DATABASE
nodeDataBase
;
GRANT
ALL ON
nodeDataBase
.*
to usuario@localhost IDENTIFIED BY '
miclave
';
*
Verificar las reglas del firewall.
La
aplicación utiliza el puerto 3720.
7 Fuentes de información
Template de Bootstrap sb-admin | http://startbootstrap.com/templates/sb-admin/ |
Tutorial Teknosains | http://teknosains.com/i/contoh-modular-nodejs-dan-bootstrap-source-code-inside |
Comentarios
Publicar un comentario