|
| 1 | +--- |
| 2 | +--- |
| 3 | + |
| 4 | +Estuvimos usando [RIOT][1] una librería que permite implementar |
| 5 | +componentes web de una manera muy simple. |
| 6 | + |
| 7 | +La idea de RIOT es hacer componentes, o sea elementos html nuevos que sirvan |
| 8 | +propósitos específicos en las páginas que realizamos, cada componente tiene |
| 9 | +html, css y javascript integrados, de forma que se pueden reutilizar en |
| 10 | +distintos contextos. |
| 11 | + |
| 12 | +Lo que vamos a hacer en este tutorial es un formulario para escribir comentario |
| 13 | +el cual nos va a mostrar en simultaneo una pre-visualización del mismo. |
| 14 | + |
| 15 | +Primero vamos a necesitar incluir el compilador de riot, que como es muy |
| 16 | +liviano no es problemático, para eso, necesitamos simplemente agregar un |
| 17 | +script: |
| 18 | + |
| 19 | +```html |
| 20 | +< script src= "https://cdn.jsdelivr.net/npm/[email protected]/riot+compiler.min.js"></ script> |
| 21 | +``` |
| 22 | + |
| 23 | +Este script se va a encargar de compilar todos los scripts del tipo: |
| 24 | +`riot/tag`, que es el formato en el que escribiremos nuestro componente. |
| 25 | + |
| 26 | +Este archivo es muy fácil de escribir ya que la sintaxis es la misma que en |
| 27 | +html, lo que hacemos es indicar como queremos que se vea nuestro componente, el |
| 28 | +código lo guardaremos en un archivo `preview-comment.tag` con el siguiente |
| 29 | +contenido: |
| 30 | + |
| 31 | +```html |
| 32 | +<preview-comment> |
| 33 | + <h3>Nuevo Commentario</h3> |
| 34 | + |
| 35 | + <form> |
| 36 | + <label>Email |
| 37 | + <input type="email" name="email"> |
| 38 | + </label> |
| 39 | + <label>Comentario |
| 40 | + <textarea name="comment"></textarea> |
| 41 | + </label> |
| 42 | + <input type="submit"> |
| 43 | + </form> |
| 44 | + |
| 45 | + <article class='preview comment'> |
| 46 | + <p>{comment}</p> |
| 47 | + </article> |
| 48 | +</preview-comment> |
| 49 | +``` |
| 50 | + |
| 51 | +Para usar el tag en nuestra página, necesitamos, por un lado cargar el código, |
| 52 | +por otro lado indicar dónde queremos que aparezca y por último "montarlo". |
| 53 | + |
| 54 | +```html |
| 55 | + |
| 56 | +<!-- cargamos el tag --> |
| 57 | +<script type="riot/tag" src="preview-comment.tag"></script> |
| 58 | + |
| 59 | +<!-- indicamos dónde queremos ver el tag --> |
| 60 | +<preview-comment> |
| 61 | +</preview-comment> |
| 62 | + |
| 63 | +<!-- montamos el componente --> |
| 64 | +<script> |
| 65 | + riot.mount('preview-comment') |
| 66 | +</script> |
| 67 | +``` |
| 68 | + |
| 69 | +Con eso debería alcanzar para que veamos el formulario, pero la |
| 70 | +previsualización todavía no anda, para hacerlo andar, vamos a necesitar agregar |
| 71 | +código javascript en nuestro tag y modificar el campo de comentario, para |
| 72 | +poder referenciarlo. |
| 73 | + |
| 74 | +```html |
| 75 | +<textarea name="comment" ref='comentario' onKeyPress={cambioComentario}></textarea> |
| 76 | + |
| 77 | +<script> |
| 78 | + this.cambioComentario = function (evt) { |
| 79 | + let nueva_letra = String.fromCharCode(evt.charCode) |
| 80 | + this.comment = this.refs.comentario.value + nueva_letra |
| 81 | + } |
| 82 | +</script> |
| 83 | +``` |
| 84 | + |
| 85 | +De esta manera, cuando el usuario escribe algo en el campo comentario, automaticamente ese cambio se ve reflejado en la pre-visualización. |
| 86 | + |
| 87 | +También podemos mostrar el avatar del usuario de manera automática, |
| 88 | +utilizando gravatar, para lo cual necesitaremos agregar una librería javascript: |
| 89 | + |
| 90 | + <script src="https://cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.7.0/js/md5.min.js"></script> |
| 91 | + |
| 92 | +Una vez que agregamos esta librería en nuestra página, podemos modificar el |
| 93 | +agregar la imagen del avatar con el siguiente código: |
| 94 | + |
| 95 | + <img src="//www.gravatar.com/avatar/{gravatar_id}.jpg"> |
| 96 | + |
| 97 | + <script> |
| 98 | + this.cambioEmail = function () { |
| 99 | + this.gravatar_id = md5(this.refs.email.value) |
| 100 | + } |
| 101 | + </script> |
| 102 | + |
| 103 | +De este modo, cuando el usuario ingresa su email, ve su imagen de perfil (si está cargada en gravatar) al lado de su comentario. |
| 104 | + |
| 105 | +Por último, solo resta agregar algunos estilos en nuestro nuevo tag. |
| 106 | + |
| 107 | + |
| 108 | +```html |
| 109 | +<style> |
| 110 | + label, input, textarea { |
| 111 | + display: block; |
| 112 | + } |
| 113 | +
|
| 114 | + .preview { |
| 115 | + background-color: grey; |
| 116 | + width: 300px; |
| 117 | + min-height: 100px; |
| 118 | + border-radius: 15px; |
| 119 | + } |
| 120 | +
|
| 121 | + .preview img { |
| 122 | + margin: 10px; |
| 123 | + border-radius: 50%; |
| 124 | + float: left; |
| 125 | + } |
| 126 | +</style> |
| 127 | +``` |
| 128 | + |
| 129 | +Con este código ya deberíamos tener nuestro primer elemento funcionando. |
| 130 | + |
| 131 | +[1]: http://riotjs.com/ |
0 commit comments