Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMA ACADÉMICO DE
INGENIERÍA EN INFORMÁTICA
Tesina
“Implementación de Framework de
desarrollo web durante un proyecto”
Por lo anterior quedamos agradecidos con uste des por proporcionarnos este
tipo de apoyo, quedando a sus respetables órdenes.
, 0 :--1.s:; t i O IA PnOFESIONAL
RAIN BARRIOS
'.'(l'ANOS
mismo que usted desarrollará con objeto de dar lugar a los tramites conducentes
para la acred1ta ci6n d e l a a signatura de Estadias Profesionales de la Unidad
Académica de.
www.upsin.edu.mx
UNIVERSIDAD POLITÉCNICA DE SINALOA
Por este conducto le envío un cordial saludo y aprovecho la ocasión para notificarle
que el jurado que le fue asignado para evaluar la tesina desarrollada en las estadías
profesionales denominada "Implementación de Framework para desarrollo web
durante un proyecto" y que después de ser revisada en reunión de sinodales, ante la
Dirección de la Unidad Académica de Ingeniería en lnfonmática, integrada por:
¡r90l ::
Agradeciendo la atención a la presel
respeto.
·
=> _..,..
J i } mi atenta consideracói n y
*Ate - ·
m UP S IN
\.... ,.l·
"
o' os Robles
DIRECCION
Director del Programa Acllldb :iil::cnde-l¡¡genierfa en
Informática
Universidad Politécnica de Sinaloa
t,r,p
SEP º'2019. Ario del Caudillo del Sur, Em ili ano 7,1paca .
-- -- -
ümetera Municipal Libre Maz;itlá n Higueras Km. 3, Co,. Ge naro Estrada.C.P 82199.11'.azatlár S n. ,el 669 l&l0é9-5 y 96
www.upsin. edu.mx
Agradecimientos
Agradezco a mis padres por brindarme todo su apoyo durante mis
estudios, por darme las clases más importantes, por haber hecho posible que
llegara a este momento, por enseñarme que no siempre todo sale perfecto y
que debo esforzarme para obtener lo que quiero, por darme ánimos para
seguir, por preocuparse por mí y esforzarse para que mi vida fuera mejor.
6
ÍNDICE TEMÁTICO
Índice de imágenes.....................................................................9
Resumen.....................................................................................11
Abstract......................................................................................11
Introducción...............................................................................11
Capítulo I.....................................................................................12
1. Antecedentes..........................................................................13
1.1. Localización..................................................................13
1.2. Objetivos de la institución............................................13
1.3. Visión............................................................................14
1.4. Misión...........................................................................14
2. Planteamiento del problema...................................................14
2.1. Propuesta de investigación..........................................14
2.2. Objetivos.......................................................................14
2.2.1. Objetivo General................................................15
2.2.2. Objetivos Específicos........................................15
2.3. Preguntas de investigación............................................15
2.4. Hipótesis.......................................................................15
2.5. Limitaciones y supuestos..............................................15
2.6. Relevancia....................................................................16
Capítulo II...............................................................................17
3. Desarrollo Web..................................................................18
3.1 Frontend...............................................................18
3.2 Backend...................................................................19
3.3 Framework................................................................19
3.4 CodeIgniter................................................................20
3.5. Laravel…..................................................................20
3.6 Open Source..............................................................21
3.7 Svelte........................................................................21
3.8 Materialize.................................................................22
3.9 HTML.........................................................................23
3.10 CSS.............................................................................23
3.11 JavaScript................................................................24
3.12 PHP..........................................................................24
3.13 XAMPP...................................................................25
3.14 Visual Core Studio.....................................................26
3.15 Webpack..................................................................27
3.16 Ajax........................................................................27
3.17 Jquery.....................................................................27
3.18 Json Web Token.....................................................28
3.19 Symfony.................................................................28
3.20 ZendFramework.....................................................29
3.21 Phalcon..................................................................30
3.22 CakePHP..................................................................30
3.23 Yii.............................................................................31
3.24 FuelPHP..................................................................31
Capítulo IIl.................................................................................33
4. Diseño..............................................................................34
5. Desarrollo.........................................................................34
5.1. Instalación de Framework....................................34
5.2 CodeIgniter.........................................................34
5.3. Svelte.............................................................36
5.3. Diseño de base de datos......................................38
6. Resultados y discusión......................................................48
7. Conclusiones.....................................................................54
8. Bibliografía.........................................................................55
9. Anexos...............................................................................57
9.1. Glosario................................................................57
ÍNDICE DE IMÁGENES
Abstract
This document has been made with the purpose of accrediting the computer
engineering career at the Polytechnic University of Sinaloa. The content
presented in this work refers to the frameworks used for web development,
which are used in order to facilitate the work of developers and unify packages.
this serves to save time to guide the projects so that they can follow a structure
Introducción
En la actualidad existe una gran variedad de Framework que nos proporcionan
muchas herramientas que facilitan el desarrollo, algunas de ellas son muy
populares y utilizadas por los desarrolladores, estas ayudan a crear proyectos
con mayor facilidad y además con más calidad ya que la arquitectura utilizada
está muy bien organizada lo que permite identificar donde esta cada parte de
los proyectos y así pueden adaptarse a él con mayor facilidad.
CAPÍTULO I
_
Antecedentes y planteamiento del problema
1. Antecedentes
UPC Technologies nace con el fin de diversificar los servicios de la firma
UPC y así ofrecer a sus clientes servicios adicionales, enfocados a soluciones
en tecnologías de información. La finalidad de este concepto, es que el cliente
encuentre la integración de las soluciones basadas en Tecnología, a la medida
de su empresa en un solo lugar. Actualmente contamos con la capacidad de
brindar estos servicios a sus clientes con experiencia, conocimiento y
tecnología, de tal forma que sea más consistente y predecible, garantizando
una óptima relación costo/beneficio.
UPC es una firma de servicios profesionales, nos distinguimos por otorgar
soluciones en las áreas de defensa Fiscal, Planeación Fiscal y Litigiosa,
Tecnologías de Información, Desarrollo e implementación de Procesos
Administrativos y Financieros. Nos concentramos en las soluciones que
aporten ahorro y beneficio a las empresas, lo que nos permite dar excelentes
resultados. Preocupados siempre por la capacitación de todos los que en ella
colaboramos, con el fin de superar las expectativas de nuestros clientes.
Estamos en constante crecimiento, siempre a la vanguardia de los cambios
globales, generando más de 230 fuentes de empleo en 6 ciudades de la
República Mexicana y 1 en el extranjero que trabajan para que usted sólo se
preocupe por hacer negocios, buenos negocios.
1.1. Localización
UPC Technologies se encuentra ubicada por la calle Sierra Rumorosa No. 321,
Lomas de Mazatlán, Mazatlán, Sinaloa, México.
Ubicación de la empresa
Imagen 1.1
Fuente: Google Maps
1.1.3 Hipótesis
El o los Framework que sobresalgan durante la evaluación serán
aquellos más populares debido a que son los más utilizados, por lo que existe
más material para dar un buen uso a sus herramientas.
3. Desarrollo Web
Desarrollo web significa construir y mantener sitios web; es el trabajo que tiene
lugar en un segundo plano y que permite que una web tenga una apariencia
impecable, un funcionamiento rápido y un buen desempeño para permitir la
mejor experiencia de usuario. Los desarrolladores web son como duendes con
poderes: nunca los ves, pero son los que hacen que todo esté bien y funcione
de manera rápida y eficiente. [1]
Estructura Desarrollo Web
Imagen 2.1
Fuente: https://platzi.com/blog/que-es-frontend-y-backend/
3.1. Frontend
Es la parte de un programa o dispositivo a la que un usuario puede acceder
directamente. Son todas las tecnologías de diseño y desarrollo web que corren
en el navegador y que se encargan de la interactividad con los usuarios.
HTML, CSS y JavaScript son los lenguajes principales del Frontend, de los que
se desprenden una cantidad de frameworks y librerías que expanden sus
capacidades para crear cualquier tipo de interfaces de usuarios. React, Redux,
Angular, Bootstrap, Foundation, LESS, Sass, Stylus y PostCSS son algunos de
ellos. [2]
3.2. Backend
Es la capa de acceso a datos de un software o cualquier dispositivo, que no es
directamente accesible por los usuarios, además contiene la lógica de la
aplicación que maneja dichos datos. El Backend también accede al servidor,
que es una aplicación especializada que entiende la forma como el navegador
solicita cosas.
Algunos de los lenguajes de programación de Backend son Python, PHP,
Ruby, C# y Java, y así como en Frontend, cada uno de los anteriores tiene
diferentes frameworks que te permiten trabajar mejor según el proyecto que
estás desarrollando. En Platzi tenemos Django, Laravel, Ruby On Rails y
ASP.Net, los hemos elegido sobre todo porque tienen una gran comunidad que
los respalda. [2]
3.3. Framework
Un software determinado. Esta definición, algo compleja, podría resumirse
como el entorno pensado para hacer más sencilla la programación de cualquier
aplicación o herramienta actual.
Este sistema plantea varias ventajas para los programadores, ya que
automatiza muchos procesos y además facilita el conjunto de la programación.
Es útil, por ejemplo, para evitar el tener que repetir código para realizar
funciones habituales en un rango de herramientas, como puede ser el acceder
a bases de datos o realizar llamadas a Internet. Todas estas tareas son las que
se realizan de forma mucho más fácil cuando se trabaja dentro de un
Framework.
Plantea muchas ventajas y, además, es capaz de hacer que se realicen incluso
labores mucho más complejas que, por otros medios, serían imposibles de
plantear siquiera a la hora de programar algo. No obstante, su utilidad es algo
que depende del tipo de programa y de contexto en el que vaya a emplearse.
Existen muchos Frameworks diferentes, como pueden ser Meteor para trabajar
con JavaScript en web y móviles o el más que popular .NET Framework de
Microsoft. Todos ellos poseen herramientas específicas y funciones
características que encajan mejor con el tipo de aplicación a desarrollar, así
como el uso que se le pretenda dar una vez terminada. Son, a día de hoy, algo
imprescindible para cualquier programador, sea amateur o profesional. [3]
3.4. CodeIgniter
Es un potente Framework de PHP muy liviano, construido para desarrolladores
que necesitan un kit de herramientas simple y elegante para crear aplicaciones
web completas. [4]
Logo de CodeIgniter
Imagen 2.2
Fuente: https://victorroblesweb.es/2013/12/30/crud-con-codeigniter/
3.5. Laravel
Laravel es uno de los Framework de código abierto más fáciles de asimilar para
PHP. Es simple, muy potente y tiene una interfaz elegante y divertida de usar.
es el de ser un framework que permita el uso de una sintaxis refinada y
expresiva para crear código de forma sencilla, evitando el «código espagueti» y
permitiendo multitud de funcionalidades. Aprovecha todo lo bueno de otros
Framework y utiliza las características de las últimas versiones de PHP.
La mayor parte de su estructura está formada por dependencias,
especialmente de Symfony, lo que implica que el desarrollo de
Laravel dependa también del desarrollo de sus dependencias.[
https://www.arsys.es/blog/programacion/que-es-laravel/]
Logo de Laravel
Imagen 2.3
Fuente: https://www.arsys.es/blog/programacion/que-es-laravel/
3.6. Open Source
También llamado “Código Abierto” es un término que se utiliza para denominar
a cierto tipo de software que se distribuye mediante una licencia que le permite
al usuario final, si tiene los conocimientos necesarios, utilizar el código fuente
del programa para estudiarlo, modificarlo y realizar mejoras en el mismo,
pudiendo incluso hasta redistribuirlo.
Este tipo de software provee de características y ventajas únicas, ya que los
programadores, al tener acceso al código fuente de una determinada aplicación
pueden leerlo y modificarlo, y por lo tanto pueden mejorarlo, añadiéndole
opciones y corrigiendo todos los potenciales problemas que pudiera encontrar,
con lo que el programa una vez compilado estará mucho mejor diseñado que
cuando salió de la computadora de su programador original. [5]
Logo Open Source
Imagen 2.4
Fuente: https://tecnologia-facil.com/que-es/que-es-open-source/
3.7. Svelte
Es un Framework orientado a componentes que nos ayuda a implementar
nuestros interfaces de usuario. ¿Entonces, qué nos aporta con respecto a los
que hemos nombrado anteriormente? En este caso el enfoque a la hora de
realizar esta tarea es lo que va a marcar la diferencia. En los casos conocidos
(React, Vue o Angular) se nos anima a desarrollar código declarativo que,
posteriormente, exige un trabajo extra al navegador para interpretarlo.
Igualmente, exigen introducir en los archivos que servimos al compilador la
librería correspondiente que estemos utilizando. Svelte, por el contrario,
introduce una etapa de compilación que va a transformar nuestro código
declarativo en un código imperativo con diversas optimizaciones.
Además, evita introducir mecanismos como Virtual DOM para realizar las
modificaciones en el DOM de la página; sino que, utilizando este proceso de
compilación con sus optimizaciones, puede determinar en tiempo de
compilación qué va a cambiar en un determinado componente y generar el
código más adecuado que permita realizar estos cambios. [6]
Logo de Svelte
Imagen 2.5
Fuente: https://midu.dev/introducci%C3%B3n-a-svelte/
3.8. Materialize
Te ofrece una base de CSS sobre la cual implementar cualquier proyecto, ya
sea un sitio web o aplicación basada en estándares web. Esa base de código
contiene una cantidad enorme de interfaces ya diseñadas, que puedes
incorporar a tu proyecto a base de aplicar clases (class CSS). Además, tiene
una serie de código JavaScript asociado, ya que muchas de las interfaces de
usuario requieren código de programación para funcionar.
Entre las cosas que te ofrece Materialize encuentras todo tipo de interfaces,
como colores, transiciones, tipografías, botones, navegadores, cabeceras, base
de datos de iconos, elementos de formulario, tarjetas, tooltips, acordeones,
menús desplegables, botones flotantes, migas de pan, menús con pestañas,
sistemas de paginación, listas, así como un sistema de rejilla y mucho más. Por
supuesto, todos los componentes y las utilidades de layout son responsivo y a
se adaptan a todo tipo de pantallas, grandes y pequeñas. Por todo, este
Framework de diseño web es un auténtico regalo para el desarrollador. [7]
Ejemplo de Login creado en Materialize
Imagen 2.6
Fuente: https://codepen.io/julianasobreira/pen/xVpxoO
3.9. HTML
HTML significa "Lenguaje de Marcado de Hypertexto" por sus siglas en ingles
"HyperText Markup Language", es un lenguaje que pertenece a la familia de los
"lenguajes de marcado" y es utilizado para la elaboración de páginas web. El
estándar HTML lo define la W3C (World Wide Web Consortium) y actualmente
HTML se encuentra en su versión HTML5.
Cabe destacar que HTML no es un lenguaje de programación ya que no cuenta
con funciones aritméticas, variables o estructuras de control propias de los
lenguajes de programación, por lo que HTML genera únicamente páginas web
estáticas, sin embargo, HTML se puede usar en conjunto con diversos
lenguajes de programación para la creación de páginas web dinámicas. [8]
3.10. CSS
Hojas de Estilo en Cascada (del inglés Cascading Style Sheets) o CSS es el
lenguaje utilizado para describir la presentación de documentos HTML o XML,
esto incluye varios lenguajes basados en XML como son XHTML o SVG. CSS
describe como debe ser renderizado el elemento estructurado en pantalla, en
papel, hablado o en otros medios.
CSS es uno de los lenguajes base de la Open Web y posee una especificación
estandarizada por parte del W3C. Desarrollado en niveles, CSS1 es ahora
obsoleto, CSS2.1 es una recomendación y CSS3, ahora dividido en módulos
más pequeños, está progresando en camino al estándar. [9]
3.11 JavaScript
Es un lenguaje ligero e interpretado, orientado a objetos con funciones de
primera clase, más conocido como el lenguaje de script para páginas web, pero
también usado en muchos entornos sin navegador, tales como node.js, Apache
CouchDB y Adobe Acrobat. Es un lenguaje script multi-paradigma, basado en
prototipos, dinámico, soporta estilos de programación funcional, orientada a
objetos e imperativa. Leer más sobre JavaScript.
Esta sección de la web está dedicada netamente al lenguaje JavaScript, y no a
las partes que son específicas de las páginas web u otros entornos de
servidor. Para información sobre las APIs específicas de las páginas web,
consulte DOM y las APIs WEB.
JavaScript no debe ser confundido con el lenguaje de programación Java.
Ambos "Java" y "JavaScript" son marcas registradas de Oracle en Estados
Unidos y otros países. Sin embargo, los dos lenguajes de programación tienen
muchas diferencias en las sintaxis, semántica y usos. [10]
Logo de JavaScript
Imagen 2.7
Fuente: https://anthoncode.com/javascript-logo-vector-eps/
3.12. PHP
PHP es un lenguaje interpretado de propósito general ampliamente usado,
diseñado especialmente para desarrollo web y que puede ser incrustado dentro
de código HTML. Generalmente se ejecuta en un servidor web, tomando el
código en PHP como su entrada y creando páginas web como salida. Puede
ser desplegado en la mayoría de los servidores web y en casi todos los
sistemas operativos y plataformas sin costo alguno.
PHP se encuentra instalado en más de 20 millones de sitios web y en un millón
de servidores, el número de sitios en PHP ha compartido algo de su
preponderante sitio con otros nuevos lenguajes no tan poderosos desde agosto
de 2005. Este mismo sitio web de Wikipedia está desarrollado en PHP. Es
también el módulo Apache más popular entre las computadoras que utilizan
Apache como servidor web. La versión más reciente de PHP es la 5.3.2 (for
Windows) del 4 de marzo de 2010.
El gran parecido que posee PHP con los lenguajes más comunes de
Programación estructurada, como Lenguaje de Programación C y Perl,
permiten a la mayoría de los Programadores crear aplicaciones complejas con
una curva de aprendizaje muy corta. También les permite involucrarse con
aplicaciones de contenido dinámico sin tener que aprender todo un nuevo
grupo de funciones. [11]
Logo de PHP
Imagen 2.8
Fuente: https://www.ecured.cu/PHP
3.13. XAMPP
XAMPP es una distribución de Apache completamente gratuita y fácil de
instalar que contiene MariaDB, PHP y Perl. El paquete de instalación de
XAMPP ha sido diseñado para ser increíblemente fácil de instalar y usar. [12]
Panel de Control Xampp
Imagen 2.9
Fuente: https://devtuts.butlerccwebdev.net/testserver/using-xampp-control-panel.html
Imagen 2.10
Fuente: https://es.wikipedia.org/wiki/Visual_Studio_Code
3.15. Webpack
Es un sistema de bundling para preparar el desarrollo de una aplicación web
para producción. En cierta medida se puede considerar un Browserify
avanzado ya que tiene muchas opciones de configuración.
También se puede considerar una evolución de Grunt y Gulp, ya que permite
de alguna manera automatizar los procesos principales que son transpilar y
preprocesar código de .scss a .css, de ES7 a ES5/6, etc...
Para poder utilizar Webpack en tu proyecto web debes tener instalado Node.js
en tu equipo y con el comando npm install -g webpack tendrás Webpack
instalado de forma global en tu equipo (También puedes instalarlo a nivel de
proyecto y correrlo con NPM scripts). [14]
3.16. Ajax
es el acrónimo de Asynchronous Javascript and XML, es decir: Javascript y
XML Asincrono. Este acrónimo fue utilizado por primera vez por Jesse James
Garret en 2005, en su publicación Ajax: a New Approach to Web Applications si
bien los componentes en que se basan y los recursos técnicos de que hace
uso ya existían desde muchos años antes.
Normalmente, AJAX se define como una técnica para el desarrollo de páginas
(sitios) web que implementan aplicaciones interactivas. No obstante,
analicemos un poco cada una de las palabras que la forman:
JavaScript es un lenguaje de programación conocido por ser interpretado por
los navegadores de páginas web.
XML es un lenguaje de descripción de datos pensado fundamentalmente para
el intercambio de datos entre aplicaciones, más que entre personas.
Asíncrono: en el contexto de las comunicaciones (y la visualización de una
página web no deja de ser un acto de comunicación entre un servidor y un
cliente) significa que el emisor emite un mensaje y continúa son su trabajo,
dado que no sabe (ni necesita saberlo) cuándo le llegará el mensaje al
receptor. [15]
3.17 Jquery
Basados en esta librería, existe una infinita cantidad de plugins (gratis y pagos)
creados por desarrolladores de todo el mundo. Estos plugins resuelven
situaciones concretas dentro del maquetado de un sitio, por ejemplo: un menú
responsive, una galería de fotos, un carrousel de imágenes, un slide, un header
que cambia de tamaño, el desplazamiento del scroll al hacer clic en un botón
(anclas HTML), la transición entre páginas y miles de efectos más. [16]
Modelo en CodeIgniter
Los modelos son clases PHP diseñadas para trabajar con información en su
base de datos. Por ejemplo, supongamos que usa CodeIgniter para administrar
un blog. Es posible que tenga una clase de modelo que contenga funciones
para insertar, actualizar y recuperar los datos de su blog. [18]
3.19. Symfony
Imagen 2.11
Fuente: https://symfony.com/
Imagen 2.12
Fuente: https://framework.zend.com/participate/logos
Imagen 2.13
Fuente: https://www.hypertechnologyweb.com/como-crear-el-archivo-services-php-en-phalcon/
Imagen 2.14
Fuente: https://cakephp.org/
Con CakePHP el desarrollo web ya no es monótono porque ofrecemos las
herramientas para que empieces a escribir el código que realmente necesitas:
la lógica específica de tu aplicación. Consigue una copia de CakePHP,
empieza con lo verdaderamente importante y no reinventes la rueda cada vez
que te incorpores a un nuevo proyecto.
CakePHP tiene un equipo de desarrolladores y una comunidad activos, lo que
añade valor al proyecto. Con CakePHP, además de no tener que reinventar la
rueda, el núcleo de tu aplicación se mejora constantemente y está bien
probado [22]
3.23. Yii
Imagen 2.15
Fuente: https://www.yiiframework.com/
Imagen 2.16
Fuente: https://www.camaltec.es/experto-framework-fuelphp/
5. Desarrollo
Desde la parte del Back End se utiliza el Framework Codeigniter el cual podría
ser llamado el núcleo del sistema, ya que es el más importante porque dentro
de él se ejecutan todas las configuraciones del proyecto que pueden ir desde la
conexión a la base de datos, hasta las rutas de cada pantalla.
5.1. Instalación de los Framework
5.2. CodeIgniter
Lo primero que se realizar es abrir la página oficial de Codeigniter que es
"https://codeigniter.com/en/download”
Descarga CodeIgniter
Imagen 3.1
Fuente: https://codeigniter.com/en/download
Instalación Codeigniter
Imagen 3.2
Fuente: https://www.guidacode.com/2018/php/codeigniter/como-instalar-codeigniter/
Imagen 3.3
Fuente: https://www.guidacode.com/2018/php/codeigniter/como-instalar-codeigniter/
Posteriormente será necesario configurar el archivo
Para poder configurar tenemos que acceder a application/config donde habrá
diferentes archivos .php en función de lo que queramos configurar. Vamos con
el archivo config.php. [26]
Finalmente se modificará dependiendo el hospedaje, por ejemplo, si estamos
trabajando en local, el valor debería ser:
http://localhost/TuRuta/nombreCarpetaCodeIgniter.
Config.php
Imagen 3.4
Fuente: https://www.guidacode.com/2018/php/codeigniter/como-instalar-codeigniter/
5.3. Svelte
Lo primero que se realiza es abrir cmd o símbolo de sistema como
administrador como se ve en la imagen
Ejecutar Símbolo de sistema
Imagen 4.1
Fuente: Del autor
Después se ejecuta un comando similar al siguiente, lo único que varía es la
última parte que indica el nombre que lleva el proyecto
Generar Proyecto
Imagen 4.2
Fuente: https://midu.dev/crea-un-nuevo-proyect-con-svelte-3/
Imagen 4.3
Fuente: https://midu.dev/crea-un-nuevo-proyect-con-svelte-3/
Imagen 4.4
Fuente: http://www.mclibre.org/consultar/php/otros/xampp-instalacion-windows.html
Imagen 4.5
Fuente: http://www.mclibre.org/consultar/php/otros/xampp-instalacion-windows.html
Imagen 4.6
Fuente: https://rootear.com/windows/xampp
Imagen 4.7
Fuente: Del autor
Imagen 4.8
Fuente: Del autor
Por último, se les permitirá crear tablas que deben ser configuradas en base al
modelo entidad relación del sistema (ver imágenes 4.9 y 4.10).
Crear Tabla
Imagen 4.9
Fuente: Del autor
Crear Tabla
Imagen 4.10
Fuente: Del autor
Catálogo.svelte
Contiene el elemento catálogo el cual cuenta con un catálogo de usuarios (ver
imagen 5.1) esto permite que pueda ser llamado en varias ocasiones como si
se tratase de una función.
Catálogo.svelte
Imagen 5.1
Fuente: Del autor
Para tener una idea de lo que se buscar realizar en la imagen 5.2 se muestra
un ejemplo de catálogo de usuarios.
Catálogo de Usuarios
Imagen 5.2
Fuente: http://saitenlinea.com/wiki/Utilerias/catalogo-de-usuarios
Text.svelte
Contiene el elemento text el cual fue creado para sustituir el conocido “input
type=”text” por uno que tiene características adicionales que lo hacen más
atractivo y fácil de manipular.
Text.svelte
Imagen 5.3
Fuente: Del autor
Notificaciones.svelte
Contiene la vista principal del sistema, donde se redirecciona a cada función
del sistema por medio de un menú de opciones.
Notificaciones.svelte
Imagen 5.4
Fuente: Del autor
App.svelte
Contiene los archivos que van a ser llamados, este funciona para unir
diferentes partes del código en un mismo documento con diferentes estilos css
cada segmento llamado.
App.svelte
Imagen 5.5
Fuente: Del autor
Routes.js
Contiene las rutas a las cuales los usuarios van a acceder durante el uso del
sistema.
Routes.js
Imagen 5.6
Fuente: Del autor
Config/config.php
Contiene variables que son utilizadas en múltiples ocasiones durante el
funcionamiento del sistema como por ejemplo la dirección.
Config/config.php
Imagen 5.7
Fuente: Del autor
Config/database.php
Contiene la configuración de la base de datos en un arreglo que contiene cada
valor que es necesario por ejemplo la contraseña, el usuario el nombre del host
y configuración de la base de datos adicional que no notamos al crear una
desde localhost ya que la mayoría son valores por default.
Config/database.php
Imagen 5.8
Fuente: Del autor
Vista/Auth.php
Contiene el main desde backend desde aquí se van desglosando en ramas
hasta abarcar todo el sistema.
Vista/Auth.php
Imagen 5.9
Fuente: Del autor
Librerías/JWT.php
Contiene las funciones para manejar Json Web Token, esta librería es pública y
esta compartida en git.
Librerías/JWT.php
Imagen 5.10
Fuente: Del autor
Models/Users.php
Consisten en clases php que pueden ser llamadas y ya tienen formada una
estructura como en este caso al tratarse de usuarios.
Models/Users.php
Imagen 5.11
Fuente: Del autor
Vista/login
Contiene la vista del inicio de sesión para poder acceder a las funciones del
sistema, esta es la página que carga por default cuando intentas iniciar al sitio
sin iniciar sesión o sin especificar rutas.
Vista/login
Imagen 5.12
Fuente: Del autor
6. Resultados y Discusión
Después de realizar por primera vez un proyecto utilizando CodeIgniter
se puede evaluar con mayor facilidad este Framework, y como se pudo
observar no es muy complicado utilizarlo, la instalación es demasiado sencilla,
únicamente debías saber los comandos correctos para utilizarlo diariamente y
corregir errores que van surgiendo cuando exportas o importas archivos.
Además, un objetivo secundario era obtener un sistema ligero, por lo que se
estuvieron eliminando carpetas y archivos que vienen incluidos en la instalación
sin ningún problema, se trató de evitar usar librerías y se logró el objetivo.
A continuación, se resumen en ventajas y desventajas de algunos Framework
que pudieron ser utilizados en lugar de CodeIgniter para identificar en cual
podría haber sido realizado con mayor facilidad.
Comparación de Framework
CodeIgniter
Ventajas
Las páginas se procesan más rápido, el núcleo de CodeIgniter es bastante
ligero.
Es sencillo de instalar, basta con subir los archivos al ftp y tocar un archivo de
configuración para definir el acceso a la base de datos.
Existe abundante documentación en la red.
Facilidad de edición del código ya creado.
Facilidad para crear nuevos módulos, páginas o funcionalidades.
Estandarización del código
Separación de la lógica y arquitectura de la web, el MVC.
Cualquier servidor que soporte PHP+MySQL sirve para CodeIgniter.
CodeIgniter se encuentra bajo una licencia open source, es código libre. [27]
Desventajas
ORM solo a través de terceros: el mapeo objeto-relacional (object relational
mapping, ORM) se refiere a una técnica de desarrollo de software que permite
a las aplicaciones almacenar objetos escritos en un lenguaje de programación
orientado a objetos como PHP en una base de datos relacional. Codelgniter no
soporta al ORM de forma nativa. Sin embargo, esta tecnología puede
integrarse.
No cuenta con un motor de plantillas: Codelgniter se enorgullece de
funcionar correctamente sin un motor de plantillas. A cambio, este framework
ofrece un analizador simple de plantillas. Eso puede ser visto como una
ventaja, pues, generalmente, el uso de un motor de plantillas se asocia a una
sobrecarga de rendimiento (por encima del tiempo de ejecución). Además,
también tendría que aprenderse el lenguaje de la plantilla. Por otro lado, un
motor de plantillas permite separar la generación de datos del código para la
presentación, generando así un código fuente claramente estructurado. Si se
utiliza un motor de plantillas con una sintaxis más ligera, se puede reducir
significativamente el tamaño total del código de la aplicación.
No existen los espacios de nombres: con los espacios de nombres, PHP
ofrece la capacidad de separar el código de los diferentes grupos de
aplicaciones. Los desarrolladores de PHP hacen uso de esta característica
para evitar los conflictos que se producen durante la denominación de las
clases y de las funciones, siendo, por ejemplo, muy comunes las colisiones de
nombre con clases internas de PHP con funciones, constantes o elementos
integrados por terceros. Hasta ahora, Codelgniter no utiliza esta función PHP.
No cuenta con la opción de autocarga de clases de PHP: con autoload()
y spl_autoload_register(), desde su quinta versión, PHP cuenta con dos
funciones que permiten cargar las definiciones de clase automáticamente
cuando sea necesario. Esta función no está disponible en Codelgniter.
Menos bibliotecas incorporadas que otros entornos PHP: gracias al diseño
ligero del software, la configuración inicial de Codelgniter proporciona un
número significativamente menor de bibliotecas que otros frameworks PHP. En
primer lugar, estos incluyen las tareas más importantes de desarrollo web,
como el acceso a la base de datos, envío de correo electrónico, validación de
datos de formulario, mantenimiento de las sesiones de trabajo o del trabajo con
XML – RPC. Para aquellas tareas que van más allá de las funciones básicas,
será necesario integrar otras bibliotecas o recursos externos. Ahora bien, esto
puede resultar ventajoso para aquellos desarrolladores que están buscando un
Framework cuyas funciones se reduzcan al mínimo.
Laravel
Ventajas
Reducción de costos y tiempos en el desarrollo y mantenimiento.
Curva de aprendizaje relativamente Baja (en comparación con otros
Framework Php).
Flexible y adaptable no sólo al MVC Tradicional (Modelo vista controlador) sino
que para reducir código propone usar “Routes with closures”
Buena y abundante documentación sobre todo en el sitio oficial.
Posee una amplia comunidad y foros.
Es modular y con un amplio sistema de paquetes y drivers con el que se puede
extender la funcionalidad de forma fácil, robusta y segura.
Facilita el manejo de ruteo de nuestra aplicación como así también la
generación de url amigables y control de enlaces auto–actualizables lo que
hace más fácil el mantenimiento de un sitio web.
También cuenta con una herramienta de interfaces de líneas de
comando llamada Artisan que me permite programar tareas programadas
como por ejemplo ejecutar migraciones, pruebas programadas, etc. [28]
Desventajas
Debes acostumbrarte a utilizar ciertas funciones.
Utilizas Composer, el administrador de dependencias de PHP y Artisan
de Laravel
La instalación no es tan fácil.
La curva inicial de aprendizaje es compleja si no tienes experiencia en un
Framework o lenguaje.
Está adaptado para las últimas versiones de PHP [29]
CakePhp
Ventajas
Fácil de aprender: Hay que reconocer que desarrollar con CakePHP es fácil y
sencillo una vez te has documentado un poco y conocer la estructura de
ficheros.
Symfony
Ventajas
Es extremadamente flexible: se adapta a casi cualquier necesidad,
permitiendo instalar únicamente las piezas requeridas para el proyecto en vez
de todo el Framework.
Es tremendamente ampliable: según GitHub, es el proyecto PHP más activo,
lo que te garantiza encontrar paquetes para prácticamente cualquier
funcionalidad.
Es un sistema estable: Laboratorios Sensio garantiza que cada versión de
Symfony recibirá soporte (actualizaciones y solución de problemas) durante
tres años, además de compatibilidad con las versiones secundarias.
Un sistema rápido y que consume poca memoria: Symfony ha sido
desarrollado con la idea de ofrecer aplicaciones de alto rendimiento, es más
rápido que otros Framework usando la mitad de la memoria.
Facilidad de uso: Gracias a la gran cantidad de documentación y tutoriales
que se pueden encontrar en la web, cualquier profesional o usuario avanzado
puede aprender rápidamente los conceptos más básicos de Symfony. Para ello
ha tomado las mejores ideas de sus competidores, como Ruby on Rails o
Django [31]
Desventajas
Está pensado para aplicaciones web, por lo que su uso fuera de este campo se
dificulta un poco.
Es menos intuitivo que los Framework más populares.
Existe menos material para informarte de cómo funciona ya se por medio de
videos o ejemplos en internet.
Zend Studio
Ventajas
Agiliza nuestro trabajo
Cuenta con un buen Depurador.
Infinitas opciones que permiten un desarrollo profesional de nuestras
aplicaciones.
Desventajas
Es menos intuitivo que los Framework más populares.
Existe menos material para informarte de cómo funciona ya se por medio de
videos o ejemplos en internet.
Requiere Licencia de pago.
No incluye editor visual HTML
Un poco complejo. [32]
Phalcon
Ventajas
Aumentar la velocidad de ejecución y reducir el uso de recursos con el
objetivo de manejar más solicitudes por segundo que los marcos comparables
escritas principalmente en PHP.
Desventajas
Una desventaja de este enfoque es que se requiere acceso administrativo
(root) en el servidor para poder instalar Phalcon mediante la construcción de
un binario personalizado o usar uno precompilado. [33]
FuelPHP
Ventajas
Siempre descargamos la última versión estable.
Establecerá los permisos de escritura necesarios para las carpetas de cache,
logs y temp.
Ahorraremos tiempo de configuración.
Desventajas
Este tipo instalación solo puede ser realizada desde sistemas operativos del
tipo Unix-like (Linux, OS X, Unix, etc).
Necesitamos tener instalado Git.
Uso de la línea de comandos. [34]
Yii
Ventajas
Son herramientas creadas por profesionales en la temática en cuanto a
programación respecta.
Estas herramientas han sido probadas y arregladas hasta el cansancio.
Está completamente orientado a objetos, lo cual es excelente práctica de
programación ya que mantiene el código arreglado y limpio.
Nosotros podemos pasar directamente a desarrollar y enfocarnos en lo importante
de nuestro sitio web.
Esta es una excelente herramienta que nos provee una forma de validar los datos
que se ingresan en un formulario.
Desventajas
Pérdida de control sobre lo que hacemos.
Puede haber bugs que el Framework no detecta o ignora.
El aprendizaje es complicado.
Puede aparecer mucho código basura. [35]
7. Conclusiones
Los Framework son herramientas muy importantes que nos ayudan a
desarrollar con mayor facilidad los proyectos, ya que estos contienen un
conjunto de prácticas y conceptos que han sido evaluados a lo largo de la
creación de cada uno de ellos, además fueron desarrollados por diferentes
organizaciones por lo que cada uno tiene su propia metodología, sin embargo,
todos tratan de resolver la problemática de la forma más eficaz y eficiente
posible.
También cuentan con bibliotecas que permiten a los usuarios realizar las sus
funciones, un lenguaje, además de brindar una estructura del proyecto.
La arquitectura más común es modelo-vista-controlador la cual consiste dividir
los proyectos en 3 partes, el primero de ellos cuenta con las operaciones
lógicas y el manejo de la información, la vista se encarga de la interfaz gráfica o
el diseño y el controlador se encarga de conectarnos con el modelo que es el
que tiene la información y devolverla utilizando la vista necesaria.
Dicho lo anterior cada uno fue desarrollado por diferentes mentes, por lo que a
pesar de que fueron realizados por la misma necesidad, con la misma
estructura y objetivo cada uno tiene diferentes características por lo que si se
intenta evaluar cuál es mejor de todos habría muchas vertientes que
dificultarían esto, se podría analizar ciertos parámetros como el peso de cada
uno, la velocidad de instalación, pero no sería justo debido a que algunas
librerías más pesadas.
En conclusión, el mejor Framework depende de la persona que lo va a
desarrollar, hay ocasiones en las que el cliente te pide que utilices uno en
específico, en caso de que tengas la opción de elegir puedes elegir el que ya
dominas para sentirte más cómodo o uno nuevo para aprender a utilizarlo,
ambas son buenas ideas. También en caso de no haber usado uno tienes la
opción de utilizar el más popular como son Laravel y CodeIgniter ya que son
los más populares y de los cuales puede haber más información en internet
como tutoriales, soluciones de errores, entre otras.
8. Bibliografía
1.- openclassrooms. (2017). ¿Qué es el desarrollo web?. 27/11/19, de openclassrooms Sitio
web: https://blog.openclassrooms.com/es/2017/09/11/que-es-el-desarrollo-web/
2.- platzi. (2017). Qué es Frontend y Backend. 27/11/19, de platzi Sitio web:
https://platzi.com/blog/que-es-frontend-y-backend/
5.- tecnologia-facil. (2019). ¿Qué es Open Source?. 27/11/19, de tecnologia-facil Sitio web:
https://tecnologia-facil.com/que-es/que-es-open-source/
6.- Francisco Olmedo. (2019). Jugando con svelte. 27/11/19, de nocountryforgeeks Sitio web:
https://www.nocountryforgeeks.com/jugando-con-svelte/
7.- Miguel Angel Alvarez. (2018). Materialize CSS. 27/11/19, de https://desarrolloweb.com/
Sitio web: https://desarrolloweb.com/articulos/materialize-framework-css.html
8.- acercadehtml.. (2019). ¿Que es HTML y para que sirve?. 27/11/19, de acercadehtml Sitio
web: http://www.acercadehtml.com/manual-html/que-es-html.html
12.- apachefriends. (2019). XAMPP Apache + MariaDB + PHP + Perl. 27/11/19, de apachefriends
Sitio web: https://www.apachefriends.org/es/index.html
14.- carlosazaustre. (2016). Primeros pasos con Webpack. 27/11/19, de carlosazaustre.es Sitio
web: https://carlosazaustre.es/primeros-pasos-con-webpack/
19.- Symfony. (2019). Symfony para programadores. 27/11/19, de Symfony Sitio web:
https://symfony.es/pagina/que-es-symfony/
20.- Rodrigo Souto. (2019). Guía Zend: Introducción y primera aplicación. 27/11/19, de
maestrosdelweb Sitio web:
http://www.cva.itesm.mx/biblioteca/pagina_con_formato_version_oct/apaweb.html
22.- cakephp. (2019). ¿Qué es CakePHP y por qué hay que utilizarlo?. 27/11/19, de cakephp
Sitio web: https://book.cakephp.org/1.3/es/The-Manual/Beginning-With-CakePHP/What-is-
CakePHP-Why-Use-it.html
23.- yiiframework. (2019). Guía Definitiva de Yii 2.0. 27/11/19, de yiiframework Sitio web:
https://www.yiiframework.com/doc/guide/2.0/es/intro-yii
25.- guidacode. (2018). Qué es y cómo instalar CodeIgniter: Primeros pasos. 27/11/19, de
26.- midu. (2019). Crea un nuevo proyecto con Svelte 3. 27/11/19, de midu Sitio web:
https://midu.dev/crea-un-nuevo-proyect-con-svelte-3/
27.- coriaweb. (2019). Qué es CodeIgniter y cuáles son algunas de sus ventajas. 27/11/19, de
28.- freelancer. (2019). Laravel: ventajas del framework PHP de moda. 27/11/19, de
freelancer.es Sitio web: https://www.freelancer.es/community/articles/ventajas-del-
framework-moda-laravel
29.- Luis Miguel Balza. (2017). Laravel. 27/11/19, de slideshare Sitio web:
https://es.slideshare.net/RafaelLobo4/framework-laravel
30.- CakePHP. (2013). CakePHP: Pros y contras. 27/11/19, de CakePHP Sitio web:
http://www.zonadev.es/2012/03/cakephp-pros-y-contras-segun-mi-opinion.html
31.- Diligent Team. (2019). Qué es el Framework Symfony php: características y ventajas.
27/11/19, de Diligent Team Sitio web: https://www.diligent.es/framework-symfony-php/2/
32.- https://www.ecured.cu/Zend_Studio
35.- juan lopez. (2014). Yii Framework. 27/11/19, de prezi Sitio web:
https://prezi.com/boajjonvy5o_/yii-framework/
Glosario
Programación
Es el proceso por medio del cual se diseña, codifica, limpia y protege el código
fuente de programas computacionales.
Función
Una subrutina o subprograma (también llamada procedimiento, función o
rutina), como idea general, se presenta como un subalgoritmo que forma parte
del algoritmo principal, el cual permite resolver una tarea específica
Optimización
Es la acción y efecto de optimizar. Este verbo hace referencia a buscar la
mejor manera de realizar una actividad. El término se utiliza mucho en el
ámbito de la informática.
Código
Es una serie de símbolos que por separado no representan nada, pero al
combinarlos pueden generar un lenguaje comprensible solo para aquellos
quienes lo entiendan.
Base de Datos
Es un “almacén” que nos permite guardar grandes cantidades de información
de forma organizada para que luego podamos encontrar y utilizar fácilmente. A
continuación, te presentamos una guía que te explicará el concepto y
características de las bases de datos.
Variables
Una variable es en principio un concepto que determina una cualidad de un
objeto, es un atributo que puede variar de una o más maneras y que sintetiza
conceptualmente lo que se quiere conocer acerca del objeto de investigación.
Framework
Entorno de trabajo o marco de trabajo es un conjunto estandarizado de
conceptos, prácticas y criterios para enfocar un tipo de problemática particular
que sirve como referencia, para enfrentar y resolver nuevos problemas de
índole similar.
Diseño
Es el arte de definir la arquitectura de hardware y software, componentes,
módulos y datos de un sistema de cómputo, a efectos de satisfacer ciertos
requerimientos.