lunes, 28 de diciembre de 2015

Cómo usar la etiqueta template en HTML5

Hasta hace unos años, cuando un desarrollador quería hacer templates de sus páginas , la opción era usar algún lenguaje en el Backbend como PHPRuby,Python, etc.


Actualmente el uso de templates es posible del lado del Frontend usando JavaScript. Para manejar dichos los templates tenemos algunos engines como:JadeSwigMustacheHandlebarsetc.

Gracias a la popularidad de estos motores de templates la WhatWG creó una etiqueta nueva en HTML5 poco conocida, que gracias a los Web Componentsse está volviendo cada vez más popular, la etiqueta <template>.


Soporte



No todos los navegadores soportan la etiqueta <template>. Actualmente es soportado por Firefox +22, Chrome +26, Safari +7.1, Opera +15, iOS Safari +8, Android Browser +4.4, Opera Mobile +24, Chrome for Android +39 y Firefox for Android +33, Internet Explorer no tiene soporte alguno a esta etiqueta.

Para poder detectar si el navegador que el usuario está usando tiene soporte para esta etiqueta simplemente creamos el elemento del DOM con JavaScript y nos fijamos si posee la propiedad .content.

Código :
if ('content' in document.createElement('template')) {
  // Funciona!
} else {
  // Usamos algún motor de templates
}

Creando el template



La etiqueta <template> es esencialmente un elemento clonable del DOM para ser reutilizado en tu sitio o aplicación web. Para crear un template simplemente escribes HTML común y lo colocas dentro de la etiqueta <template>.

Código :
<template id="template">
  <h1></h1>
</template>

Características principales



Envolver contenido dentro de <template> nos da cuatro características importantes.



    1) El contenido es parseado e interpretado por el navegador, pero no renderizado por lo que es invisible para el usuario.

    2) Cualquier contenido dentro del template no tiene efectos secundarios. Los scripts no se ejecutan, las imágenes no cargan, el audio no suena y los vídeos no se reproducen, hasta que el template sea usado.

    3) El contenido del template no es considerado parte del documento, hacer un document.getElementById() o .querySelector() no va a regresar los elementos del template.

    4) El template puede ser colocado en cualquier parte dentro de <head>, <body> o <frameset> y puede contener cualquier tipo de contenido que sea posible usar dentro de estos elementos.




Activando los templates



Para usar un template hay que activarlo, de otra forma nunca va a ser renderizado. La forma más simple es copiar el .content usandodocument.importNode(). La propiedad .content la representación en JavaScript del contenido del template y desde donde se puede acceder a todo el contenido de este.

Código :
var t = document.querySelector('#template');
var clone = document.importNode(t.content, true);
clone.querySelector('h1').innerHTML = 'Hola Cristalab';
document.body.appendChild(clone);


Luego de colocar el clon del template en nuestra aplicación el contenido es renderizado, en este ejemplo dentro del h1 se coloca el string Hola Cristalab y se renderiza todo el HTML del template.


Como usarlo en Internet Explorer y otros navegadores viejos



Aunque la etiqueta <template> no tiene soporte en Internet Explorer es posible utilizarlo gracias a la librería HTML5Shiv, que por cierto forma parte de deModernizr por lo que si están usando este, entonces ya tienen HTML5Shiv y ya pueden usar la etiqueta <template>.

Hay sin embargo una pequeña diferencia entre el soporte nativo de la etiqueta y el que permite HTML5Shiv y es que el soporte nativo funciona como está explicado arriba, mientras que HTML5Shiv lo que hace es crear el elemento usando document.createElement() y luego le pone el estilo display: none por defecto, por lo que durante muy poco tiempo es posible que el usuario vea el contenido del template.


Fuente:enlace

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Aprende a instalar Google Analytics en tu blog de WordPress


