Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Downloads/ionic 2/manual Ionic2
Downloads/ionic 2/manual Ionic2
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 1 de 39
Manual de Ionic 2
Este es el manual de Ionic 2 en el que explicaremos cmo crear apps hbridas para mviles.
Con Javascript y una misma base de cdigo podremos producir aplicaciones instalables por
medio de las correspondientes tiendas de aplicaciones, para iOS, Android y Windows Phone.
A lo largo de diversos artculos iremos recorriendo paso a paso todos los conocimientos y
prcticas para poder crear tus propias apps, aprendiendo a trabajar con los componentes que
Ionic 2 te proporciona, la estructura de las aplicaciones, el acceso a las partes nativas de los
mviles o tablets o la compilacin de proyectos.
Para seguir este manual es recomendable que conozcas de entrada Angular, ya que Ionic 2 est
basado en Angular 2 en adelante. Esa parte la dejamos para el Manual de Angular 2 que
tenemos en DesarrolloWeb.com, aunque procuraremos explicar al menos de manera resumida
conceptos tanto del propio Ionic como de TypeScript y del framework Javascript Angular.
Este manual est en proceso de escritura, por lo que de momento puedes encontrar pocos
artculos. Iremos publicando nuevas entregas en las prximas semanas.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 2 de 39
Manual de Ionic 2
Las siguientes personas han participado como autores escribiendo artculos de este manual.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 3 de 39
Manual de Ionic 2
Qu es Ionic 2
Este es el primero de una serie de artculos para explicar Ionic 2 con el que iremos
componiendo el Manual de Ionic 2 de DesarrolloWeb.com. Lo estamos desarrollando ya con la
versin final de Ionic 2, la versin ms nueva del framework ya estable y preparada para
produccin. Aunque seguro que ests deseando empezar por instalar Ionic y comenzar tu
primer proyecto, en este momento comenzaremos por aclarar algunos conceptos.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 4 de 39
Manual de Ionic 2
ms rpida en el desarrollo de apps para mviles. Para hacer esto posible, las aplicaciones
hbridas se ejecutan en lo que se denomina un web view, que no es ms que una especie de
navegador integrado en el mvil y en el que solamente se ejecuta la app hbrida.
1. Con una misma base de cdigo sern capaces de compilar apps para funcionar
correctamente en una gran cantidad de sistemas operativos de mviles o tablets.
Generalmente nos ser suficiente que nuestra app funcione en iOS y Android, pero
Ionic es capaz de compilar a otros sistemas como Windows Phone.
2. El coste del desarrollo es sensiblemente menor, ya que no es necesario contar con varios
equipos de desarrollo para cada lenguaje concreto de cada plataforma.
3. El tiempo de desarrollo tambin es menor, ya que solo es necesario construir la
aplicacin una vez e inmediatamente la tendremos en todas las plataformas a las que
nos dirigimos.
4. Es de ms fcil adaptacin para los desarrolladores que vienen de la web.
Pero todo no son ventajas, tambin podemos enumerar algunas desventajas en relacin a las
aplicaciones nativas (aquellas construidas con los lenguajes propios de cada sistema, Java para
Android y Swift / Objective-C para iOS):
1. El rendimiento de una aplicacin nativa suele ser mejor que el de una hbrida, aunque
las hbridas han mejorado mucho en este sentido.
2. Al ejecutarse en un web view dependemos de las tecnologas disponibles para el
desarrollo web, que pueden ser menos ricas y potentes que las disponibles en nativo.
3. En las aplicaciones nativas trabajamos directamente con el hardware del telfono,
mientras que en las hbridas dependemos de plugins para su acceso. Esto puede derivar
en problemas, pero afortunadamente cada vez son menores.
Nuestro cdigo por tanto tendr ms calidad usando Angular y podremos usar muchas de sus
utilidades pensadas para un desarrollo ms rpido. Gracias a usar Angular 2 en adelante,
tenemos adems la certeza de disponer de un cdigo ms optimizado y de mayor rendimiento,
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 5 de 39
Manual de Ionic 2
Todos los frameworks modernos usan esta arquitectura, que se ha demostrado que es la que
ofrece un mejor cdigo, ms fcilmente escalable y mantenible.
Los componentes estn pensados para, de manera modular y encapsulada, resolver pequeos
problemas. Por ejemplo puede haber componentes para implementar un sencillo botn,
componentes para hacer un sistema de navegacin por tabs, para selectores de fechas, etc.
Integrando componentes somos capaces de construir aplicaciones grandes y complejas. Ionic 2
nos ofrece ya de base una cantidad muy grandes de componentes que son capaces de trabajar
perfectamente en dispositivos mviles con pantallas tctiles pero obviamente para el
desarrollo de nuestras aplicaciones necesitaremos construir nuestros propios componentes
que implementen los comportamientos ms especficos de nuestro modelo de negocio.
TypeScript
Otra cosa que viene dada por el desarrollo de Angular es el uso del lenguaje TypeScript, que no
es ms que un "superset" de Javascript. Dicho de otra forma, TypeScript es Javascript pero con
aadidos pensados para mejorar el trabajo por parte de los desarrolladores, hacindonos ms
productivos.
No debemos pensar en TypeScript como un problema por ser algo que debemos aprender de
nuevo. TypeScript es en realidad Javascript, por lo que no significa aprender un nuevo
lenguaje, sino agregar algunas cosas al que ya conoces, cosas que en definitiva te van a ayudar
durante la etapa de desarrollo y a la hora de mantener las aplicaciones en el futuro. Puedes
aprender ms sobre TypeScript en este artculo y tambin sobre las nuevas versiones de
Javascript en el Manual de ES6.
TypeScript requiere una transpilacin del cdigo, de modo que aquel cdigo que escribes en
TypeScript se convierta en cdigo Javascript capaz de ejecutarse en cualquier navegador. Esa
transpilacin la realiza Ionic 2 por debajo, por lo que no representa un problema para el
desarrollador.
Esto es una ventaja en s, porque las personas disfrutarn de aplicaciones con una experiencia
de usuario cercana a la que estn acostumbrados en su telfono y nos evita a los
desarrolladores la necesidad de trabajar ms para conseguir este efecto. Sin embargo, como
autores de las apps con Ionic 2 tambin somos capaces de alterar el diseo de las aplicaciones,
proporcionando una experiencia de usuario especfica y original para nuestra propia
aplicacin.
Una vez que la app est construida se tiene que realizar el proceso de compilacin, en el que se
producen los ejecutables especficos para cada dispositivo. Ese proceso s es un poco ms
pesado para el procesador, pero se hace solo cuando tenemos que lanzar una nueva versin
que se subir a las tiendas de aplicaciones.
Aqu como nativo nos referimos a elementos como la cmara, acelermetro, teclado virtual,
etc. Todos esos elementos se pueden usar desde las aplicaciones de Ionic, con los
correspondientes plugins nativos, que forman una especie de puente entre el desarrollo con
Javascript y el telfono.
Apache Cordova tambin es el software que nos permite compilar el desarrollo realizado con
Ionic con tecnologas web en aplicaciones para mviles instalables va tiendas de aplicaciones.
Conclusin
Ionic 2 es una excelente alternativa para el desarrollo de apps. Hemos repasado diversos
conceptos que usaremos a lo largo de este manual y sobre los que sin duda volveremos muchas
veces y ampliaremos la informacin llegado el momento en el que sea necesario.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 7 de 39
Manual de Ionic 2
paso. De todos modos, si deseas aprender de una manera sencilla y rpida, ya mismo, tambin
te recomendamos el Curso de Ionic de EscuelaIT, en el que aprenders de manera tutorizada y
mucho ms detallada, rpida, rigurosa y sobre todo de principio a fin.
Para acabar te dejamos a continuacin el vdeo de la clase previa al Curso de Ionic, en el que
podrs de una manera prctica aprender acerca de los primeros pasos en el desarrollo de apps
para mviles.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 8 de 39
Manual de Ionic 2
Instalar Ionic 2
Despus de haber explicado en lneas generales qu es Ionic y haber conocido varios de los
conceptos con los que vamos a trabajar en este manual, en el presente artculo vamos a
comenzar a preparar nuestro entorno de desarrollo para comenzar a trabajar. Nos ocuparemos
de la instalacin del framework, un proceso bastante sencillo de realizar.
Pero antes de comenzar tenemos que aclarar que, para poder realizar todo el flujo de
desarrollo de una app con Ionic 2, se requieren dos pasos diferentes. El primero es la
instalacin de todo el SDK de Ionic 2 y las herramientas de trabajo con la lnea de comandos.
El segundo es la instalacin del entorno que nos permitir compilar una aplicacin
desarrollada con Ionic en un archivo que podamos subir a la tienda de aplicaciones.
Por el momento vamos a limitarnos a instalar Ionic 2 para poder trabajar en local, es decir,
realizar el desarrollo de nuestra aplicacin, pero no su compilacin para subir a las stores de
aplicaciones. Para compilar el proceso es un poco ms largo y complejo, que depende
directamente de Apache Cordova (que es quien realmente realiza el empaquetado de la app en
un archivo nativo) y requiere los SDK de Android o iOS y veremos ms adelante.
Para todo este proceso necesitaremos tener NodeJS instalado en nuestro sistema, al menos en
su versin 6 en adelante. No vamos a entretenernos explicando cmo instalar Node, ya que es
un tema que se trata en el Manual de NodeJS.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 9 de 39
Manual de Ionic 2
Nota: En algunos casos podras necesitar la instalacin de ese comando usando "sudo",
para usarlo como superusuario. Obviamente no aplica a Windows.
En el caso de Windows puede que te sea necesario instalar iniciando la consola de lnea de
comandos en modo administrador (clic derecho en el icono de tu terminal preferido y "abrir
como administrador". Adems en algunos casos te podra solicitar instalar el Visual Studio
(versin community que es gratuito).
El gestor de dependencias npm se encargar de traerse todas las libreras necesarias para hacer
funcionar Ionic CLI y Cordova, de manera automtica para nosotros
Una vez instalado puedes usar el intrprete de lnea de comandos de Ionic para realizar
diversas tareas necesarias durante la etapa de desarrollo.
Nota: En este momento te pueden salir unos warnings, indicando que necesitas otras
dependencias. Podemos simplemente dejar pasar esos avisos (no son errores, simplemente
warnings), ya que no vamos a ocuparnos todava de la compilacin de los proyectos.
Al acabar el proceso te preguntar si quieres crear una cuenta en Ionic (Create a free Ionic
account). Este paso no es necesario por el momento, pero tampoco resultara de ms crearnos
esa cuenta.
cd mi-primera-app-ionic
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 10 de 39
Manual de Ionic 2
Una vez dentro de la carpeta de nuestro proyecto, podemos servir la aplicacin en el navegador
con el comando "ionic serve".
ionic serve
Despus de unos instantes en los que el sistema est produciendo los archivos de nuestro
proyecto para que se puedan ver bien en el navegador, se nos abre directamente el navegador,
mostrando la aplicacin que acabamos de iniciar. Como vers, ya tiene algunos componentes
sencillos, con algo de texto y unas tabs para navegacin por diversas pantallas.
Nota: Ionic 2 tiene algunos templates para implementar en las apps recin creadas. El
predeterminado incluye el sistema de navegacin por pestaas, pero en el siguiente artculo
aprenderemos a crear un proyecto vaco para marearnos con menos cdigo para comenzar.
La aplicacin se abre en toda la pantalla del navegador y se ver muy muy grande. Una
alternativa para verla de otra manera es usar el "ionic lab".
Puedes salir del proceso que est sirviendo la aplicacin con CRTL + C, en la consola, y luego
correr el comando:
En este caso vers que la aplicacin se ve en un lienzo ms estrecho, con lo que podremos
apreciar mejor las condiciones de visualizacin que tendra al mostrarse en la pantalla de un
mvil.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 11 de 39
Manual de Ionic 2
Adems arriba a la derecha podemos seleccionar otras plataformas, para ver cmo se
mostrara nuestra aplicacin en un Android / iOS y Windows Phone.
En la siguiente imagen podemos ver cmo nuestra aplicacin tiene ligeras diferencias al
visualizarse en las distintas plataformas, algo que sin duda es una de las caractersticas ms
asombrosas de Ionic, el proveer de experiencias de usuario adaptadas a cada sistema operativo
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 12 de 39
Manual de Ionic 2
Conclusin
Hemos conseguido instalar Ionic en local e iniciar un primer proyecto. Hemos ocupado pocos
minutos y ya tenemos algo funcionando que podemos tocar, lo que resulta bastante
asombroso.
Recuerda que lo que has hecho de momento solo te permite trabajar con Ionic en tu ordenador
y no producir archivos para ejecutar apps en el mvil. Para conseguir eso requiere instalar otra
serie de programas y SDK de los que hablaremos ms adelante en este manual, pero siempre
puedes estudiar la documentacin (o hacerte el curso de Ionic 2 que tenemos en EscuelaIT,
claro).
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 13 de 39
Manual de Ionic 2
Primera aplicacin, creada desde cero, en Ionic 2. Paso por paso exploramos
algunas de las caractersticas ms bsicas para el desarrollo de una app.
Despus de haber instalado Ionic en local, podemos comenzar a desarrollar nuestra primera
app. Como vers, dar los primeros pasos en Ionic es sencillo, todava ms si tienes algunos
conocimientos de Angular, como los que hemos abordado en el Manual de Angular 2.
En este artculo vers cmo puedes crear tu primera app con Ionic 2 y algunos componentes
sencillos con los que podamos comenzar de una manera fcil, llegando un poco ms all que
presentar un simple texto por pantalla.
Realmente no vamos a explicar demasiadas cosas de Ionic todava y lo que necesitamos para
poder hacer esta pequea prctica depende realmente ms de Angular que del propio Ionic.
Tambin dejaremos para ms adelante entrar en detalle sobre cada elemento de la aplicacin y
la estructura de un proyecto con Ionic 2, aunque s nos servir para ir familiarizndonos con la
arquitectura de las apps hbridas.
Nota: El paso de la instalacin de Ionic 2 la tienes que haber realizado previamente. Para
saber cmo hacerlo puedes acceder al artculo de instalar Ionic. Puedes hacer "ionic -v"
desde tu terminal para saber si Ionic est instalado. Obviamente, para poder iniciar un
proyecto con Ionic 2 necesitas una versin 2.0 o superior. En el momento de escribir este
artculo estamos ejecutando la 2.2.1.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 14 de 39
Manual de Ionic 2
Ese comando lo ejecutars desde la pgina donde tienes tus proyectos y crear una carpeta
llamada "hola-mundo" donde colocar el proyeco de Ionic recin generado. Ahora nos
movemos a esa carpeta y podemos comenzar a trabajar con nuestro editor de cdigo preferido.
Lo ms sencillo para comenzar es abrir el HTML y editar alguna cosa. El archivo se llama
home.html y vers que ya tiene un poco de cdigo.
Puedes alterar home.html. Al final es solo un poco de HTML, por lo que no te costar nada de
trabajo. Puedes dejar algo como lo que sigue:
<ion-header>
<ion-navbar>
<ion-title>
Ionic Blank
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<h1>Hola Mundo</h1>
</ion-content>
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 15 de 39
Manual de Ionic 2
Este es el aspecto que tendra la app, para la plataforma Android, una vez puesta en marcha
con el Ionic Lab.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 16 de 39
Manual de Ionic 2
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 17 de 39
Manual de Ionic 2
Como puedes comprobar si abres el archivo, Ionic 2 usa el formato de trabajo que viene dado
en EcmaScript 2015 (ES6), con imports y clases de programacin orientada a objetos. Pero
adems encontramos un @Component que quizs no habas visto nunca, si es que no conoces
de antemano Angular. Eso ese @Component se llama "decorator" y es algo que aporta
TypeScript.
Nota: Puedes aprender algo ms de sobre esta sintaxis de uso de Javascript en el Manual
de ES6.
Aqu hemos colocado algo que es caracterstico de TypeScript, que es la definicin de tipos.
Seguramente te llamar la atencin "test:string". Ese ":string" es lo que indica a TypeScript que
el tipo de la variable "test" es una cadena de caracteres. La definicin de tipos nos ayuda a la
hora de compilar un programa, pues si accidentalmente asignamos un tipo diferente a la
variable "test", el compilador de TypeScript nos avisar. Adems, si usas VSCode (Visual
Studio Code), que ya tiene una integracin con TypeScript, cualquier error de tipos ser
advertido en tiempo real, en el momento de escribir tu cdigo.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 18 de 39
Manual de Ionic 2
La gracia consiste ahora en mostrar ese texto de la propiedad "test" en la pgina. Es tan
sencillo como editar el HTML (archivo "home.html") y colocarle en cualquier lugar:
<p>{{test}}</p>
Nota: Las dobles llaves sirven para volcar el contenido de una variable (propiedad de la
clase) definida en el cdigo del componente.
Si una vez realizadas estas modificaciones vas a tu navegador, deberas ver los cambios ya
refrescados. Esto es debido a que el propio servidor de Ionic 2 tiene un "watch" que refresca la
pgina (live reload) automticamente. Claro est, necesitas asegurarte de:
<p>
<ion-icon name="logo-angular"></ion-icon>
Me gusta Angular
</p>
Al guardar el fichero se refrescar la pgina y podrs ver el nuevo prrafo con el icono de
Angular.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 19 de 39
Manual de Ionic 2
Nota: Hablando de componentes de Ionic 2, habrs observado tambin que nuestra pgina
ya inclua un componente, o varios, previamente en el cdigo. Arriba del todo, cuando usa
"ion-header" y varios componentes anidados para producir la barra de ttulo de tu app.
Conclusin
Hemos podido empezar a meterle mano en el cdigo de la app. De momento hemos hecho
modificaciones muy muy simples, pero todo es comenzar. A partir de aqu podremos ir
incrementando la dificultad para hacer cosas ms asombrosas.
Lo que has podido comprobar es que el flujo de trabajo con Ionic 2 es bastante gil, pudiendo
desarrollar y visualizar los cambios en pocos instantes en el navegador. Si te has entretenido en
echar un vistazo a la documentacin, en la seccin "components", habrs visto que hay muchas
cosas de las que podrs sacar partido para hacer diversos comportamientos comunes de las
aplicaciones realmente rpido.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 20 de 39
Manual de Ionic 2
Ionic CLI
Ionic CLI es el intrprete por lnea de comandos de Ionic, que contiene una serie de
herramientas tiles para realizar, de una forma sencilla, muchas tareas habituales en el
desarrollo y produccin de aplicaciones con Ionic 2.
En este artculo del Manual de Ionic 2 vamos a darle un primer repaso a las opciones con las
que contamos, centrndonos en las que son ms bsicas para comenzar, como la creacin de
proyectos con distintos templates. Mencionaremos otras opciones fundamentales, aunque se
dejarn para ms adelante los detalles y las prcticas, pues corresponden a fases adelantadas
del desarrollo, como la parte del build.
ionic -v
Otro comando til para saber tu entorno de desarrollo completo para Ionic, que te indica no
solo la versin del CLI sino tambin el sistema operativo, NodeJS, etc. es lanzar el comando:
ionic info
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 21 de 39
Manual de Ionic 2
Lo que conseguimos con este comando es crear una carpeta llamada "nombre-proyecto" que
iniciar una aplicacin Ionic 2 con el template de "tabs". Esto incluye una cantidad de
subcarpetas con una estructura de proyecto definida para las apps de Ionic 2. Ms adelante
iremos conociendo esa estructura con detalle.
Encontrars varias opciones para comenzar tus aplicaciones, desde una app en blanco, una con
tabs, con un completo men lateral, etc. Sin embargo, estos no son todos los que podras usar,
tambin existen diversos starters que se encuentran disponibles en Ionic Market, tanto
gratuitos como de pago.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 22 de 39
Manual de Ionic 2
Para mostrar nuestra aplicacin en el navegador simplemente tenemos que iniciar un servidor
web integrado en Ionic CLI, con el comando "serve".
ionic serve
Este comando lanza todo el proceso de transpilacin y abre la app en el navegador. Adems
contiene un sistema de "LiveReload", que permite refrescar el navegador cuando haya cambios
en el cdigo de la app.
--lab: Nos permite abrir el "ionic lab" con el que podemos ver cmo se presentara la
app en cada tipo de plataforma mvil.
--port: si queremos cambiar el puerto donde escucha el servidor.
--address: Si indicas esta opcin, asignando tu IP local, el servidor se iniciar sobre esa
IP en lugar de localhost. Esto puede ser til si quieres visualizar el contenido desde
otros sistemas, en caso que no lo consiguas ver desde ordenadores o dispositivos
externos con "ionic serve" a secas. Por ejemplo usas: ionic serve --
address=192.168.1.103
--platform: Esto te permite iniciar viendo la app tal como se mostrara en una
plataforma en concreto (iOS / Android).
ionic -h
Ahora te resumimos otros comandos del CLI muy interesantes, que veremos en su momento
en este manual, a medida que vayamos llegando a cada una de las partes involucradas con cada
herramienta:
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 23 de 39
Manual de Ionic 2
Recuerda que no son los nicos comandos del CLI y que podrs encontrar otras opciones con
"ionic --help".
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 24 de 39
Manual de Ionic 2
En este artculo vamos a resumir algunas de las cosas que vers de inicio en Ionic 2 y que
seguro sern novedad para los lectores que no tienen demasiada experiencia en ES6 y
TypeScript.
Lejos de querer ser una descripcin exhaustiva de lo que viene con ES6 y TypeScript, pretende
ayudar a las personas a que no se pierdan y comiencen a entender las nuevas reglas de sintaxis
que usaremos en estos lenguajes.
Aunque sean cosas distintas, ES6 y TypeScript, las agrupamos en este mismo artculo porque
el propio TypeScript es el que nos aporta la posibilidad de trabajar con ES6, gracias a su
transpilador.
Transpilador de TypeScript
Aunque en el desarrollo con Ionic 2 no vamos a tener que trabajar directamente con el
transpilador, s conviene saber qu es y por qu se usa en Ionic.
Ionic 2 usa Angular y ste a su vez se escribe preferentemente con TypeScript. TypeScript es un
Javascript pero con diversos aadidos para facilitar diversas tareas de los programadores, pero
no es compatible con los navegadores actuales.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 25 de 39
Manual de Ionic 2
TypeScript usa todo lo que viene ya como beneficio en la programacin con ES6 y alguna cosa
de ES7, por lo que realmente el cdigo es prcticamente Javascript, pero en sus versiones ms
evolucionadas. En esa traduccin el cdigo ES6 tambin es convertido a cdigo ES5,
compatible con todos los browsers.
Imports ES6
En TypeScript podemos acceder a ficheros de mdulos externos gracias a los imports. Por
cerrar el punto anterior, aunque como muchas otras cosas, los imports vienen de ES6, los
podemos usar gracias al transpilador de TypeScript.
Usar los imports es sencillo. Simplemente tenemos que indicar qu cosa o cosas quieres traerte
y del archivo donde estn definidas.
Que indica que te ests trayendo la clase NavController del mdulo 'ionic-angular'.
A la hora de hacer un import en esos dos ejemplos traamos clases, pero en Javascript
podemos importar cualquier cosa (funciones, variables, constantes, etc.) que haya sido
exportada en un mdulo.
Ya en el cdigo del mdulo que estamos importando, para definir lo que ser visible (e
importable) desde fuera se utiliza la palabra "export".
Nota: Cuando decimos mdulo nos referimos a cualquier archivo externo con cdigo
Javascript / TypeScript.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 26 de 39
Manual de Ionic 2
//
As pues, desde un mdulo exportas algo y, desde cualquier otro mdulo donde quieras usarlo,
tienes que realizar el correspondiente import.
Decoradores de TypeScript
Otra cosa que seguramente te llamar la atencin son los decoradores, que fornan parte
tambin del propio TypeScript. Los decoradores dan informacin sobre cmo se debe de
comportar una clase.
Existen diversos tipos de decoradores y adems pueden indicar diversos juegos de atributos.
Por ejemplo, este sera el decorador usado para la class "HomePage" que habamos estado
definiendo en el artculo del "Hola Mundo".
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
Depende de lo que sea que estamos creando, un tipe, un componente, una directiva, etc. debes
asignar cosas distintas en l. En este caso estamos usando el decorador de componente
"@Componet", porque realmente la pgina "home" se declara en base a un componente (como
cualquier pgina de Ionic 2).
// cdigo de la clase
Una clase tiene sus miembros, como mtodos y funciones y la manera de crearlos no dista
mucho de la de otros lenguajes.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 27 de 39
Manual de Ionic 2
propiedad = 3;
metodo() {
Se ha declarado una variable "test" con tipo de datos "string", en la que se asigna adems una
cadena de texto directamente. La novedad hasta ahora es la posibilidad de definir los tipos de
manera esttica, en el cdigo, y no dinmica, deducida en el momento de la ejecucin segn se
asignan valores a las variables.
Los tipos de datos posibles en TypeScript son los que ya existen en Javascript, y alguno
adicional:
Boolean
Number
String
Array (vectores, arreglos matrices. Varios valores unidos en una variable y accesibles
por un ndice. Adems, en los arrays podemos marcar que todas sus casillas sean de un
mismo tipo)
Tuplas y enumerados (que no vamos a ver todava)
Any (es un tipo de datos que acepta cualquier tipo, realmente este tipo de datos es el de
las variables de Javascript, de tipado dinmico. En TypeScript si no indico tipos, se
deduce que es un tipo "any")
Void (vaco, nada. Usado para funciones que no devuelven valores)
Null y Undefined (nulo o indefinido)
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 28 de 39
Manual de Ionic 2
Y tambin podra declarar un array sin indicar qu tipos de datos debe tener cada una de sus
casillas de manera rgida.
Adems de todos estos tipos bsicos, cuando creamos una clase de objetos con TypeScript
estamos creando un tipo y por tanto podremos declarar variables que sern objetos de esa
clase. TypeScript ser capaz de comprobar que siempre que se asigne algo a esas variables sea
del tipo dado, y el editor nos podr ayudar con el intelisense.
Gracias a este punto, cabe decir que cualquiera de los arrays definidos en el paso anterior sera
mejor declararlos con let, en el caso que se pueda por el mbito que se le aplicara.
Conclusin
Hay muchas otras novedades que deberamos comentar, pero con estas podremos dar los
primeros pasos con Ionic 2 sin mayores problemas, incluso si ests acostumbrado a usar
Javascript del antiguo (ES5).
En el siguiente artculo veremos una lista de conocimientos necesarios para las personas que
no conocen antemano Angular en su versin 2 o superior.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 29 de 39
Manual de Ionic 2
Ionic 2 est creado encima de Angular, as que nuestras posibilidades de desarrollo estn muy
entrelazadas con las de este framework Javascript. Debe quedar claro que realmente no
necesitamos hacer nada para poder empezar a usar Angular, ya que viene perfectamente
integrado y funcionando en el proyecto bsico de Ionic 2.
Habamos dicho que nuestro Manual de Ionic 2 no pretenda ser una gua para el desarrollo
con Angular, ya que el framework Javascript es suficientemente complejo como para verlo de
manera independiente en el Manual de Angular. No obstante s queremos detenernos a ver
rpidamente algunas cosas que en este framework de desarrollo hbrido debemos conocer,
heredadas directamente de Angular. Las veremos rpidamente, pero si ya conoces Angular 2
posiblemente poco nuevo aportaremos para ti, con lo que podras perfectamente saltar este
artculo y continuar por el siguiente.
Nota: Repetimos una vez ms que al referirnos a "Angular" estamos incluyendo las
versiones 2 en adelante. Como ya apuntamos "Angular 2" cambi de nombre y se llama
simplemente Angular. Las versiones que vayan apareciendo en lo sucesivo sern siempre
bajo la misma arquitectura de Angular 2.
Componentes en Angular
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 30 de 39
Manual de Ionic 2
Nota: De momento en este artculo no vamos a crear componentes nuevos. Nos vamos a
limitar a editar el cdigo que tenemos en el componente bsico que se crea en el template
"blank" que se us en el artculo Hola Mundo en Ionic 2. En aquella ocasin se mencion
que el componente de la pgina de inicio para nuestra aplicacin est en la ruta:
"src/pages/home".
Desde las vistas de Ionic 2, en archivo .html, podemos acceder a propiedades y mtodos del
componente definidas en el archivo de TypeScript, para volcar informacin de propiedades,
recorrer items de un array con directivas como ngFor, crear condicionales con ngIF, definir
eventos que se ejecuten por medio de mtodos de la clase del componente, etc.
{{nombre_propiedad}}
Esto es bsicamente lo que hicimos en el pasado artculo del Hola Mundo en Ionic 2, as que
no necesita mucha ms explicacin.
Nota: Ya no muestro el cdigo completo de la clase, que es bsicamente algo que se repite
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 31 de 39
Manual de Ionic 2
Si queremos mostrar ese valor como un atributo de un componente, usamos la sintaxis de los
corchetes. Solo que ahora colocamos los corchetes en el nombre del atributo cuyo valor
tenemos que traer de una propiedad.
Nota: En este ejemplo solamente estamos asignando el valor, lo que haya en la propiedad
"autor" se mostrar como value del input. Sin embargo, si modificamos el texto del input
nosotros mismos, el nuevo valor no estar viajando al componente. Dicho de manera
tcnica, el binding es de una nica direccin. Angular es capaz ahora de desplegar un
sistema de binding mucho ms optimizado y para ello los enlaces pueden ser de una o dos
vas, a criterio del desarrollador. Luego veremos cmo conseguir esa doble va.
Entre parntesis colocaremos el tipo de evento y luego como valor el nombre de la funcin a
ejecutar.
As tenemos un botn (con la directiva ion-button indicamos que se visualice con las reglas de
estilo determinadas para cada plataforma) y su evento "click", asignado a la funcin
cambiarAutor(). Esa funcin se define como un mtodo en el cdigo TypeScript del
componente.
cambiarAutor() {
Al hacer clic se invocar el mtodo cambiarAutor(), que modificar la propiedad "autor". Eso
provocar un cambio en la pgina, all donde se est usando esa propiedad, actualizando el
valor en la vista.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 32 de 39
Manual de Ionic 2
Puedes fijarte que realmente estamos usando en una nica vez dos caractersticas de las
comentadas antes en este artculo. Los corchetes sirven para asignar un valor en un atributo y
los parntesis para ejecutar una funcin. Lo que se est asignando y ejecutando es ngModel, la
directiva que nos permite hacer esta operacin.
Este podra ser el cdigo de nuestra clase, definido un array llamado "arraySitios" por medio
de un literal:
arraySitios:any[] = [
nombre: 'DesarrolloWeb.com',
url: 'https://desarrolloweb.com'
},
nombre: 'EscuelaIT',
url: 'https://escuela.it'
},
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 33 de 39
Manual de Ionic 2
<ion-list>
<a href="{{sitio.url}}">{{sitio.nombre}}</a>
</ion-item>
</ion-list>
Usamos el componente "ion-list" que nos permite hacer una lista de items. Luego los items se
definen con ion-item. En el cdigo solo aparece 1, pero gracias al *ngFor se duplicar el cdigo
del tem para cada uno de los elementos del array.
En este caso indicamos *ngFor="let sitio of arraySitios", que bsicamente quiere decir que se
cree una variable "sitio" cuyo valor ser cada uno de los tem del array, en cada iteracin.
Dentro del componente de la repeticin (ion-item) podemos acceder al tem actual con la
variable "sitio", que como es un objeto tendr sus propiedades "nombre" y "url".
Conclusin
Como hemos dicho, Angular es gigante y cualquier intento de resumirlo en un artculo sera un
completo despropsito. Pero estamos seguros que con lo que hemos visto seremos capaces de
sobrevivir en lo sucesivo con Ionic 2, entendiendo varias de las sintaxis que nos son entregadas
por esta trabajando directamente con Angular.
Para que no haya lugar a dudas, dejo a continuacin el listado de los dos archivos que hemos
tocado durante este artculo, dentro del componente "home" del template blank de Ionic 2.
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
arraySitios:any[] = [
nombre: 'DesarrolloWeb.com',
url: 'https://desarrolloweb.com'
},
nombre: 'EscuelaIT',
url: 'https://escuela.it'
},
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 34 de 39
Manual de Ionic 2
cambiarAutor() {
<ion-header>
<ion-navbar>
<ion-title>
Ionic Blank
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<h1>Hola Mundo</h1>
<p>{{test}}</p>
<p>
<ion-icon name="logo-angular"></ion-icon>
Me gusta Angular
</p>
<ion-list>
<a [href]="sitio.url">{{sitio.nombre}}</a>
</ion-item>
</ion-list>
</ion-content>
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 35 de 39
Manual de Ionic 2
Al crear un proyecto con Ionic CLI obtenemos una lista de carpetas y archivos que forman
parte de nuestra aplicacin. Obviamente, cada parte tiene su funcin, aunque hasta el
momento no hayamos llegado a explorarla.
En este artculo veremos cul es la anatoma de un proyecto en Ionic, comentando las distintas
carpetas que nos encontramos, su funcin y contenido. Nuestro objetivo es tener una visin
general del proyecto, por lo que en otros artculos del Manual de Ionic 2 entraremos en
mayores detalles.
Vamos a verlos por importancia, no por el orden con el que los puedas encontrar en tu listado
de directorio.
Carpeta src
En esta carpeta es donde realizamos la mayor parte del trabajo con Ionic, son archivos fuente
con el cdigo original que escribirs al desarrollar tu aplicacin, o con cdigo que viene dado al
iniciar el proyecto con "ionic start". "src" contiene cdigo que se tendr que transformar para
poder ejecutarse o producir los archivos finales que se irn a las stores.
El 98% de tu proyecto lo vas a pasar dentro de esta carpeta. En ella de entrada ya encontramos
bastantes archivos clasificados en otras tantas carpetas. Tenemos por ejemplo el directorio
"pages", donde se irn colocando las pginas (pantallas) de tu aplicacin, as como los assets
(archivos de imgenes y otro tipo de materiales externos que vas a usar en las pginas), o el
componente app, que es la raz de nuestra aplicacin.
Encontrars una serie de archivos sueltos, como el index.html, que es el punto de arranque de
la aplicacin web. Encontrars tambin el archivo service-worker.js, que es el service worker
(de las Progressive Web Apps) que usars si deseas publicar tu proyecto de Ionic 2 como una
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 36 de 39
Manual de Ionic 2
app para la web. O el manifest.json, tambin para definir una Progressive Web App.
Carpeta www
En la carpeta "www" estn los archivos que se producen cuando realiza toda la parte de la
transpilacin del TypeScript, el compilado de los archivos Sass, el linting del cdigo, etc. En ese
proceso, todos los archivos de "src", se transforman y se vuelcan en la carpeta "www". Esos
archivos producidos en "www" son los archivos de una aplicacin web, con Angular, que se
podrn visualizar correctamente en el navegador.
Durante la mayor parte del proceso de desarrollo vamos trabajando con el proyecto de Ionic y
vamos visualizando los resultados en el navegador. En resumen, en www estn los archivos
que se estn visualizando desde el navegador al hacer el ionic serve, o los archivos que se
tomarn cuando vayas a producir tu app para cada plataforma.
En esta carpeta no deberas editar nada, puesto que los cambios se machacarn la prxima vez
que se sirva el proyecto para visualizarse a travs del navegador, o al hacer el build. Realmente
tienes que editar lo que desees en la carpeta "src". En este sentido un error tpico es editar
cualquier archivo, como el index.html, de la carpeta www y cuando vas a visualizar los cambios
encuentras que no se ha modificado nada. Es debido a que el ndex.html de la carpeta "src" es
el que se toma como punto de partida para producir el index.html de www y en la operacin de
build (o al hacer "ionic serve") tus cambios se habrn machacado.
Podrs observar que en la carpeta www no hay ningn archivo TypeScript (extensin ts), ya
que se ha transpirado para producir los archivos Javascript (.js), que realmente entiende el
navegador. De manera parecida, los CSS ya no tendrn cdigo Sass.
Nota: La carpeta "www" tambin tiene cdigo minimizado y como se ha dicho, es la que se
utiliza para construir los archivos finales que se llevarn al store. Lo que es interesante,
porque si alguien a travs del apk de Android quiere obtener los archivos fuente, lo nico
que encontrar ser el cdigo minimizado y ofuscado, y no el cdigo que nosotros hemos
usado a la hora de desarrollar. En versiones previas de Ionic 2 (beta) no exista esa dualidad
de carpetas (src / www) y tampoco en Ionic 1, por lo que s era posible obtener el cdigo que
habamos usado como fuente para desarrollar.
Las siguientes carpetas tambin son importantes, aunque ya no sern usadas en tu trabajo
diario de desarrollo.
Carpeta plugins
En esta carpeta se sitan todos los plugins nativos con los que vamos a trabajar en la
aplicacin, ya sean de Cordova o del propio Ionic, o de terceros. De momento en un proyecto
recin iniciado podrs observar que ya se encuentran varios plugins bsicos. Otros se irn
instalando a medida que vayamos necesitando.
Trabajaremos ms adelante sobre esta carpeta cuando lleguemos a la parte del desarrollo
nativo.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 37 de 39
Manual de Ionic 2
Carpeta platforms
En este directorio encontramos los archivos de cada plataforma a la que vamos a dar soporte
en nuestra app. Por ejemplo, si damos soporte a Android tendremos el subdirectorio "android"
y si damos soporte a iOS encontraremos la carpeta "ios".
Nota: El soporte inicial a plataformas en un proyecto nuevo de Ionic 2 depende mucho del
sistema operativo con el que trabajas. Por ejemplo, si tu proyecto lo has iniciado en un Mac,
tendrs de entrada la carpeta ios.
Ms adelante tambin explicaremos cmo dar soporte a diversas plataformas, aunque eso es
una tarea ms para realizar cuando hayamos terminado de construir nuestra app en local y
queramos subirla a las stores.
Directorio resources
La carpeta "resources" es importante a la hora de configurar iconos de la aplicacin, o el icono
de la pantalla splash (que es la imagen que aparece mientras tu app se est cargando).
En esa carpeta tenemos que colocar iconos que deben cumplir unos requisitos, dado que se van
a producir tambin internamente en diversos tamaos de manera automtica por Ionic, para
generar todas las variantes de iconos que necesita cada sistema operativo de destino. Soporta
archivos en png o incluso psd. En otro momento tambin daremos ms detalles sobre todo este
proceso de produccin de los iconos.
Directorio hooks
Esta carpeta contiene una especie de disparadores que se ejecutarn ante determinadas
situaciones. Generalmente vienen de Cordova y los puedes usar para la ms variada gama de
operaciones. Son como scripts que puedes crear y que se ejecutarn automticamente al pasar
cosas, por ejemplo, antes de compilar un proyecto, despus, etc.
Ionic 2 usa alguno de estos hooks, por ejemplo al momento de compilar quita todo el cdigo
CSS que pertenece a otras de las plataformas. Esto lo hace para aligerar el proyecto, ya que a la
hora de desarrollar Ionic produce el CSS de Android, iOS y Windows, pero no necesitas todo
ese CSS si lo que ests produciendo es el apk para Android, por ejemplo.
Carpeta node_modules
Esta carpeta realmente la debes de conocer de otros proyectos para otros sistemas web o
NodeJS. Son las dependencias de npm que vienen definidas en el package.json e instaladas en
local dentro de tu proyecto. Si no lo tienes claro, es mejor que consultes el Manual de NodeJS
para saber ms acerca de las dependencias npm.
Conclusin
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 38 de 39
Manual de Ionic 2
De momento hasta aqu tienes bastante informacin sobre la arquitectura de carpetas de una
app desarrollada con Ionic 2. Con esto hemos obtenido una vista de pjaro de todo lo que hay
en un proyecto, que iremos complementando con ms explicaciones en breve.
http://desarrolloweb.com/manuales/manual-ionic2.html Pgina 39 de 39