Академический Документы
Профессиональный Документы
Культура Документы
GRUPO: T61
FECHA: 31/10/2018
INTRODUCCION:
TECNOLOGIA ANGULAR JS
AngularJS es un framework MVC de JavaScript para el Desarrollo Web Front End que permite
crear aplicaciones SPA Single-Page Applications. Entra dentro de la familia de frameworks
como BackboneJS o EmberJS.
Con tanta oferta de frameworks se nos hace difícil elegir cuál usar en nuestras aplicaciones, qué
ventajas tienen unos frente a otros, etc. En esta entrada voy a comentar que hace a AngularJS
diferente al resto y unos cuantos enlaces a recursos online donde aprender a usar este framework
y coger soltura.
Sin embargo AngularJS está pisando fuerte. Aunque su primera versión es de 2009, se ha hecho
muy popular a finales de 2012 y ahora en 2013 está en pleno auge. Tanto que ya se habla de una
nueva technology stack como antes era LAMP (Linux + Apache + MySQL + PHP) ahora la
tendencia es MEAN (MongoDB/Mongoose + ExpressJS + AngularJS + NodeJS), lo que también
se traduce a aplicaciones JavaScript End-to-End. AngularJS está mantenido por Google y
bastante comunidad. También como punto a su favor está lo sencillo que crear Tests unitarios
y End-to-End con Jasmine y Karma, algo que suele ser un poco costoso al principio.
foo
bar
baz
CARACTERISTICAS
requisitos previos
Antes de comenzar, asegúrese de que su entorno de desarrollo incluya Node.js®un administrador de
paquetes npm.
Node.js
Para verificar su versión, ejecútela node -ven una ventana de terminal / consola.
Para obtener Node.js, vaya a nodejs.org .
gestor de paquetes npm
Las aplicaciones Angular, Angular CLI y Angular dependen de las características y funcionalidades
proporcionadas por las bibliotecas que están disponibles como paquetes npm . Para descargar e instalar
paquetes npm, debe tener un administrador de paquetes npm.
Este Inicio rápido utiliza la interfaz de línea de comandos del cliente npm , que se instala Node.jsde
forma predeterminada.
Para verificar que tiene instalado el cliente npm, ejecútelo npm -ven una ventana de terminal / consola.
Utiliza la CLI angular para crear proyectos, generar aplicaciones y códigos de biblioteca, y realizar una
variedad de tareas de desarrollo en curso, como pruebas, agrupación e implementación.
Para instalar el CLI usando npm, abra una ventana de terminal / consola e ingrese el siguiente comando:
1. Ejecute el comando CLI ng newy proporcione el nombre my-app , como se muestra aquí:
2. El ng newcomando le solicita información sobre las características que debe incluir en el proyecto
de aplicación inicial. Acepte los valores predeterminados presionando la tecla Intro o Retorno.
Angular CLI instala los paquetes Angular npm necesarios y otras dependencias. Esto puede tardar unos
minutos.
El proyecto de aplicación inicial contiene una aplicación de bienvenida simple, lista para ejecutarse.
Angular incluye un servidor, para que pueda construir y servir su aplicación de manera fácil y local.
content_copycd my-app
ng serve --open
El ng servecomando inicia el servidor, observa sus archivos y reconstruye la aplicación a medida que
realiza cambios en esos archivos.
Los componentes son los componentes fundamentales de las aplicaciones angulares. Muestran datos en
la pantalla, escuchan las opiniones del usuario y toman medidas en función de esa entrada.
Como parte de la aplicación inicial, la CLI creó el primer componente angular para usted. Es
el componente raíz , y se nombra app-root.
1. Abierta ./src/app/app.component.ts .
2. Cambiar la titlepropiedad de 'my-app'a 'My First Angular App' .
src / app / app.component.ts
content_copy @Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
El navegador se vuelve a cargar automáticamente con el título revisado. Eso está bien, pero podría
verse mejor.
3. Abre ./src/app/app.component.css y dale un poco de estilo al componente.
src / app / app.component.css
content_copy h1 {
color: #369;
font-size: 250%;
Directivas Nativas[editar]
Algunas directivas nativas que podemos encontrar en angularjs son:
ngApp (ng-app)
ngController (ng-controller)
ngModel (ng-model)
ngClick (ng-click)
ngInit (ng-init)
ngChange (ng-change)
ngShow (ng-show) | ngHide (ng-hide)
ngBind (ng-bind)
ngular forma parte del Stack MEAN una integración de:
Características de Angular 2
Desarrollo Móvil: El desarrollo de aplicaciones de escritorio es mucho
más fácil cuando primero se manejan los problemas de rendimiento en el
desarrollo móvil.
TECNOLOGIA NODE.JS:
Node.js es un entorno Javascript del lado del servidor, basado en eventos. Node ejecuta javascript
utilizando el motor V8, desarrollado por Google para uso de su navegador Chrome. Aprovechando el
motor V8 permite a Node proporciona un entorno de ejecución del lado del servidor que compila y
ejecuta javascript a velocidades increíbles. El aumento de velocidad es importante debido a que V8
compila Javascript en código de máquina nativo, en lugar de interpretarlo o ejecutarlo como bytecode.
Node es de código abierto, y se ejecuta en Mac OS X, Windows y Linux.
Node.js es una librería y entorno de ejecución de E/S dirigida por eventos y por lo
tanto asíncrona que se ejecuta sobre el intérprete de JavaScript creado por Google V8. Lo cierto es
que está muy de moda aunque no es algo nuevo puesto que existen librerías como Twisted que
hacen exactamente lo mismo pero si es cierto que es la primera basada en JavaScript y que tiene
un gran rendimiento.
La escalabilidad como uno de sus objetivos principales
Node.js fue formulado para generar una sistema escalable y que tuviese la consistencia suficiente
como para poder generar un elevado número de conexiones de forma simultánea con el servidor.
Generalmente cuando se crea un gran número de conexiones el rendimiento y la velocidad de las
aplicaciones y páginas web se ven perjudicados. Esto se debe a que la gran mayoría de tecnologías
que trabajan desde el lado del servidor accionan las peticiones de forma aislada y mediante hilos
independientes. Por eso, cuando la cantidad de solicitudes que se hacen van en incremento, los
recursos y el consumo de los mismos también se incrementan.
17
18 // The response needs to handle all the headers, and the return codes
20 // like Apache and Tomcat, but Node requires everything to be done yourself
22
// Here is some unique-looking code. This is how Node retrives
23
// parameters passed in from client requests. The url module
24
// handles all these functions. The parse function
25
// deconstructs the URL, and places the query key-values in the
26
// query object. We can find the value for the "number" key
27
// by referencing it directly - the beauty of JavaScript.
28
var params = url.parse(request.url, true).query;
29
var input = params.number;
30
31
// These are the generic JavaScript methods that will create
32 // our random number that gets passed back to the caller
33 var numInput = new Number(input);
34 var numOutput = new Number(Math.random() * numInput).toFixed(0);
35
36 // Write the random number to response
37 response.write(numOutput);
38
39 // Node requires us to explicitly end this connection. This is because
40 // Node allows you to keep a connection open and pass data back and forth,
TECNOLOGIA REACT:
React (también llamada React.js o ReactJS) es una biblioteca Javascript de código abierto diseñada para
crear interfaces de usuario con el objetivo de facilitar el desarrollo de aplicaciones en una sola página. Es
mantenido por Facebook y la comunidad de software libre, han participado en el proyecto más de
mil desarrolladores diferentes. 1
React intenta ayudar a los desarrolladores a construir aplicaciones que usan datos que cambian todo el tiempo.
Su objetivo es ser sencillo, declarativo y fácil de combinar. React sólo maneja la interfaz de usuario en una
aplicación; React es la Vista en un contexto en el que se use el patrón MVC (Modelo-Vista-Controlador)
o MVVM (Modelo-vista-modelo de vista). También puede ser utilizado con las extensiones de React-based que
se encargan de las partes no-UI (que no forman parte de la interfaz de usuario) de una aplicación web.
Virtual DOM
React mantiene un virtual DOM propio, en lugar de confiar solamente en el DOM del navegador. Esto deja a la
biblioteca determinar qué partes del DOM han cambiado comparando contenidos entre la versión nueva y la
almacenada en el virtual DOM, y utilizando el resultado para determinar cómo actualizar eficientemente el DOM
del navegador.67 Propiedades (props) de react.
Las propiedades
Las propiedades (también conocidas como 'props') pueden definirse como los atributos de configuración para
dicho componente. Éstas son recibidas desde un nivel superior, normalmente al realizar la instancia del
componente y por definición son inmutables.
El Estado
El estado de un componente se define como una representación del mismo en un momento concreto, es decir,
una instantánea del propio componente. Existen dos tipos de componentes con y sin estado, denominados
statefull y stateless.
JSX
React utiliza una sintaxis parecida a HTML, llamada JSX. No es necesaria para utilizar React, sin embargo,
hace el código más legible, y escribirlo es una experiencia similar a HTML. 8
React NativE
React Native es un framework te permite construir aplicaciones móviles utilizando solamente JavaScript y
React. Utiliza el mismo diseño que React.js, permitiéndote usar elementos de interfaz de usuario móvil. No es
para construir una ‘aplicación móvil web’, una ‘aplicación de HTML5’ o una ‘aplicación híbrida’, sino una
aplicación móvil real que es indistinguible de otra aplicación que usa construida en un lenguaje nativo. React
Native utiliza los mismos bloques fundamentales de interfaz de usuario que las aplicaciones normales de iOS y
Android. 9
A pesar de que React.js y React Native usen la misma estructura de código, no sirven para lo mismo. React.js
es utilizado para hacer páginas web y trabaja con elementos del virtual DOM, mientras que por el otro lado
React Native utiliza elementos nativos de interfaz de usuario de Android y iOS para crear aplicaciones para
ambas plataformas.
Composición de componentes
Así como en programación funcional se pasan funciones como parámetros para resolver
problemas más complejos, creando lo que se conoce como composición funcional, en ReactJS
podemos aplicar este mismo patrón mediante la composición de componentes
Esto es algo sobre lo que ya hemos hablado. En resumen, al desarrollar crearemos componentes
para resolver pequeños problemas, que por ser pequeños son más fáciles de resolver y en
adelante son más fáciles de visualizar y comprender. Luego, unos componentes se apoyarán en
otros para resolver problemas mayores y al final la aplicación será un conjunto de componentes
que trabajan entre sí. Este modelo de trabajo tiene varias ventajas, como la facilidad de
mantenimiento, depuración, escalabilidad, etc.
Sin embargo, el estilo de React es más declarativo, en el que nosotros contamos con un estado de
la aplicación y sus componentes reaccionan ante el cambio de ese estado. Los componentes
tienen una funcionalidad dada y cuando cambia una de sus propiedades ellos producen un
cambio. En el código de nuestra aplicación tendremos ese componente, y en él se declarará de
donde vienen los datos que él necesita para realizar su comportamiento. Podremos usarlo tantas
veces como queramos declarando que lo queremos usar y declarando también los datos que él
necesita para funcionar.
Quizás ahora, si no tenemos experiencia con otras librerías o frameworks de enfoque declarativo la
idea pueda quedar algo confusa, pero lo iremos viendo mejor con los ejemplos.
Este flujo tiende a ser unidireccional, pero entre componentes hermanos muchas veces se hace
más cómodo que sea bidireccional y también se puede hacer dentro de React. Sin embargo, si
tratamos siempre de mantener el patrón de funcionamiento unidireccional, nos facilitará mucho el
mantenimiento de la aplicación y su depuración.
El DOM Virtual está cargado en memoria y gracias a la herramienta que diferenciación entre él y el
real, el DOM del navegador se actualiza. El resultado es que estas operaciones permiten
actualizaciones de hasta 60 frames por segundo, lo que producen aplicaciones muy fluidas, con
movimientos suavizados.
Isomorfismo
Es la capacidad de ejecutar el código tanto en el cliente como el servidor. También se conoce
como "Javascript Universal". Sirve principalmente para solucionar problemas de posicionamiento
tradicionales de las aplicaciones Javascript.
Como anteriormente ya hemos hablado sobre este punto, lo vamos a dejar por aquí.
Elementos y JSX
ReactJS no retorna HTML. El código embebido dentro de Javascript, parece HTML pero realmente
es JSX. Son como funciones Javascript, pero expresadas mediante una sintaxis propia de React
llamada JSX. Lo que produce son elementos en memoria y no elementos del DOM tradicional, con
lo cual las funciones no ocupan tiempo en producir pesados objetos del navegador sino
simplemente elementos de un DOM virtual. Todo esto, como hemos dicho, es mucho más rápido.
React DOM y la herramienta de diffing, se encargarán más tarde de convertir esos elementos
devueltos por JSX en DOM Real, sin que nosotros tengamos que intervenir.
Los componentes stateless son los componentes que no tienen estado, digamos que no guardan
en su memoria datos. Eso no quiere decir que no puedan recibir valores de propiedades, pero esas
propiedades siempre las llevarán a las vistas sin producir un estado dentro del componente. Estos
componentes sin estado se pueden escribir con una sencilla función que retorna el JSX que el
componente debe representar en la página.
Los componentes statefull son un poco más complejos, porque son capaces de guardar un estado
y mantienen lógica de negocio generalmente. Su principal diferencia es que se escriben en el
código de una manera más compleja, generalmente por medio de una clase ES6 (Javascript con
ECMAScript 2015), en la que podemos tener atributos y métodos para realizar todo tipo de
operaciones. Los componentes statefull, con estado, necesitan tener un método render() que se
encarga de devolver el JSX que usar para representarlo en la página.
Podemos decir que los componentes con estado son componentes "listos" y los que no tienen
estado son "tontos". Los statefull se usan para resolver problemas mayores, con lógica de negocio,
mientras que los stateless se usan más para interfaces de usuario.
TECNOLOGIA VUE.JS:
Es un Framework progresivo, es decir, es un Framework que sirve para consumir interfaz del usuario.
Fue creado por Evan You que trabajaba en Google realizando prototipos y en el core del Framework de
Meteor, hasta que pensó en otra forma de hacer una opción más fácil que abarcara las necesidades a la
hora de hacer prototipos. Así surgió Vue en el 2014, desde entonces ha tenido una gran evolución y sigue
creciendo en su versión 2 cada vez más y más.
Características:
1. Accesible.
2. Versátil: Su núcleo es bastante pequeño y se escala a través de plugins, con lo cual escucharás mucho
que Vue es una librería muy parecida a React, una librería que cumple un propósito.
3. Escalable por el mismo tema de la versatilidad.
4. Reactivo.
5. Optimizado: Su core ocupa 74KB, como ves es bastante liviano.
6. Comunidad: Va creciendo a un ritmo importante con más 66500 estrellas en GitHub y 130 personas
contribuyendo al core cada día.
7. Licencia MIT: se publicó bajo el amparo de esta licencia.
Vue.JS tiene un gran ecosistema mantenido por los propios desarrolladores del core y la comunidad que
existe detrás de Vue.
Introducción a VueJS
Hoy quiero introducir un framework al cual le vi perspectivas desde su surgimiento por la sencillez en la que está enfocado.
Por alguna razón que en estos momentos me pregunto, deje de seguir sus nuevas versiones y las mejoras que estas traían,
enfocado en otras herramientas como Dojo Toolkit, la cual sigo recomendando a pesar de no ser tan popular. Hace poco
tiempo volví a ver a VueJS en su segunda versión y las potencialidades que tiene me llamaron bastante la atención sobre
todo porque mantiene el mismo enfoque de sencillez que le vi en sus primeras versiones. En este artículo veremos alguna
de las características que posee.
VueJS se autodenomina como un framework progresivo, nos brinda de posibilidad de indicar qué partes del framework
queremos incluir ya que está modularizado en diferentes librerías separadas que permiten ir añadiendo funcionalidad en el
momento que las vayamos necesitando.
El core principal de VueJS está formado por una librería encargada de renderizar vistas en el navegador. Su forma de
organizar el código es por medio de pequeños componentes que contienen todo el HTML, CSS y JavaScript necesario para
funcionar como pieza independiente. Estas piezas se van componiendo en un árbol jerárquico de componentes hasta formar
nuestra aplicación. Usar esta librería es tan fácil como importar el script en nuestra página HTML.
Si lo único que necesitamos como desarrolladores es una mejor forma de organizar y renderizar nuestros pequeños
componentes visuales, nos quedamos ahí y no incluiríamos nada más. En el momento que nuestra aplicación empezase a
crecer, contamos con librerías para gestionar las rutas de nuestra aplicación como vue-router o con librerías para gestionar
el estado global de la aplicación como pueda ser vuex. Si nuestra aplicación tuviese que tener una gran optimización o tener
buen SEO, podemos incluir y trabajar con vue-server-rendering.
Y así nos pasaría con muchas más funcionalidades. La cantidad de librerías con las que se cuentan (ya sean creadas por los
desarrolladores oficiales o por la comunidad) es tan grande y cubre tal espectro de funcionalidades, que será difícil que nos
encontremos desamparados y sin esa utilidad que nos es indispensable, y esa es una ventaja muy grande, el tener una amplia
comunidad sin dudas ayuda muchísimo, y a mi criterio, esta comunidad seguirá en aumento.
En VueJS, los componentes gestionan un modelo de datos interno. Estos componentes están diseñado bajo el patrón
MVVM. Esto quiere decir que el desarrollador no tiene que preocuparse tanto por cómo o cuando renderiza un modelo
en pantalla y sí más en cómo tiene que ser la lógica que gestiona ese modelo. El renderizado de HTML es delegado a
la librería. Nosotros simplemente jugamos con datos, métodos y plantillas HTML donde indicamos cuando se tiene que
pintar cada parte del modelo.
VueJS sabe comunicarse muy bien por medio de eventos asíncronos. Un componente hijo se puede comunicar con su
componente padre por medio de eventos. Dos partes del sistema pueden comunicarse por medio de eventos. Los
propios modelos de un componente son capaces de enviar eventos para indicar cuándo renderizarse. El sistema de
componentes se convierte en un organismo vivo que reacciona muy bien al cambio y realiza acciones programadas
por el desarrollador. Esto se debe a que el módelo de datos del componente es envuelto por getters y setters especiales
encargados de gestionar estas reacciones.
Para proyectos no tan básicos, se recomienda usar el CLI que han creado sobre NodeJS. Esta herramienta permite
empezar un proyecto con un boilerplate (o plantilla base) configurado a nuestro gusto de una manera fácil y sencilla.
Simplemente descargando desde npm la herramienta vue-cli, podremos crear una estructura inicial con la que trabajar
que cumple con la guía de estilo pactada por la comunidad.
Otra de las características que posee VueJS es que los componentes guardan todo lo necesario en ficheros con
extensión .vue. Estos ficheros contienen todo el HTML, el CSS y el JavaScript de un componente. Gracias a las
etiquetas template, script y style, se tienen los conceptos separados, pero juntos, de esta forma es más fácil reutilizar
ficheros en más de un proyecto. Todo el contenido queda más claro. Si el desarrollador está trabajando en un
componente en particular, tiene todo a la vista.
El ciclo de vida de VueJS contiene métodos con los que se puede manejar el comportamiento del mismo dependiendo
del momento. Puedes acceder a él en el momento de su creación, de su actualización, destrucción, etc. En estos
momentos es posible acceder para añadir o eliminar funcionalidades
4. Todo está en el sitio que tiene que estar. Cuando empecé con VueJS, me di
cuenta que miraba la documentación menos que en la de otras herramientas.
Asimilaba la sintaxis antes. Incluso la propia intuición me permitía usar la
librería sin tener que mirar la documentación previamente. Esto se debía a
que el naming de la API de VueJS es bastante intuitiva. Con saber lo que
significaprops, data y methods y qué puedo incluir en estas partes, podía
empezar a hacer mucho, con muy pocos conocimientos. De hecho, si no os
explico de qué trata cada una de estas partes de la API, lo más seguro es que
supieseis de qué estoy hablando. Es una de las virtudes de VueJS. Ser fácil,
intuitivo y poco recargado. Cada parte está en el lugar que debería estar. Esto
es algo dificil de entender hasta que no se está desarrollando algo en VueJS,
pero creedme, que si le dáis una oportunidad, esto lo notareis.
Todo el código de un componente se
encuentra en un único fichero
Vale, quizá tampoco sea nada novedoso. Habíamos comentado que en ReactJS
todo se transformaba en JavaScript, por tanto, todo el código de un componente,
ya sea HTML (JSX en este caso), CSS y JavaScript se va a encontrar en un único
fichero con extensión .jsx. Y quizá estos sistemas no lo veas ni como una ventaja
¿Qué pasa con la separación de conceptos? ¿Ya no debemos separar el
contenido, de su estilo y su lógica de negocio?
.search-box {
display: flex;
height: 3rem;
button,
input {
&:focus {
outline: none;
}
}
input {
width: 100%;
padding: 0 0.5rem;
border: 1px solid $color-basic-2;
border-right: 1px solid $color-light;
}
button {
padding: 0 2rem;
background: $color-light-darken;
color: $color-basic;
font-weight: bold;
border: 1px solid $color-light-darken;
&:hover {
cursor: pointer;
background: $color-light;
border: 1px solid $color-light;
}
}
span {
display: block;
font-size: 1.5rem;
padding: 0.5rem 1rem;
}
}
</style>
En esta ocasión, observamos un componente que representa un típico buscador.
Es el componente SearchBox.vue. Este componente se encarga de renderizar un
formulario con un elemento <input /> y un elemento <button />.