Gracias al blog, recientemente, he podido ir conociendo a fondo el software que hace posible esta plataforma web. WordPress, es cual para los que no lo conocen, es uno de los administradores de contenidos (como blogs, tiendas online, foros etc) más populares en internet.  Es por esto que me ha surgido la idea de compartir con ustedes todos aquellos trucos y Tips que yo mismo he ido practicando con el tiempo para ir mejorando mi propio blog.
En esta presente ocasión quiero hacer un pequeño tutorial donde explico cómo conectar Google Analytics a un blog en wordPress. Google Analytics es una herramienta gratuita que provee el gigante del internet, para ayudar a los administradores de sitios web a armar estadísticas sobre los visitantes de sus páginas.

Breve Introducción sobre Google Analytis

Usar una herramienta como Google Analytics en wordPress es muy importante porque te permite conocer a profundidad a tus visitantes en muchos aspectos que pueden llegar a darte las herramientas para enfocarte en aquellas personas que están agregando valor a tu blog.
Google Analytics en wordpres
Ejemplo de informe de visitas por género
Algunas de las muchas estadísticas que puedes obtener con Google Analytics en wordPress son:
  • Quien visita tu página: Puedes obtener información de localización de la cual proceden tus visitantes, el idioma que hablan, clasificación por género y edad, el sistema operativo que usaron para acceder a tu página, el tipo de dispositivo, y algunos datos adicionales geográficos.
  • Comportamiento de tus visitantes: puedes tener información acerca del número de minutos que un visitante pasa en promedio en tu página. El % de visitantes que regresaron vs el % de visitantes nuevos, lo cual es un indicador importante para saber si las personas que visitan tu pagina no están regresando, o ya estas armando un grupo de visitantes fieles.
  • De donde te están visitando: puedes ver si los visitantes de tu pagina llegaron directamente por que ingresaron la dirección en el navegador, o por que dieron clic en in enlace de otra pagina o una red social, y de esta manera enfocarte en fortalecer aquellos puntos por los cuales te están entrando más visitantes.
  • Que porciones de tu pagina son más visitadas: Te permite conocer que artículos o paginas de tu blog son los más visitados y cueles menos, de forma tal que puedes conocer cual es el contenido que llama más la atención de tu sitio y crear nuevo contenido que valla en esa dirección.
Google Analytics en wordpres
Ejemplo de informes de visitas por rango de edades
Google Analytics en wordpres
Ejemplo de informes de visitas por localización geográfica
En fin, las posibilidades son enormes, y si estas pensando en llevar tu pagina o blog al siguiente nivel, mejor que conozcas muy bien a tu público. Esto te va a ahorra mucho tiempo y dinero al enfocarte en aquello que de verdad produce valor.

Como crear tú cuenta de Google Analytics

Antes de continuar me gustaría aclarar que este tutorial es para aquellos blogs auto alojados, es decir cuando tienes una instalación de wordPress.org y no para aquellos que tienen un blog gratuito de wordPress.com, pues estos últimos de momento no admiten el uso de Google Analytics. Tal vez si tienes un blog en wordPress.com deberías considerar los beneficios de usar un blog propino de wordPress.org, asunto del cual pienso

Paso 1

Lo primero es crear una cuenta en google Analytics aqui, esta como mencione anteriormente es gratuita, y si ya tienes una cuenta para algún servicios de Google como Gmail por ejemplo, puedes usarla.
Google Analytics en wordpres
Crear una cuenta de Google Analytics es muy fácil, puedes usar tu usuario de Gmail

Paso 2

Luego de registrarte se te va a pedir que selecciones entre 2 alternativas de tipo de cuenta a crear, la cuenta para páginas web y la cuenta para aplicaciones móviles, asegúrate de escoger la de páginas web. Luego de ello se ve va a llevar por una plantilla de inscripción de tu pagina, que es bastante clara y no requiere mayores explicaciones. Asegúrate de diligenciar correctamente la dirección principal de tu blog, por ejemplo: www.ungeekencolombia.com
Google Analytics en wordpres
Formulario de inscripción

Paso 3

Luego de diligenciar los datos de tu blog, debes oprimir el botón de generar ID de seguimiento (Tracking ID), el cual es una etiqueta inteligente que Google va a utilizar en tu pagina para monitorear el trafico y obtener los datos de análisis de tus visitantes. Debes tener en cuenta que para generar este código debes aceptar los términos y condiciones de Google, así que asegúrate de leerlos bien.
Google Analytics en wordpres
Tracking ID generado por Google para tu página
Una vez que se genera el ID de seguimiento vas a ver una pantalla como la figura. Este Scrip es el que necesitas instalar en tu blog, así que cópialo.

Instalar el ID de Google Analytics en WordPress

Paso 1

En tu navegador no cierres la pagina de Google Analytics y abre una pestaña nueva y accede al panel de administración de tu blog en WordPress. Una vez allí vamos a usar el método de instalación directa del código de seguimiento, que consiste en editar el archivo “header.php” de tu página y pegar allí el código de Google. Para ello ingresa por el menú de apariencia y luego al editor.
Google Analytics en wordpres
Panel de administrador en WordPress
Ten en cuenta que si no te gusta entrar al editor y mover el código de tu blog directamente, también es posible hacer esta operación por medio de la instalación de algún plugin que haga esta tarea por ti, pero dado que en realidad es algo muy sencillo no te recomiendo instalar algo adicional y hacer el trabajo tu mismo.
Google Analytics en wordpres
Localiza el archivo header.php de tu plantilla

Paso 2

Entra al archivo “header.php” y localiza en el código la etiqueta <body> y pega tu código justo debajo de ella como se ve en la imagen, y guarda los cambios. Asegúrate de cargar en otra pestaña tu blog para verificar que todo está funcionando normalmente, pues si colocaste mal el código podrías afectar la plantilla de tu blog y deberías corregir el header.php para dejarlo como estaba y colocar el código de Google Analytics en wordPress correctamente.
Google Analytics en wordpres
Edita el archivo header.php pegando el codigo de Google Analytics

Paso 3

Puedes regresar a la página de Google Analytics y visitar la pestaña de reportes para verificar si ya quedo activa la etiqueta en tu blog. Ten en cuenta que en algunos casos esta activación toma un par de minutos por lo cual debes ser paciente.

Paso 4

Una vez que tengas la confirmación de que tu etiqueta quedo bien instalada, puedes comenzar a disfrutar de las estadísticas de tu página en cualquier momento. Incluso existe la App de Google Analytics para Android e iOS, lo cual hace posible verificar las estadísticas de tu portal desde tu celular o tablet en cualquier momento.

Fuente:enlace

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Uso de módulos en Javascript con ECMAScript 6

JavaScript no tiene (por ahora) un sistema de módulos propio, aunque eso si, la comunidad fue creando varios para suplir esa necesidad. Actualmente hay dos importantes propuestas (incompatibles entre sí):


    CommonJS: Esta es la implementación usada en Node.js y Browserify, se caracteriza por una sintaxis sencilla, carga los módulos de forma síncrona y se usa principalmente en el servidor.

    Definición de Módulos Asíncronos (AMD): La implementación más popular de este estándar es RequireJS, se caracteriza por una sintaxis un poco más complicada, estar diseñado para cargar módulos de forma asíncrona y se usa principalmente en navegadores.




Más documentación sobre estos sistemas: http://addyosmani.com/writing-modular-js/



Nota: El soporte para módulos de ECMAScript 6 en los navegadores actualmente es nulo, esto está todavía en desarrollo y no está listo para ser usado, hay sin embargo formas de escribir código usando ES6 y luego convertir el código a ES5 quedando un resultado bastante bueno, pero no es un soporte nativo, sigue siendo ES5.




La meta final de los módulos de ECMAScript 6 fue crear un formato que dejara contento a los usuarios de CommonJS y AMD.

    Similitudes con CommonJS: sintaxis sencilla, preferencia por un solo export y soportar dependencias cíclicas.
    Similitudes con AMD: soporte para carga asíncrona y configurable de módulos.



Al estar el sistema incorporado directamente en el lenguaje, permite que sea mejor que CommonJS y AMD.

    La sintaxis es incluso más simple que CommonJS.

    La estructura puede ser analizada estaticamente (para comprobaciones, optimizaciones, etc.).
    Tiene un mejor soporte para dependencias cíclicas que CommonJS.



El estándar de módulo de ES6 se divido en dos partes:

    La sintaxis para exportar e importar.
    La API de carga programable, para configurar como se cargan los módulos y cargarlos en diferentes condiciones.

Visión general de la sintaxis




Hay dos formas de exportar: exportación con nombre (varias por módulo) o por defecto (una por módulo).

Exportación con nombre (varias por módulo)




Un módulo puede exportar múltiples cosas agregandole la palabra export antes de la declaración. Estas exportaciones se distinguen por su nombre.

Código :
//------ calculos.js ------
export function sumar(x, y) {
  return x + y;
}
export function restar(x, y) {
  return x - y;
}
//------ main.js ------
import { sumar, restar } from 'calculos';
console.log(sumar(2, 3)); // 5
console.log(restar(4, 3)); // 1



Como se ve es bastante simple, solo escribes el código como si no hubiera nada que lo englobe (sin scope global) y a todo lo que desees exportar solo le agregas la palabra export.



Si lo deseas también puedes importar un módulo entero y acceder a las exportaciones con nombre usando la sintaxis de propiedades:

Código :
//------ main.js ------
import * as calc from 'calculos';
console.log(calc.sumar(2, 3)); // 7
console.log(calc.restar(4, 3)); // 1

Exportación por defecto (una por módulo)




Los módulos que solo exporten un único valor son muy populares en la comunidad de Node.js y en el desarrollo frontend. Un módulo de ES6 puede tomar un valor por defecto en la exportación.

Código :
//------ miFunc.js ------
export default function () { ... };
//------ main1.js ------
import miFunc from 'miFunc';
miFunc();

Nota: El valor a exportar por defecto es una expresión y no tiene nombre, este es obtenido al importar el módulo, normalmente se usaría el nombre del módulo.

Beneficio de los módulos de ECMAScript 6


A primera vista, tener módulos de forma nativa en ES6 puede parecer una funcionalidad inútil, después de todo ya existe varios sistemas de módulos muy buenos. Pero los módulos de ES6 tienen características que no se pueden agregar con una librería, como una sintaxis reducida y una estructura estática de modulos (lo que ayuda a optimizar entre otras cosas). Además se espera que termine con la fragmentación entre los sistemas CommonsJS y AMD.



Tener un único estandar para módulos nativo significa:

    No más UMD (Definición Universal de Módulos): UMD es un patrón que permite que un mismo archivo sea usado por distintos sistemas (como CommonJS y AMD). Cuando ES6 este listo para su uso UMD se volverá obsoleto.
    Las nuevas API de los navegadores se volveran módulos en lugar de variables globales o propiedades como navigator.
    No más objetos como namespaces. Objetos como Math y JSON sirven como namespaces para funciones en ECMAScript 5. En el futuro, esta funcionalidad la darán los módulos.

Referencias (en inglés)




Para finalizar les dejo algunos links (en inglés) con más información sobre los módulos de ES6 para los que quieran aprender un poco más sobre como funcionan (como la carga asíncrona de módulos que no está explicado arriba).


Fuente:enlace

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Crear menus de navegación en CSS usando listas

Para completar este tutorial es recomendable leer antes el Tutorial Básico de CSS
¿Qué son las listas?, ¿Para qué se usan?, ¿Por qué ES MEJOR usarlas en un menú? Estas son preguntas que siempre vienen a la mente al hablar de las listas, sobre todo en la transición hacia el uso de XHTML estándar y el maquetado con CSS.
Hablar de listas (<ul> y <ol> ) es hablar de estructura, recordemos que el XHTML es un lenguaje diseñado para estructurar datos, y eso es lo que debemos hacer con el. En ese sentido, las listas nos ofrecen una muy buena forma de estructurar, pues...listas.
En HTML tenemos dos clases de listas, las ordenadas y las desordenadas, la unica diferencia es que las ordenadas añaden un número correlativo a cada item de la lista, mientras que las desordenadas no:
Las Listas Ordenadas:
<ol>
 <li>item</li>
 <li>item</li>
 <li>item</li>

</ol>
Nos da como resultado:
  1. item
  2. item
  3. item
Mientras que, las listas desordenadas:
<ul>
 <li>item</li>
 <li>item</li>
 <li>item</li>

</ul>
Nos queda:
  • item
  • item
  • item
Ahora la gran pregunta, Por qué &%$#$@/ tengo que usar eso para hacer mi menú?
Sencillo, porque un menú básicamente ES una lista, no es un parrafo, ni un titulo, es una lista de vínculos. Y como lista que és, lo mas correcto es que esté estructurada en el HTML como tal.
Pero no hay de que preocuparse, ya que el CSS nos permite cambiar completamente el aspecto de la lista, para convertirla en el bonito menú que queremos, sin que deje de ser lista. Pero primero, veamos en qué consisten los pre-formatos que trae de por sí una lista.
Las listas se renderizan en el navegador con ciertas características, como el margen / relleno (interpretado de diferente manera en los distintos navegadores) de la lista completa, el margen / relleno (idem) de cada item de la lista y las viñetas, ademas de un salto de línea para cada item por ser elementos de bloque.
ul
Línea naranja delimita el margen / relleno de la lista, línea verde el bloque de cada item.
Todos estos formatos pueden ser eliminados / modificados a través de CSS muy fácilmente. Comencemos con las viñetas.
Nota: para los ejemplos usaremos una lista desordenada, ya que no necesitamos la numeración.
Las viñetas por defecto de las listas desordenas es un circulo relleno, podemos cambiarlo por un cuadrado, un circulo vacio, o una imagen, cambiando tan solo un atributo en nuestro CSS para la lista:
<ul id="navi"> 
 <li>inicio</li>
 <li>acerca de</li>
 <li>contactos</li>
</ul>
<!--agregamos un ID para referirnos directamente a esta lista.-->
En el CSS:
#navi {
 list-style-type:square;
}
//O bien...
#navi {
 list-style-type:circle;
}
//O mas bien...
#navi {
 list-style-image:url(images/vineta.png);
}
Nos da como resultado:
viñetas
Los diferentes resultados del atributo "list-style".
También podemos poner:
#navi {  
 list-style:none;
}
Con lo que le quitamos las viñetas:
none
Lista sin viñetas.
Ahora vamos con los margenes y el relleno. Dado que los distintos navegadores pueden interpretar el margen y el relleno de diferente forma, hay que especificar ambos valores con los que queramos darle a nuestra lista, aunque parezca que el que trae la lista de por sí, sea el adecuado para lo que queremos, es mejor especificarlo en el CSS.
#navi {  
 list-style:none;
 margin:0;
 padding:0;
 }
//luego a los elementos de la lista...
#navi li {
 margin:2px;
 padding:2px;
 border:1px solid#CCCCCC;
 }
navi1
Empieza a tomar forma.
Para continuar, vamos a agregarle vinculos a los elementos de la lista:
<ul>
  <li><a href="#">inicio</a></li>
  <li><a href="#">acerca de</a></li>
  <li><a href="#">contactos</a></li>
</ul>
Ahora tendremos:
Navi2
Los vinculos añaden el subrayado y el color azul.
Ahora es tiempo de decidir si queremos nuestro menu horizontal, o vertical. Si es vertical, no necesitamos agregar nada especial al código, pero si es horizontal, hay que agregar un float para hacer que los elementos de la lista se coloquen uno al lado del otro:
#navi {  
 list-style:none;
 margin:0;
 padding:0;
}
#navi li {
 margin:2px;
 padding:2px;
 border:1px solid #CCCCCC;
 float:left; //para eliminar el comportamiento de elemento de bloque(salto de linea)
}
Y el resultado:
Navi3
Lista horizontal.
Nota: al aplicar el float, los elementos de la lista se reduciran al minimo tamaño necesario para el texto que contengan.
Todos los demas estilos que queramos agregarle al menú, se harán directamente sobre los vinculos, ya sea tamaño, tipo de letra, colores, imagenes de fondo, etc. Para seleccionar los vínculos dentro de los elementos de lista, encadenamos los nombres de las etiquetas en el selector CSS como lo hicimos con los <li>:
#navi {  
 list-style:none;
 margin:0;
 padding:0;
}
#navi li {
 margin:2px;
 padding:0; //Ya no necesito el padding, tambien quitare el borde que puse antes.
 float:left;
}
#navi li a {
 display:block; //Convertimos el vínculo en un bloque.
 width:100px;
 padding:4px 0;
 text-decoration:none;
 text-align:center;
 font-size:11px;
 color:#FFFFFF;
 background-color:#000000;
}
//Ahora vamos con el hover:
#navi li a:hover {
 color:#99CC00;
 background-color:#003366;
}
Así obtenemos fácilmente un menú, obviamente muy sencillo:
navi4
Un menú básico.
De aqui en adelante, cambiar todo el aspecto es cosa de ir probando, cambiando los colores, cambiando el relleno, el margen, el tipo de letra colocando bordes:
#navi li a {
 display:block;
 width:100px;
 padding:4px 0;
 text-decoration:none;
 text-align:center;
 font-size:11px;
 color:#FFFFFF;
 background-color:#000000;
 border-left:10px solid #666666;  //Agrego un borde ancho a la izquierda
}
#navi li a:hover {
 color:#99CC00;
 background-color:#003366;
 border-left-color:#99CC00; //Luego le cambio el color al borde en el evento hover.
}
Navi5
Mejorando el aspecto.

Experimentando

navi6
Para este ejemplo, use una imagen de fondo, para el evento hover, con un pequeño truco, veamos el codigo:
ul li a {
 display:block;
 width:100px;
 padding:40px 10px 4px 10px;
 text-decoration:none;
 text-align:right;
 font-size:11px;
 color:#666666;
 background-image:url(images/boton1.png);  //Aqui solo se ve la parte de arriba de la imagen
 border:1px solid #666666;
}
ul li a:hover {
 color:#000000;
 background-position:bottom; //Aqui muestro la parte de abajo de la imagen
} 
Para hacer los botones altos, le he agregado 40px de relleno superior, de esta forma agrando el boton dejando el texto abajo, le he cambiado la alineación a la derecha, y, como se puede ver en el código, la imagen de fondo la he puesto en el vínculo directamente, no en el evento hover, y en este solo le cambio la posición. El detalle es que la imagen es el doble de tamaño que el botón:
boton
Una sola imagen con ambos estados.
Por qué hago esto? La idea es cargar una sola imagen, y hacerlo al cargar la pagina, si pedimos que en el evento hover se cargue una imagen aparte, esta solo sera cargada al poner el cursor encima del botón, en conexiones lentas, suele haber un tiempo de descarga de la imagen que supera a la ación del usuario, lo que ocasiona que nunca vea la imagen del evento hover. Con este método, nos aseguramos que la imagen es cargada desde el principio y no hay espera.

Otro ejemplo

navi7
Solo imagenes.
Para este ejemplo, hay varios cambios, comenzando por la lista:
<ul>
  <li><a href="#" id="inicio"><span>inicio</span></a></li>
  <li><a href="#" id="acerca"><span>acerca de</span></a></li>
  <li><a href="#" id="contacto"><span>contactos</span></a></li>
</ul>
Agregamos un identificador único a cada vínculo, para poder colocar la imagen correspondiente. Adicionalmente le he puesto etiquetas <span> a el texto, para ocultarlo con CSS:

ul {  
 list-style:none;
 margin:0;
 padding:0;
}
ul li {
 padding:0;
 float:left;

ul li a {
 display:block;
 width:121px;
 height:50px;  //Quito el padding, pero le pongo altura.
 text-decoration:none;
}
ul li a:hover {
 background-position:bottom;
}
ul li a span {
 display:none; //Oculto el texto.
}
#inicio {
 background-image:url(images/inicio.png);
}
#acerca {
 background-image:url(images/acerca.png);
}
#contacto {
 background-image:url(images/contacto.png);
}

Fuente:enlace

Si quieres seguir aprendiendo con nosotros, puedes ingresar a nuestros 
Cursos y Diplomados de Tecnología Web visita www.uneweb.edu.ve  para más información

Entradas populares