React vs Angular: la comparación definitiva

React vs Angular: la comparación definitiva

¿Dificil decisión verdad? por eso te traigo esta completa comparación: React vs Angular. Cada framework tiene mucho que ofrecer y no es fácil elegir entre ellos. Tanto si eres un recién llegado tratando de averiguar por dónde empezar, como un diseñador web freelance eligiendo un framework para tu próximo proyecto, o un director de nivel empresarial planificando una visión estratégica para tu empresa, es probable que te beneficies de tener una visión educada sobre este tema.

Para ahorrarte tiempo, déjame decirte algo de antemano: este artículo no dará una respuesta clara sobre qué framework es mejor. Pero tampoco lo harán cientos de otros artículos con títulos similares. No puedo decírtelo, porque la respuesta depende de una amplia gama de factores que hacen que una tecnología en particular sea más o menos adecuada para tu entorno y tu caso de uso.

Como no podemos responder directamente a la pregunta, intentaremos algo más. Una Angular y React, para demostrar cómo se puede abordar el problema de comparar dos frameworks de una manera estructurada por sí mismo y adaptarlo a tu entorno. Ya sabes, el viejo enfoque de “enseñar a un hombre a pescar”. De esta manera, cuando ambos sean reemplazados por un BetterFramework.js dentro de un año, podrás recrear el mismo tren de pensamiento una vez más.

Esta guía acaba de ser actualizada para reflejar el estado de React, Angular, y sus respectivas ventajas y desventajas en el 2020.

¿Por dónde empezar con React vs Angular?

Antes de elegir cualquier herramienta, tienes que responder a dos simples preguntas: “¿Es una buena herramienta en sí misma?” y “¿Funcionará bien para mi caso de uso?” Ninguna de ellas significa nada por sí sola, así que siempre hay que tenerlas en cuenta. De acuerdo, las preguntas pueden no ser tan simples, así que intentaremos dividirlas en otras más pequeñas.

Preguntas sobre la propia herramienta:

  • ¿Qué tan madura es y quién está detrás de ella?
  • ¿Qué tipo de características tiene?
  • ¿Qué arquitectura, patrones y paradigmas de desarrollo emplea?
  • ¿Cuál es el ecosistema que lo rodea?

Preguntas para la reflexión:

  • ¿Podremos yo y mis colegas aprender esta herramienta con facilidad?
  • ¿Encaja bien con mi proyecto?
  • ¿Cómo es la experiencia del desarrollador?

Usando esta serie de preguntas, puedes empezar tu evaluacion de cualquier herramienta, y basaremos nuestra comparacion de React y Angular en ellas tambien.

¿Es justo hacer una comparación de React vs Angular?

Hay otra cosa que debemos tener en cuenta. Estrictamente hablando, no es exactamente justo comparar Angular con React, ya que Angular es un marco completo y rico en características, mientras que React es sólo una biblioteca de componentes UI. Para igualar las probabilidades, hablaremos de React en conjunto con algunas de las bibliotecas que se usan a menudo con él.

Madurez

Una parte importante de ser un desarrollador hábil es ser capaz de mantener el equilibrio entre los enfoques establecidos y probados a lo largo del tiempo y la evaluación de la nueva tecnología punta. Como regla general, debes tener cuidado al adoptar herramientas que aún no han madurado debido a ciertos riesgos:

  • La herramienta puede ser un fracaso e inestable.
  • Puede ser abandonada inesperadamente por el distribuidor.
  • Puede que no haya una gran base de conocimientos o comunidad disponible en caso de que necesites ayuda.
  • Tanto React como Angular provienen de buenas familias, así que parece que podemos confiar en este sentido.

React

React es desarrollado y administrado por Facebook y utilizado en sus productos, incluyendo Instagram y WhatsApp. Existe desde el año 2013, así que no es exactamente nuevo. También es uno de los proyectos más populares de GitHub, con más de 150.000 estrellas en el momento de escribir este artículo. Algunas de las otras empresas que usan React son Airbnb, Uber, Netflix, Dropbox y Atlassian.

Angular

Angular existe desde 2016, lo que lo hace un poco más joven que React, pero tampoco es un novato en el tema. Es administrado por Google y, como mencionó Igor Minar, incluso en 2018 fue usado en más de 600 aplicaciones en Google como la Base de Datos de Fire, Google Analytics, Google Express, la plataforma de nube de Google y más. Fuera de Google, Angular es usado por Forbes, Upwork, VMWare y otros.

Características de ambos: React vs Angular

Como mencioné antes, Angular tiene más características que Reaccionar. Esto puede ser algo bueno y malo, dependiendo de cómo se mire. Ambos frameworks comparten algunas características claves en común: componentes, unión de datos, y plataforma de representación agnóstica.

Angular

Angular proporciona muchas de las características requeridas para una aplicación web moderna nada más sacarla de la caja. Algunas de las características estándar son:

  • Inyección para dependencia
  • Plantillas, basadas en una versión extendida de HTML
  • Componentes de clase con ganchos de ciclo de vida
  • Enrutamiento, proporcionado por @angular/router
  • Solicitudes de Ajax usando @angular/common/http
  • @angular/forms para construir formularios
  • Encapsulación del componente CSS
  • Protección XSS
  • División del código y carga perezosa
  • Corredor de prueba, marco y utilidades para la prueba de la unidad.

Algunas de estas características están incorporadas en el núcleo del framework y no tienes la opción de no usarlas. Esto requiere que los desarrolladores estén familiarizados con características como la inyección de dependencia para construir incluso una pequeña aplicación Angular. Otras características como el cliente HTTP o los formularios son completamente opcionales y pueden ser añadidas según sea necesario.

React

Con React, estás empezando con un enfoque más minimalista. Si estamos viendo sólo a React, esto es lo que tenemos:

  • En lugar de las plantillas clásicas, tiene JSX, un lenguaje similar a XML construido sobre JavaScript
  • Componentes de clase con ganchos de ciclo de vida o componentes funcionales más simples
  • Gestión del estado usando setState y ganchos.
  • Protección XSS
  • División del código y carga perezosa
  • Error en el manejo de los límites
  • Utilidades para los componentes de pruebas unitarias

Fuera de la caja, React no proporciona nada para la inyección de dependencia, el enrutamiento, las llamadas HTTP o el manejo avanzado de formularios. Se espera que elijas cualquier librería adicional para añadirla en base a tus necesidades, lo cual puede ser tanto bueno como malo dependiendo de la experiencia que tengas con estas tecnologías. Algunas de las bibliotecas populares que se utilizan a menudo junto con React son:

  • React-router para el enrutamiento
  • Fetch (o axios) para peticiones HTTP
  • Una amplia variedad de técnicas para la encapsulación de CSS
  • Biblioteca de Pruebas para utilidades adicionales.

Los equipos con los que he trabajado han encontrado liberadora la libertad de elegir sus bibliotecas. Esto nos da la capacidad de adaptar nuestra pila a los requisitos particulares de cada proyecto, y no hemos encontrado el costo de aprender nuevas bibliotecas tan alto.

Lenguajes, paradigmas y patrones

Dando un paso atrás de las características de cada framework, veamos qué tipo de conceptos de alto nivel son populares en ambos frameworks.

React

Varias cosas importantes vienen a la mente cuando se piensa en React: JSX, componentes y ganchos.

JSX

A diferencia de la mayoría de los frameworks, React no tiene un lenguaje de plantillas separado. En lugar de seguir el enfoque clásico de separar el marcado y la lógica, React decidió combinarlos dentro de los componentes utilizando JSX, un lenguaje similar al XML que permite escribir el marcado directamente en el código JavaScript.

Aunque los méritos de mezclar el marcado con JavaScript pueden ser discutibles, tiene un beneficio indiscutible: el análisis estático. Si cometes un error en tu marcado JSX, el compilador emitirá un error en lugar de continuar en silencio. Esto ayuda al detectar instantáneamente errores de escritura y otros errores tontos. El uso de JSX atrapado en diferentes proyectos – como MDX, que permite usar JSX en archivos de marcas de revisión.

Componentes

En React puede definir los componentes utilizando funciones y clases.

Los componentes de clase permiten escribir el código usando clases ES y estructurar la lógica del componente en métodos. También te permiten utilizar los métodos tradicionales del ciclo de vida de React para ejecutar la lógica personalizada cuando un componente se monta, actualiza, desmonta, etc. A pesar de que esta escritura es más fácil de entender para las personas familiarizadas con la programación OOP, es necesario ser consciente de todos los sutiles matices que tiene JS – por ejemplo, cómo funciona, y no olvidar de vincular los controladores de eventos.

Los componentes de funciones se definen como funciones simples. A menudo son puros y proporcionan un claro mapeo entre los apoyos de entrada y la salida renderizada. El código funcional suele estar menos acoplado y es más fácil de reutilizar y probar. Antes de la introducción de los ganchos, los componentes funcionales no podían tener estado y no tenían una alternativa a los métodos de ciclo de vida.

Hay una tendencia entre los desarrolladores de React a abandonar los componentes de clase en favor de componentes funcionales más simples, pero como los ganchos son una característica más reciente, normalmente se verá una mezcla de ambos enfoques en los proyectos más grandes de React.

Ganchos

Los ganchos son una nueva característica de React que se introdujo en la versión 16.8. Son funciones que permiten clasificar el estado de los componentes y las características del método de ciclo de vida en componentes funcionales. Hay dos ganchos proporcionados por React: useState para gestionar el estado, y useEffect para crear efectos secundarios – como la carga de datos o la edición manual del DOM.

Los ganchos han sido introducidos para hacer los componentes funcionales más simples y más compatibles. Ahora se pueden dividir las grandes funciones en partes atómicas más pequeñas, lo que permite dividir las piezas funcionales relacionadas, separándolas de la lógica de representación y reutilizándolas en diferentes componentes. Los ganchos son una alternativa más limpia a la utilización de componentes de clase y otros patrones, como las funciones de renderizado y los componentes de orden superior, que pueden complicarse demasiado rápidamente.

React ofrece formas de estructurar su aplicación sin implicar muchas capas de complicadas abstracciones. La utilización de componentes funcionales junto con los ganchos te permite escribir código que es más simple, más atómico y reutilizable. Aunque la idea de combinar el código y las plantillas pueda parecer controvertida, la separación de la lógica de presentación y de aplicación en diferentes funciones permite obtener resultados similares.

Angular

Angular también tiene algunas cosas interesantes bajo la manga, empezando por las abstracciones básicas como componentes, servicios y módulos, hasta TypeScript, RxJS y Angular Elements, así como su enfoque de la gestión del estado.

Conceptos principales

Angular tiene un nivel de abstracción más alto que React, introduciendo así más conceptos fundamentales con los que familiarizarse. Los principales son:

  • Componentes: definidos como clases ES especialmente decoradas que se encargan de ejecutar la lógica de la aplicación y de renderizar la plantilla
  • Servicios: clases responsables de la implementación de la lógica de negocio y de aplicación, utilizadas por los componentes
  • Módulos: esencialmente Contenedores de DI para el cableado de componentes relacionados, servicios, canalizaciones y otras entidades juntas.

Angular hace un uso intensivo de clases y conceptos como DI, que son menos populares en el mundo del desarrollo front-end, pero que deberían ser familiares para cualquiera con experiencia en el desarrollo back-end.

TypeScript

TypeScript es un nuevo lenguaje construido sobre JavaScript y desarrollado por Microsoft. Es un superconjunto de JavaScript ES2015 e incluye características de las nuevas versiones del lenguaje. Puedes usarlo en lugar de Babel para escribir JavaScript de última generación. También cuenta con un sistema de escritura extremadamente poderoso que puede analizar estáticamente tu código usando una combinación de anotaciones e inferencia de tipos.

También hay un beneficio más sutil. TypeScript ha sido fuertemente influenciado por Java y .NET, por lo que si tus desarrolladores tienen una formación en uno de estos lenguajes, es probable que encuentren que TypeScript es más fácil de aprender que el simple JavaScript (observa cómo cambiamos de la herramienta a tu entorno personal). Aunque Angular fue el primer gran framework en adoptar activamente el TypeScript, ahora está obteniendo impulso en muchos otros proyectos también, como Deno (un tiempo de ejecución nativo de TypeScript), Puppeteer, y TypeORM.

También es posible (y prudente) usar TypeScript junto con React.

RxJS

RxJS es una biblioteca de programación interactiva que permite un manejo más flexible de las operaciones y eventos asíncronos. Es una combinación de los patrones observador e interrogador mezclados con programación funcional. RxJS permite tratar cualquier cosa como un flujo continuo de valores y realizar varias operaciones en él como mapear, filtrar, dividir o fusionar.

La biblioteca ha sido adoptada por Angular en su módulo HTTP también para algún uso interno. Cuando realizas una petición HTTP, devuelve un observable en lugar de la promesa habitual. Este enfoque abre la puerta a interesantes posibilidades, como la capacidad de cancelar una petición, reintentarla varias veces, o trabajar con flujos de datos continuos como WebSockets. Pero esto es sólo la superficie. Para dominar el RxJS, necesitarás conocer los diferentes tipos de Observables, Sujetos, así como un centenar de métodos y operadores.

Gestión del Estado

De manera similar a React, Angular Elements tienen un concepto de estado de componente. Los componentes pueden almacenar datos en sus propiedades de clase y vincular los valores a sus plantillas. Si se quiere compartir el estado a través de la aplicación, se puede pasar a un servicio de estado que más tarde se puede inyectar en los componentes. Dado que la programación reactiva y el RxJS es un ciudadano de primera clase en Angular, es común hacer uso de observables para recalcular partes del estado basado en alguna entrada. Esto, sin embargo, puede ser complicado en aplicaciones más grandes ya que el cambio de algunas variables puede desencadenar una cascada multidireccional de actualizaciones que es difícil de seguir. Hay bibliotecas para Angular que permiten simplificar el manejo de los estados a escala. Las veremos con más detalle más adelante.

Angular Elements

Angular Elements proporcionan una forma de empaquetar los componentes angulares como elementos personalizados. También conocidos como componentes web, los elementos personalizados son una forma estandarizada de crear elementos HTML personalizados que son controlados por su código JavaScript. Una vez que definas tal elemento y lo agregues al registro del navegador, se mostrará automáticamente en todos los lugares a los que se haga referencia en el HTML. Angular Elements proporcionan una API que crea la envoltura necesaria para implementar la API de componentes personalizados y hacerla funcionar con el mecanismo de detección de cambios de Angular. Este mecanismo puede utilizarse para incrustar otros componentes o aplicaciones enteras de Angular en su aplicación host, potencialmente escrita en un marco de trabajo diferente con un ciclo de desarrollo distinto.

Hemos encontrado que TypeScript es una gran herramienta para mejorar la mantenibilidad de nuestros proyectos, especialmente aquellos con una gran base de código o un dominio complejo/lógica de negocios. El código escrito en TypeScript es más descriptivo, y más fácil de seguir y refactorizar. Incluso si no va con Angular, te sugerimos que lo consideres para tu próximo proyecto de JavaScript. RxJS introduce nuevas formas de manejar el flujo de datos en su proyecto, pero requiere que tengas una buena comprensión del tema. De lo contrario, puede traer una complejidad no deseada a tu proyecto. Angular Elements tienen el potencial de reutilizar los componentes angulares, y es interesante ver cómo se desarrolla esto en el futuro.

Ecosistema

Lo bueno de los frameworks de código abierto es el número de herramientas creadas a su alrededor. A veces, estas herramientas son incluso más útiles que el propio framework. Echemos un vistazo a algunas de las herramientas y bibliotecas más populares asociadas a cada framework.

Angular

Angular CLI

Una tendencia popular con los frameworks modernos es tener una herramienta CLI que te ayuda a arrancar tu proyecto sin tener que configurar la estructura por ti mismo. Angular tiene Angular CLI para eso. Te permite generar y ejecutar un proyecto con sólo un par de comandos. Todos los scripts responsables de construir la aplicación, iniciar un servidor de desarrollo y ejecutar pruebas están ocultos en node_modules. También puedes usarlo para generar nuevo código durante el desarrollo e instalar dependencias.

Angular introduce una nueva e interesante forma de manejar las dependencias de tu proyecto. Al usar ng add, puedes instalar una dependencia y se configurará automáticamente para su uso. Por ejemplo, cuando ejecutas ng add @angular/material, Angular CLI descarga Angular Material del registro npm y ejecuta su script de instalación que configura automáticamente tu aplicación para usar Angular Material. Esto se hace usando Angular schematics. Schematics es una herramienta de flujo de trabajo que permite a las bibliotecas hacer cambios en su código base. Esto significa que los autores de la biblioteca pueden proporcionar formas automáticas de resolver los problemas de incompatibilidad con las versiones anteriores que podrías sufrir al instalar una nueva versión.

Ionic framework

Ionic es un framework muy popular para el desarrollo de aplicaciones móviles híbridas. Proporciona un contenedor de Córdova que está bien integrado con Angular y una bonita biblioteca de componentes materials. Usándolo, se puede configurar y construir fácilmente una aplicación móvil. Si prefieres una aplicación híbrida a una nativa, esta es una buena elección.

Angular universal

Angular universal es un proyecto que agrupa diferentes herramientas para permitir la representación del lado del servidor para las aplicaciones Angular. Está integrado con Angular CLI y soporta varios frameworks Node.js, como Express y Hapi, así como con el núcleo .NET.

Augury

Augury es una extensión del navegador para Chrome y Firefox que ayuda a depurar las aplicaciones Angular que se ejecutan en modo de desarrollo. Puedes usarlo para explorar tu árbol de componentes, monitorizar la detección de cambios y optimizar los problemas de rendimiento.

React

Create React App

Create React App es una utilidad CLI para que React pueda crear rápidamente nuevos proyectos. Similar a la Angular CLI, permite generar un nuevo proyecto, ejecutar la aplicación en modo de desarrollo o crear un paquete de producción. Utiliza Jest para pruebas unitarias, soporta el perfilado de la aplicación utilizando variables de entorno, proxies de back-end para el desarrollo local, TypeScript, Sass, PostCSS, y muchas otras características.

React Native

React Native es una plataforma desarrollada por Facebook para crear aplicaciones móviles nativas utilizando React. A diferencia de Ionic, que produce una aplicación híbrida, React Native produce una interfaz de usuario verdaderamente nativa. Proporciona un conjunto de componentes estándar de React que están unidos a sus contrapartes nativas. También permite crear sus componentes y vincularlos a código nativo escrito en Objective-C, Java o Swift.

Next.js

Next.js es un framework para el renderizado del lado del servidor de las aplicaciones de React. Proporciona una forma flexible de renderizar total o parcialmente tu aplicación en el servidor, devolver el resultado al cliente y continuar en el navegador. Trata de hacer más fácil la compleja tarea de crear aplicaciones universales, por lo que la configuración está diseñada para ser lo más simple posible, con una cantidad mínima de nuevas características y requisitos para la estructura de tu proyecto.

React-admin

React-admin es un framework para construir aplicaciones de SPA estilo CRUD sobre las APIs existentes de REST o GraphQL. Viene con características útiles, como una interfaz de usuario construida con Material Design, internacionalización, tematización, validación de datos y más.

Tomando una decisión: React vs Angular

Ya habrán notado que cada framework tiene su propio conjunto de capacidades, tanto con sus lados buenos como malos. Pero este análisis se ha hecho fuera de cualquier contexto particular y, por lo tanto, no proporciona una respuesta sobre qué framework debes elegir. Para decidirlo, tendrás que revisarlo desde la perspectiva de tu proyecto. Esto es algo que tendrás que hacer por tu cuenta.

Colores en css y cómo usarlos

Colores en css y cómo usarlos

Los colores en CSS juegan un papel vital para hacer que una página web sea útil o no. En CSS, podemos controlar el color de primer plano y de fondo de un elemento con las propiedades de color y de fondo. Cuando aprendí CSS en el pasado, no había una guía directa o una manera de aprender a usar los colores en CSS.

Decidí escribir sobre los colores y cómo usarlos en CSS. En este artículo, explicaré los tipos de colores, palabras clave específicas, y cuándo usar cuáles junto con casos de uso y ejemplos. Aviso: este no es un artículo sobre la teoría del color.

La propiedad del color (colores en CSS)

Según el MDN:

La propiedad color CSS establece el valor de color de primer plano del texto y las decoraciones de texto de un elemento y establece el valor de color actual.

La propiedad establece el valor del color de primer plano de un elemento. Los valores permitidos para ello son: named-color, hex-color, rgb(), hsl, inherit, initial, unset y currentColor. Voy a repasar cada tipo de valor en detalle.

Valor Named Color

.heading {
    color: brown;
    color: green;
    color: black;
}

Comprueba la lista completa de los colores en css si estás interesado. Vale la pena mencionar que algunos nombres de colores no están soportados en todos los navegadores.

En general, no soy un fanático de usar nombres de colores, ya que no es fácil recordar lo que significa cada color. Por ejemplo, a veces veo a gente que usa el blanco o el negro como valor de color. Esto no es un problema. Pero en general, no recomiendo usar colores en css con nombre. El único caso en el que usaría un color con nombre es el siguiente:

*, *:before, *:after {
    outline: solid 1px red;
}

Usé el color rojo para mostrar rápidamente un esquema de todos los elementos de la página. El color rojo es muy popular para ese uso e incluso vi memes y cosas divertidas sobre él.

Valores de color hexadecimales

Un color hexagonal consiste en seis caracteres, #ffffff representa el color blanco, por ejemplo. Hay un consejo que quiero asegurarme que sepas, que es la notación abreviada para los valores hexadecimales.

Funciona de manera que si el par de valores de color son idénticos, entonces el segundo puede ser eliminado. Cada par representa un modal de color y son Rojo, Verde y Azul, respectivamente. Veamos lo siguiente:

body { color: #222222; /* Se convertirá en #222 */
body { color: #000000; /* Se convertirá en #000 */

El #222222 es igual al #222, el valor hexagonal puede ser representado como 22, 22, 22, tomamos el primer valor de cada uno, así que resultó en el #222.

Veamos un visual que explica cómo funciona esto.

color hexadecimales

Colores RGB/RGBA

Rojo Verde Azul (RGB) es un modelo de color que representa los tres canales de color (rojo, verde, azul). Cada valor de los tres puede ser un número entre 0 y 255 o un porcentaje de 0 a 100%.

Si los tres valores son 0, entonces el color resultante será negro. Sin embargo, si todos los valores son 255, entonces el color será blanco. Lo mismo puede aplicarse también a los valores porcentuales.

.element {
    /* Blanco */
    color: rgb(255, 255, 255);
    color: rgb(100%, 100%, 100%);

    /* Negro */
    background-color: rgb(0, 0, 0);
    background-color: rgb(0%, 0%, 0%);
}

Lo bueno de rgb es que hay un canal alfa que controla la transparencia del color. Esto puede ser muy útil para tener un matiz de color. Hay más casos de uso útiles que trataré en este artículo.

.elemento {
    /* Un color de fondo negro con un 50% de transparencia */
    background-color: rgba(0, 0, 0, 0.5);
}

Si el valor de alfa es cero, entonces el color o el fondo será transparente y no visible.

Colores HSL

Rara vez noto el uso de este modelo de colores en css, pero recientemente comenzó a ganar más atención de los diseñadores y desarrolladores. HSL significa: tono, saturación, luminosidad.

En la rueda de colores en css, cada color tiene un cierto grado, que es el tono. Entonces, todavía tenemos que establecer la saturación y la luminosidad.

Déjame guiarte a través del proceso de cálculo de un valor de color HSL. Supongamos que elegimos el siguiente color.

rueda de colores en css

Para la saturación y la luminosidad, aquí hay una bonita forma visual de imaginarlas que aprendí gracias a este artículo. Una vez elegido el grado de matiz, podemos imaginar la saturación y la luminosidad como la siguiente imagen.

saturación y la luminosidad colores en css

La saturación comienza en el gris y termina con el color del tono. Mientras que la luminosidad comienza desde el negro hasta el color de la tonalidad, y finalmente hasta el color blanco.

Esa flexibilidad es muy útil, puedes elegir un color de tono, y luego ajustar la saturación y la luminosidad según tus necesidades. Esto puede ayudarte a crear una paleta de colores que sea dinámica y fácil de usar.

CurrentColor

CurrentColor tiene el valor de la propiedad de color de un elemento. Se puede usar en elementos que no heredan el color por defecto. Aquí hay algunas propiedades que están predeterminadas en currentColor:

border-color
texto-decoración-color
contorno-color
box-shadow

Parece que currentColor es similar a usar una variable CSS, pero estaba ahí antes de que las variables CSS fueran soportadas. Mira lo siguiente:

.elemento {
    color: #222;
    border: 2px solid;
}

¿Puedes adivinar el color del borde? Es lo mismo que la propiedad del color. Eso es porque el color del borde tiene a CurrentColor como la variable por defecto. Puedes imaginarlo así:

.elemento {
    color: #222;
    border: 2px solid currentColor;
}

Una cosa interesante que hay que saber sobre el CurrentColor es que puede ser usado en el nivel del elemento padre, o para los elementos hijos.

<h1>
    Soy un titulo
    <span>Yo soy un elemento hijo</span>
</h1>

En el En el ejemplo anterior, podemos usar CurrentColor para el elemento h1 o el elemento span. Ver más abajo:

h1 {
    color: #222;
    background-color: currentColor;
}

Usar DevTools para cambiar el modo de color

Un pequeño truco que es útil cuando se experimenta con colores en CSS, es usar el conmutador en Chrome DevTools. Elige cualquier elemento con un valor de color hexadecimal, e inspecciónalo. Luego, haz clic en el pequeño cuadrado que muestra el color usado actualmente.

Lo anterior funciona sólo con el color hexadecimal, y las propiedades que utilizan directamente una variable CSS como la siguiente.

.btn {
    background-color: var(--brand-primary);
}

Sin embargo, el inconveniente de usar colores HSL combinados con variables CSS es que el comportamiento entre los navegadores todavía no es consistente. Por ejemplo, el ejemplo anterior no mostrará un cuadrado de color en Firefox. Mira la figura de abajo para una comparación:

devtools colores en css

El pequeño cuadrado azul de Safari muestra el valor calculado de la propiedad CSS utilizada. Mejor que nada.

Te preguntarás por qué es necesario tener un cuadrado que represente el color calculado junto a la propiedad. Sin el cuadrado, no podemos abrir la paleta de colores de DevTools, que nos ayuda a comprobar si el color es accesible.

Esto no siempre es así. Por ejemplo, un elemento de un botón tiene un color: #fff y un color de fondo establecido con hsl. Todavía podemos abrir la paleta de colores de DevTools desde la propiedad color y ver la relación de contraste. Sin embargo, para los elementos que utilizan un valor hsla con variables CSS, esto no es posible.

Observaciones de color funcional separadas por espacios

La forma común de usar rgb y hsl es separando sus valores con comas. Una nueva forma ya tiene un gran apoyo en los navegadores que no usan comas.

/* Antes */
.element {
  background-color: rgb(0, 0, 0);
  background-color: rgba(0, 0, 0, 1);
}

/* Despues */
div {
  background-color: rgb(0 0 0);
  background-color: rgb(0 0 0 / 0.5);
  background-color: rgb(0 0 0 / 50%);
}

Recuerda que la opacidad separada por barras es opcional, y sólo debes usarla si quieres ajustar la transparencia alfa o de color.

La nueva forma es mejor y recomendada ya que las nuevas funciones de color CSS como lab(), lch() y color() sólo funcionarán con la técnica de separación de espacios. Es bueno acostumbrarse a ellas y se puede hacer fácilmente una copia de seguridad para los navegadores no compatibles.

Aviso: aunque he recomendado el uso de la sintaxis de separación de espacios, no la he usado en el artículo porque es nueva, y no quiero introducir ninguna confusión o malentendido no deseado.

Valores Globales (inherit, initial, unset)

Podemos usar los valores globales para dejar que un elemento herede el color de su progenitor, o para restablecer el color de un elemento con palabras clave iniciales o no iniciales. Veamos el siguiente ejemplo para entender esas palabras clave.

Tenemos una sección hero con un título, una descripción y un enlace.

<section class="hero">
    <h2>Titulo de pagina</h2>
    <p>Esta es la descripción</p>
    <a href="#">Ver todo</a>
</section>

Con color: #222 añadido al elemento padre, ¿qué esperas del color de los elementos hijos? El h2 y la p heredarán el color, mientras que la a no lo heredará por defecto. Interesante, ¿no?

El color de enlace por defecto es:

:link { color: #0000ee; }

Si lo necesitas, puedes reforzar el vínculo para heredar añadiendo el color: inherit a él.

La palabra clave unset

Según el MDN:

La palabra clave CSS unset restablece una propiedad a su valor heredado si la propiedad se hereda naturalmente de su padre, y a su valor inicial si no.

Para el mismo ejemplo explicado anteriormente, podemos dejar que el enlace herede el color usando lo siguiente:

.hero a { color: unset; }

Reajustará el color al valor heredado por defecto del elemento .hero, que es lo que queremos.

Ver demo en Codepen

Conclusiones finales sobre colores en CSS

Espero que este artículo te haya gustado, he intentado explicarlo de la forma más sencilla que he podido, si tienes alguna duda deja un comentarios y estaré encantado de ayudarte. De mientras te recomiendo leer el siguiente artículo, Comentario en CSS.

Comentario en CSS: Ejemplo de comentario CSS

Comentario en CSS: Ejemplo de comentario CSS

Un comentario en CSS se utilizan para explicar un bloque de código o para hacer cambios temporales durante el desarrollo. El código comentado no se ejecuta.

Tanto los comentarios de una sola línea como los de varias líneas en CSS empiezan con /* y terminan con */, y puedes añadir tantos comentarios a tu hoja de estilos como quieras. Por ejemplo:

/* Este es un comentario de una sola línea */
.group:after {
  content: "";
  display: table;
  clear: both;
}

/*
  Esto es
  un comentario
  con multiples lineas
*/

También puede hacer más legibles sus comentarios estilizándolos:

/*
***
* SECCIÓN PARA EL ESTILO H2 
***
* Un párrafo con información
* que sería útil para alguien
* que no escribió el código.
* Los asteriscos alrededor del párrafo 
* ayudan a hacerlo más legible.
***
*/

Organizar el CSS con comentarios

En proyectos más grandes, los archivos CSS pueden crecer rápidamente en tamaño y ser difíciles de mantener. Puede ser útil organizar tu CSS en distintas secciones con una tabla de contenidos para facilitar la búsqueda de ciertas reglas en el futuro:

/* 
*  ÍNDICE DEL CCS
*   
*  1.0 - Reset
*  2.0 - Fonts
*  3.0 - Globals
*  4.0 - Color Palette
*  5.0 - Header
*  6.0 - Body
*    6.1 - Sliders
*    6.2 - Imagery
*  7.0 - Footer
*/

/*** 1.0 - Reset ***/

/*** 2.0 - Fonts ***/

/*** 3.0 - Globals ***/

/*** 4.0 - Color Palette ***/

/*** 5.0 - Header ***/

/*** 6.0 - Body ***/
h2 {
  font-size: 1.2em;
  font-family: "Ubuntu", serif;
  text-transform: uppercase;
}

/*** 5.1 - Sliders ***/

/*** 5.2 - Imagery ***/

/*** 7.0 - Footer ***/

Un poco más sobre el CSS: Sintaxis y selectores CSS

Cuando hablamos de la sintaxis del CSS, estamos hablando de cómo se disponen las cosas. Hay reglas sobre dónde va cada cosa, tanto para que puedas escribir CSS de forma consistente como para que un programa (como un navegador) pueda interpretarlo y aplicarlo a la página correctamente.

Hay dos formas principales de escribir CSS.

CSS en línea (Comentario en CSS)

Especificaciones sobre la especificidad del CSS:

El CSS en línea aplica el estilo a un solo elemento y a sus hijos, hasta que se encuentra otro estilo que anula el primero.

Para aplicar CSS en línea, agrega el atributo “style” a un elemento HTML que quieras modificar. Dentro de las comillas, incluye una lista delimitada por punto y coma de pares clave/valor (cada uno a su vez separado por dos puntos) que indica los estilos a establecer.

Aquí tienes un ejemplo de CSS en línea. Las palabras “Uno” y “Dos” tendrán un color de fondo amarillo y un color de texto rojo. La palabra “Tres” tiene un nuevo estilo que anula el primero, y tendrá un color de fondo verde y un color de texto cian. En el ejemplo, estamos aplicando estilos a las etiquetas , pero puedes aplicar un estilo a cualquier elemento HTML.

<div style="color:red; background:yellow">
  Uno
  <div>
    Dos
  </div>
  <div style="color:cyan; background:green">
    Tres
  </div>
</div>

CSS interno (Comentario en CSS)

Mientras que escribir un estilo en línea es una forma rápida de cambiar un solo elemento, hay una forma más eficiente de aplicar el mismo estilo a muchos elementos de la página a la vez.

El CSS interno tiene sus estilos especificados en la etiqueta <style>, y está incrustado en la etiqueta <head>.

Aquí hay un ejemplo que tiene un efecto similar al del ejemplo “inline” anterior, excepto que el CSS ha sido extraído a su propia área. Las palabras “Uno” y “Dos” coincidirán con el divisor y serán un texto rojo sobre un fondo amarillo. Las palabras “Tres” y “Cuatro” también coincidirán con el div selector, pero también coinciden con el selector .nested_div que se aplica a cualquier elemento HTML que haga referencia a esa clase. Este selector más específico anula el primero, y terminan apareciendo como texto cian sobre un fondo verde.

<style type="text/css">
  div { color: red; background: yellow; }
  .nested_div { color: cyan; background: green; }
</style>

<div>
  Uno
  <div>
    Dos
  </div>
  <div class="nested_div">
    Tres
  </div>
  <div class="nested_div">
    Cuatro
  </div>
</div>

Los selectores mostrados arriba son extremadamente simples, pero pueden llegar a ser bastante complejos. Por ejemplo, es posible aplicar estilos sólo a elementos anidados; es decir, un elemento que es hijo de otro elemento.

Este es un ejemplo en el que especificamos un estilo que sólo debe aplicarse a los elementos del div que son hijos directos de otros elementos del div. El resultado es que “Dos” y “Tres” aparecerán como texto rojo sobre un fondo amarillo, pero “Uno” y “Cuatro” no se verán afectados.

<style type="text/css">
  div > div { color: red; background: yellow; }
</style>

<div>
  Uno
  <div>
    Dos
  </div>
  <div>
    Tres
  </div>
</div>
<div>
  Cuatro
</div>

CSS externo

Todos los estilos tienen su propio documento que está enlazado en la etiqueta <head> . La extensión del archivo enlazado es .css.

Si te ha gustado este artículo sobre como poner un comentario en CSS, te recomiendo leer sobre Como crear un texto con degradado de color en CSS.

¿Qué es React y para qué te puede servir?

Qué es React y para qué te puede servir

Si te preguntas Qué es ReactJS, probablemente ya estés familiarizado con algunos lenguajes de programación comunes. Sin embargo, como cualquier framework de codificación o biblioteca, saber sobre ReactJS requiere un conocimiento básico de JavaScript primero. También es importante entender no sólo lo que es un marco de trabajo o una biblioteca de codificación, sino también cómo puede ser utilizado y aplicado hoy en día por los programadores de todo el mundo.

En esta guía sobre ReactJS, cubriremos dónde entra el JavaScript, qué es lo que es especial en ReactJS, y cuáles son las diferentes aplicaciones para las que puedes usarlo si decides aprender más sobre él para añadirlo a tu propia “caja de herramientas” de codificación.

¿Qué es ReactJS y en qué se diferencia de JavaScript?

Lo primero que hay que saber es que ReactJS es una biblioteca (una plantilla o sistema para usar un lenguaje de codificación particular y trabajar con él) mientras que JavaScript es el lenguaje en sí. Las bibliotecas son colecciones de código JavaScript preescrito que puede ser utilizado para tareas comunes de JS, lo que te permite ahorrar mucho tiempo y energía mental evitando tener que codificar minuciosamente las cosas a mano.

El propio JavaScript es uno de los lenguajes de programación más antiguos, así como el más utilizado y aplicable. (Si quieres aprender más sobre JavaScript, aqui te dejo los fundamentos del JavaScript) Lo que es importante entender es cómo un framework de JavaScript (ya sea React o cualquier otro) es útil para ti.

Por ejemplo, el uso de bibliotecas de codificación de JS ofrece la posibilidad de evitar o resolver o implementar fácilmente tareas repetitivas. Lo más probable es que exista una biblioteca JS para cualquier función genérica de JavaScript que tú y otros desarrolladores hayan tenido que afrontar repetidamente codificando a mano.

Esta misma estructura se utiliza también para otros lenguajes de desarrollo. Por ejemplo, muchos desarrolladores de Ruby utilizan el popular marco de trabajo Rails para sus proyectos, que es lo que significa cuando alguien dice que trabaja con Ruby on Rails.

Hablando sobre qué es ReactJS, el framework fue desarrollado y creado por el ingeniero de Facebook Jordan Walke y compartido por primera vez a través del newsfeed de la compañía en 2011. Desde entonces ha sido de código abierto, y, como la mayoría de los lenguajes de programación y bibliotecas, ha visto numerosas iteraciones y adiciones nuevas desde que fue introducido por primera vez.

Entonces, ¿qué es lo que hace a ReactJS particularmente útil o único?

ReactJS está diseñado específicamente para ayudar a los programadores a desarrollar las UI (interfaces de usuario), que es el lado de una aplicación o sitio web particular que el usuario ve e interactúa. Dado que la experiencia del usuario y la facilidad de uso son algunos de los mejores indicadores y conductores de un sitio o aplicación de éxito, una biblioteca dedicada como React fue diseñada para agilizar este proceso y facilitar la creación de UIs eficientes y atractivas.

Antes de ReactJS, los programadores tenían que construir sus UI “a mano” con el lenguaje JavaScript en bruto solamente. Aunque el lenguaje ofrecía las soluciones que los desarrolladores buscaban, el proceso era a menudo complejo, y se prestaba a ser propenso a los errores.

Además de proporcionar código reutilizable de la biblioteca de React para resolver los problemas mencionados, React tiene dos características clave que se suman a su atractivo para los desarrolladores de JavaScript:

JSX (JavaScript eXtension)

Para entender por qué JSX es un beneficio de ReactJS, necesitas entender los documentos HTML, el núcleo de cualquier sitio web. Los navegadores web leen los documentos HTML y los muestran en cualquier dispositivo que estés usando como páginas web. Mientras esto sucede, los navegadores crean Modelos de Objetos de Documentos (DOMs), un “diagrama de flujo” representativo de la disposición de una página web. Los desarrolladores pueden entonces añadir contenido dinámico a sus proyectos modificando los DOM a través de lenguajes como JavaScript.

Teniendo esto en cuenta, JSX (abreviatura de JavaScript eXtension) es una extensión de React que agiliza el proceso de modificación de un DOM mediante el uso de un código simple, de estilo HTML. Aún mejor, JSX es compatible con cualquier navegador web moderno porque React ha sido diseñado para trabajar con todos ellos.

Virtual DOM

Si un desarrollador usa JSX para manipular y actualizar un DOM, ReactJS crea algo llamado Virtual DOM. El Virtual DOM es una imitación del DOM del sitio, y ReactJS hace referencia a esta copia para ver qué elementos del DOM real necesitan cambiar cuando ocurre un evento (como que un usuario haga clic en un botón en el sitio).

Digamos que un usuario introduce un comentario en un formulario de entrada de un blog y presiona el botón ” comentar”. Sin ReactJS, todo el DOM tendría que actualizarse para reflejar este cambio, consumiendo una valiosa potencia de procesamiento y provocando retrasos en el usuario y, por consiguiente, una experiencia de usuario menos óptima. React, por otra parte, escanea el DOM virtual para ver lo que ha cambiado después de una acción del usuario (en este caso, se añade un comentario) y actualiza selectivamente esa sección del DOM solamente.

¿Por qué es esto tan genial? Porque al simplificar procesos como estos, también puedes mejorar significativamente el tiempo de carga de procesamiento de la aplicación que estás creando o editando, lo que hace que la experiencia del usuario sea mejor y que haya menos retraso en el front-end.

¿Por qué debería aprender y saber qué es ReactJS?

En pocas palabras, trabajar con ReactJS puede ayudarte a crear fácilmente impresionantes IU.

Además, a medida que más y más negocios se trasladan al ámbito digital (y por lo tanto, los escaparates digitales y las aplicaciones se vuelven más importantes para los negocios de éxito), la correspondiente demanda de programadores que dominen ReactJS crece rápidamente. Si imaginas un futuro en la programación como una posible carrera, aprender y saber qué es ReactJS y permitirte adquirir las habilidades necesarias para satisfacer esta creciente demanda es una sabia elección.

Cómo aprender JavaScript desde cero rápidamente

Cómo aprender JavaScript desde cero rápidamente

Antes de comenzar como aprender JavaScript desde cero rápidamente, debemos de comenzar primero en conocer exactamente que es JavaScript y para que lo vamos a utilizar.

¿Qué es JavaScript?

JavaScript es un lenguaje de programación orientado a objetos que se utiliza principalmente para crear interfaces interactivas basadas en la web. ¿Suena demasiado técnico? Bueno, entendamos algunos ejemplos:

  • Cuando pasas el ratón por encima de un botón, o cualquier otro elemento, cuando ese elemento se ilumina o mueve indicando que se puede hacer clic en él.
  • Mientras navegas por Facebook, cuando haces clic en el nombre de tu amigo, aparece una ventana de chat.
  • Cuando buscas un tutorial en muchas páginas web, instantáneamente obtienes los resultados de la búsqueda.

En todos los ejemplos anteriores, realizas alguna acción ( deslizarte, hacer clic, escribir) y a cambio, algo sucede. Esta interactividad es exactamente donde el JavaScript entra en escena. JavaScript captura estas acciones/eventos y en base a eso realiza alguna acción/disparo. Es JavaScript el que te proporciona la interactividad en el frontend.

HTML provee el contenido, CSS provee la apariencia de este contenido, JavaScript provee la interactividad sobre este contenido. Sin JavaScript, la experiencia web sería bastante aburrida.

Otro lugar donde JavaScript es ampliamente utilizado es en el desarrollo de backend utilizando modernos frameworks como NodeJS. De hecho, hay una popular plataforma web llamada MEAN stack que agrupa a MongoDB, ExpressJS, AngularJS, y NodeJS.

Cada aplicación web tiene 2 partes – la parte del backend, que es la lógica del lado del servidor y la parte del frontend, que es lo que los clientes verán en el navegador. Los lenguajes de programación más comunes son PHP, Java (no confundir Java con JavaScript), Python, etc. El problema en el uso de estos lenguajes de programación es que la empresa tiene que contratar a desarrolladores de backend que sean expertos en uno de estos lenguajes de programación y desarrolladores de frontend que sean expertos en JavaScript.

NodeJS es un framework basado en JavaScript que recientemente ha ganado popularidad debido a que ahora las empresas pueden contratar desarrolladores de JavaScript que pueden trabajar tanto en el front-end como en el backend. Esto hace que la contratación sea mucho más fácil y también, ya que el mismo desarrollador conoce tanto el frontend como el backend, se vuelve más fácil el manejo del código base.

Nota al margen: JavaScript no tiene nada que ver con Java. Aunque los nombres son similares, ambos lenguajes no están relacionados. "Java" es tan similar a "JavaScript" como "coche" es a "alfombra".

¿Por qué aprender JavaScript desde cero?

JavaScript en el pasado reciente se ha vuelto muy popular entre la comunidad de desarrolladores. Muchas grandes y pequeñas organizaciones están usando JavaScript como su principal lenguaje de programación tanto para el backend como para el frontend. Ha habido un aumento significativo en el número de anuncios de trabajo en JavaScript.

Claramente, JavaScript ha conseguido posicionarse entre los principales lenguajes de programación y, de hecho, está creciendo rápidamente.

Los sueldos de los desarrolladores de JavaScript también han estado subiendo bruscamente, particularmente en las áreas donde se están desarrollando las nuevas empresas. Muchas startups en estos días se están moviendo a MEAN stack y por lo tanto, la demanda sólo va a aumentar más.

Todos estos factores hacen de JavaScript una excelente elección para aquellos que quieren desarrollar una carrera como Ingeniero de Software.

¿Cómo podemos aprender JavaScript desde cero y rápidamente?

Una de las mejores maneras de aprender JavaScript desde cero es hacer un proyecto basado en JavaScript. Aquí están algunas interesantes ideas de proyectos en JavaScript:

  • Una simple calculadora con operaciones como suma, resta, multiplicación, división, etc.
  • Calculadora de facturación de comercio electrónico.
  • Un sistema de división de facturas que ayuda a dividir las facturas entre amigos.
  • Un juego básico de preguntas y respuestas.
  • Un simple buscador potenciado por JavaScript.
  • Forma un validador que se asegura de que no se proporcione ninguna entrada incorrecta en el formulario.
  • Un cuadro de comentarios con JavaScript en un blog.
  • EchoBot – un robot que se hace eco de lo que acabas de escribir.
  • Una simple aplicación de lista de todo lo que te ayuda a manejar tus tareas.
  • Juego de tres en raya que utiliza JavaScript, HTML y CSS.
  • Galería de fotos.
  • Tu propia página de inicio interactiva.
  • Un simple generador de estadísticas de documentos usando JavaScript – puedes mostrar estadísticas como el recuento de palabras, el recuento del alfabeto, la frecuencia de palabras, el recuento de párrafos, etc.
  • Reloj despertador/temporizador basado en JavaScript.
  • Matriz basada en JavaScript – que puede generar números del 1 al 6.

Los pasos para completar un proyecto basado en JavaScript son los siguientes:

  • Coge una idea de proyecto de las mencionadas anteriormente.
  • Diseña una interfaz de usuario fácil de usar en una hoja de papel.
  • Planifica una lógica del proyecto (por ejemplo, ¿cómo funcionará la fórmula de facturación del comercio electrónico? y anotarla en una hoja de papel.
  • Escribir un pseudocódigo para desarrollar un esquema básico. En este pseudocódigo, debes tomar nota de las funciones que vas a escribir y sus parámetros y el valor de salida. Esto esencialmente te acercará un paso más al código final.
  • Finalmente, comienza a codificar en JavaScript. Para cualquier cosa que te esfuerces, sólo debes buscarlo en Google cómo funciona. Por ejemplo, para la calculadora de facturación, puede que tengas que escribir sobre la lista de elementos de la factura que pueden requerir un bucle. Busca en Google un ejemplo simple de cómo funciona un bucle en JavaScript y rápidamente podrás obtener un código de trabajo ya listo.

Puedes repetir este enfoque que arriba te he sugerido para múltiples proyectos y finalmente estarás muy familiarizado con la sintaxis de JavaScript y su uso. Entonces podrás pasar a proyectos avanzados aprender JavaScript desde cero.

Otro enfoque para aprender rápidamente JavaScript es seguir un conocido tutorial basado en JavaScript. En mi blog puedes leer este artículo sobre los fundamentos de JavaScript. En la mayoría de estos tutoriales, trabajarás en un proyecto real de JavaScript y, por lo tanto, te ayudará a comprenderlo mejor.

Este segundo enfoque es más útil para aquellos que son relativamente nuevos en la programación. Seguir un tutorial paso a paso es bastante ventajoso si eres nuevo en la programación y quieres entender no sólo el lenguaje de programación sino también los conceptos básicos de la programación.

La clave para aprender JavaScript desde cero rápidamente es escribir mucho código basado en JavaScript en forma de proyectos cortos. Esto le ayudará no sólo a familiarizarse con la sintaxis del lenguaje de programación, sino también a entender dónde puede ser utilizado eficazmente y dónde no debe ser utilizado.

Cómo enviar correos electrónicos en PHP con PHPMailer

enviar correos electrónicos en PHP

PHPMailer es quizás la biblioteca de código abierto más popular para enviar correos electrónicos en PHP. Fue lanzada por primera vez en 2001, y desde entonces se ha convertido en la forma favorita de los desarrolladores de PHP para enviar correos electrónicos de forma programada.

En este artículo, hablaremos acerca de por qué deberías usar PHPMailer en lugar de la función mail() de PHP, y mostraremos algunos ejemplos de código sobre cómo usar esta biblioteca.

¿Es una alternativa a la función mail() de PHP?

En la mayoría de los casos, es una alternativa a la función mail() de PHP, pero hay muchos otros casos en los que la función mail() simplemente no es lo suficientemente flexible para lograr lo que necesitas.

En primer lugar, PHPMailer provee una interfaz orientada a objetos, mientras que mail() no está orientada a objetos. Los desarrolladores de PHP generalmente odian crear cadenas de $headers mientras envían correos electrónicos usando la función mail() porque requieren mucho escape. PHPMailer hace que esto sea muy fácil. Los desarrolladores también necesitan escribir código sucio (caracteres de escape, codificación y formato) para enviar adjuntos y correos electrónicos basados en HTML cuando usan la función mail(), mientras que PHPMailer hace que esto sea muy sencillo.

Además, la función mail() requiere un servidor de correo local para enviar los correos electrónicos, que no siempre es fácil de configurar. PHPMailer puede usar un servidor de correo no local (SMTP) si tiene autenticación.

Otras ventajas para enviar correos electrónicos en PHP con PHPMailer incluyen:

  • Puede imprimir varios tipos de mensajes de error en más de 40 idiomas cuando no puede enviar un correo electrónico.
  • Tiene integrado el soporte del protocolo SMTP y la autenticación a través de SSL y TLS.
  • Puede enviar una versión alternativa de texto plano de correo electrónico para clientes de correo electrónico no HTML.
  • Tiene una comunidad de desarrolladores muy activa que lo mantiene seguro y actualizado.

PHPMailer también es usado por populares sistemas de administración de contenido PHP como WordPress, Drupal y Joomla.

Instalando PHPMailer

Puedes instalar PHPMailer usando Composer para enviar correos electrónicos en PHP:

composer require phpmailer/phpmailer

Enviar correos electrónicos en PHP desde un servidor web local usando PHPMailer

Aquí está el ejemplo más simple de enviar correos electrónicos en PHP desde un servidor web local usando PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

//PHPMailer Object
$mail = new PHPMailer(true);

//La dirección de correo electrónico y el nombre
$mail->From = "de@tudominio.com";
$mail->FromName = "Nombre completo";

//A la dirección y el nombre
$mail->addAddress("destinatario1@tudominio.com", "Nombre del destinatario");
$mail->addAddress("destinatario1@tudominio.com"); //El nombre del destinatario es opcional

//Dirección a la que responderá el destinatario
$mail->addReplyTo("info@tudominio.com", "Respuesta");

//CC y BCC
$mail->addCC("cc@ejemplo.com");
$mail->addBCC("bcc@ejemplo.com");

//Envía un correo electrónico en HTML o en texto plano
$mail->isHTML(true);

$mail->Subject = "Texto del asunto";
$mail->Body = "<i>Cuerpo del correo en HTML</i>";
$mail->AltBody = "Esta es la versión de texto simple del contenido del correo electrónico";

try {
    $mail->send();
    echo "El mensaje ha sido enviado correctamente";
} catch (Exception $e) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

El código y los comentarios deben ser lo suficientemente claros para explicar todo lo que está pasando.

Enviar correos electrónicos en PHP con archivos adjuntos

Aquí tienes un ejemplo de cómo enviar un correo electrónico con archivos adjuntos usando PHPMailer:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

$mail = new PHPMailer;

$mail->From = "de@tudominio.com";
$mail->FromName = "Nombre completo";

$mail->addAddress("destinatario1@ejemplo.com", "Nombre del destinatario");

//Proporciona la ruta del archivo y el nombre de los archivos adjuntos
$mail->addAttachment("archivo.txt", "Archivo.txt");        
$mail->addAttachment("imagen/perfil.png"); //El nombre del archivo es opcional

$mail->isHTML(true);

$mail->Subject = "Texto del asunto";
$mail->Body = "<i>Cuerpo del correo en HTML</i>";
$mail->AltBody = "Esta es la versión de texto simple del contenido del correo electrónico";

try {
    $mail->send();
    echo "El mensaje ha sido enviado correctamente";
} catch (Exception $e) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

Aquí, estamos adjuntando dos archivos – archivo.txt, que reside en el mismo directorio que el script, e imágenes/perfil.png, que reside en el directorio de imágenes del directorio del script.

Para agregar archivos adjuntos al correo electrónico, sólo tenemos que llamar a la función addAttachment del objeto PHPMailer pasando la ruta del archivo como parámetro. Para adjuntar varios archivos, necesitamos llamarla varias veces.

Solución de problemas

En nuestros dos ejemplos, usamos la clase PHPMailer’s Exception para la depuración, así que cualquier error que se arroje nos ayudará a depurar cualquier problema que pueda ocurrir. También añadimos el parámetro true al constructor de PHPMailer, para obtener excepciones de mayor nivel y más descriptivas.

Dependiendo del sistema que utilicemos, probablemente el error más frecuente que veremos estará relacionado con la ejecución de la función mail() en segundo plano:

Mailer Error: Could not instantiate mail function.

Si necesitamos más detalles sobre el error, también podemos añadir algo como esto a la cláusula de captura:

print_r(error_get_last());

Normalmente, el problema con la función de correo estará relacionado con la falta de configuración del servidor de correo, en cuyo caso la función error_get_last devolverá algo como esto:


Array (
    [type] => 2
    [message] => mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
    [file] => OUR_PATH \vendor\phpmailer\phpmailer\src\PHPMailer.php
    [line] => 863
)

Este es el problema con el que probablemente nos encontraremos más a menudo, y podemos resolverlo fácilmente usando SMTP.

Visualización de mensajes de error localizados

$mail->ErrorInfo puede devolver mensajes de error en 43 idiomas diferentes.

Para mostrar los mensajes de error en un idioma diferente, copia el directorio del idioma del código fuente de PHPMailer al directorio del proyecto.

Para devolver los mensajes de error en español, por ejemplo, pon el objeto PHPMailer en el idioma español usando la siguiente llamada al método:

$mail->setLanguage("es");

También puedes añadir tus propios archivos de idioma al directorio de idiomas.

Uso de SMTP (Enviar correos electrónicos en PHP)

Puedes usar el servidor de correo de otro host para enviar el correo electrónico, pero para esto primero necesitas tener una autenticación. Por ejemplo, para enviar un correo electrónico desde el servidor de correo de Gmail, necesitas tener una cuenta de Gmail.

SMTP es un protocolo utilizado por los clientes de correo para enviar una solicitud de envío de correo electrónico a un servidor de correo. Una vez que el servidor de correo verifica el correo electrónico, lo envía al servidor de correo de destino.

A continuación, se muestra un ejemplo de envío de un correo electrónico desde el servidor de correo de Gmail desde tu dominio. No necesitas un servidor de correo local para ejecutar el código. Utilizaremos el protocolo SMTP:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

require_once "vendor/autoload.php";

$mail = new PHPMailer(true);

//Habilitar la depuración de SMTP.
$mail->SMTPDebug = 3;                               
//Configurar PHPMailer para usar SMTP.
$mail->isSMTP();            
//Configurar el nombre de host SMTP                          
$mail->Host = "smtp.gmail.com";
//Pon esto en true si el host SMTP requiere autenticación para enviar el correo electrónico
$mail->SMTPAuth = true;                          
//Proporciona el nombre de usuario y la contraseña     
$mail->Username = "nombre@gmail.com";                 
$mail->Password = "super_contraseña_secreta";                           
//Si el SMTP requiere una encriptación TLS, entonces configúralo
$mail->SMTPSecure = "tls";                           
//Configurar el puerto TCP para conectarse a
$mail->Port = 587;                                   

$mail->From = "nombre@gmail.com";
$mail->FromName = "Nombre completo";

$mail->addAddress("nombre@ejemplo.com", "Nombre del destinatario");

$mail->isHTML(true);

$mail->Subject = "Texto del asunto";
$mail->Body = "<i>Cuerpo del correo en HTML</i>";
$mail->AltBody = "Esta es la versión de texto simple del contenido del correo electrónico";

try {
    $mail->send();
    echo "El mensaje ha sido enviado correctamente";
} catch (Exception $e) {
    echo "Mailer Error: " . $mail->ErrorInfo;
}

Gmail requiere la encriptación TLS sobre SMTP, por lo que la configuramos de acuerdo a ello. Antes de enviar a través de SMTP, debes averiguar el nombre de host, el número de puerto, el tipo de cifrado, si es necesario, y si se requiere autenticación, también necesitas el nombre de usuario y la contraseña. Ten en cuenta que tener la autenticación de dos factores habilitada en Gmail no te permitirá utilizar su SMTP con el nombre de usuario y la contraseña. En su lugar, se requerirá una configuración adicional.

Una gran ventaja de utilizar el SMTP remoto sobre el correo local es que si utilizas la función mail() de PHP para enviar correo electrónico con el dominio de la dirección “De” configurado a cualquier otra cosa que no sea el nombre de dominio local (nombre del servidor), entonces los filtros de ataque del servidor de correo del destinatario lo marcarán como spam. Por ejemplo, si se envía un correo electrónico desde un servidor con el nombre de host real ejemplo.com con la dirección del remitente nombre@gmail.com a name@yahoo.com, entonces los servidores de Yahoo lo marcarán como spam o mostrarán un mensaje al usuario para que no confíe en el correo electrónico porque el origen del correo es ejemplo.com y, sin embargo, se presenta como si proviniera de gmail.com. Aunque seas el dueño de nombre@gmail.com, no hay forma de que Yahoo lo descubra.

Recuperación de correos electrónicos usando POP3

PHPMailer también permite la verificación de POP antes de SMTP para enviar correos electrónicos. En otras palabras, puedes autenticarte usando POP y enviar correos electrónicos usando SMTP. Lamentablemente, PHPMailer no soporta la recuperación de correos electrónicos de servidores de correo usando el protocolo POP3. Está limitado a sólo enviar correos electrónicos.

Conclusión

Si eres un desarrollador de PHP, hay pocas posibilidades de evitar tener que enviar correos electrónicos en PHP programáticamente. Aunque puedes optar por servicios de terceros como Mandrill o SendGrid, a veces eso no es una opción, y menos aún por tu propia biblioteca de envío de correo electrónico. Ahí es donde PHPMailer y sus alternativas (Zend Mail, Swift Mailer, etc.) entran en juego.

Puedes conocer las APIs de esta biblioteca en el wiki del repositorio, o en la documentación oficial.

Si te ha gustado este artículo, te invito a leer cómo crear un formulario de contacto en HTML.

Los mejores scripts de reservas online en PHP

Los Mejores Scripts De Reservas Online En PHP

 

PHP es el motor de varios scripts de reservas online, por eso es uno de los lenguajes más utilizados en el mundo. Desde sitios web de nivel medio hasta aplicaciones de nivel empresarial, el lenguaje proporciona grandes funcionalidades de codificación para desarrollar todo tipo de aplicaciones avanzadas.

El script de reservas online es uno de los mejores ejemplos de cómo PHP impulsa diferentes industrias para facilitar a los usuarios y a las organizaciones por igual. El lenguaje facilita la rápida integración de varias bibliotecas y herramientas externas. Facilitando a los desarrolladores la construcción de cualquier tipo de aplicación de reservas online en PHP con las funcionalidades deseadas.

Construir un script de reservas online requiere de un profundo conocimiento técnico. Pero aún así no es tan difícil como parece, ¡gracias a los Scripts de Reservas de PHP ya preconstruidos!

Hay muchos scripts de reservas en PHP personalizados disponibles en el mercado, haciendo el trabajo de los desarrolladores más fácil que nunca. Usando estos scripts, cualquiera puede integrar un sistema de reservas online completamente funcional en tu aplicación en cuestión de minutos, y también puedes personalizarlo más tarde para satisfacer las necesidades del proyecto.

Los mejores scripts de reservas en PHP

Este blog ofrece una breve reseña de algunos de los scripts de reservas en PHP más utilizados online y sus grandes características incorporadas. Enumera todos los principales scripts PHP que permiten a los desarrolladores construir todo tipo de sistemas de reservas con PHP online con facilidad. Echemos un vistazo a ellos a continuación:

Hotel Booking System

sistema de reservas online para hoteles en PHP

Para facilitar al administrador, este sistema de reservas online en PHP proporciona grandes características incorporadas para gestionar las reservas de hotel diarias sin esfuerzo. Proporciona una poderosa plataforma de reservas online donde se puede gestionar fácilmente las reservas de habitaciones de los usuarios, promociones de hoteles/vales, etc. Está desarrollado con PHP y MySQL, lo que hace que sea muy fácil de integrar en los proyectos en sólo unos pocos pasos.

Ofrece un diseño fácil de usar en el móvil  y proporciona múltiples idiomas para atraer a una gran cantidad de clientes. Además, también proporciona una clara herramienta de llamada a la acción que puede utilizar con mensajes impactantes para aumentar sus conversiones y reservas

Restaurant Booking System

sistema de reservas online para restaurantes PHP

Este es un sistema de reservas online PHP muy útil, desarrollado para facilitar a los usuarios la reserva de mesas y salones en un restaurante. Es un sistema de reservas de autoservicio que permite a la gente reservar mesas fácilmente a través del sitio web, y pagar facturas anticipadas para la reserva si es necesario. Es muy fácil de usar y personalizable, por lo que a los desarrolladores les encanta usarlo en sus proyectos web.

Con el sistema de reserva de restaurantes, se puede personalizar el proceso de reserva, gestionar la disponibilidad de mesas, el menú de prepedido para la cena/almuerzo, etc. También ofrece una función de notificación por correo electrónico y SMS para tenerte al tanto de las próximas reservas y pedidos.

Car Booking System

sistema de reservas de coches online

Es un avanzado sistema de reservas de coches online hecho para simplificar los problemas diarios de los coches de alquiler. Utilizando el script, puedes integrar fácilmente un sistema de reservas de coches totalmente funcional en tu aplicación que ayuda a los usuarios a reservar, gestionar y especificar los inventarios de coches. El sistema de reservas de código abierto PHP te ayuda a notificar a tus usuarios sobre los coches disponibles para reservar y sus fechas de reserva. Ofrece una función de notificación push que permite a los responsables de los sitios web enviar notificaciones puntuales y personalizadas por SMS o correo electrónico a los clientes, informándoles de sus reservas y pagos pendientes.

También proporciona un diseño receptivo que facilita el acceso en todo tipo de dispositivos. Además, se ha desarrollado con una escritura ligera para facilitar su integración en todo tipo de aplicaciones.

Rental Property Booking Calendar

sistema de reserva de inmuebles en alquiler

Integra este sistema de reserva de inmuebles en alquiler en tu aplicación y experimenta la facilidad de reserva de inmuebles con un solo clic. Es un avanzado sistema de reservas especialmente desarrollado para los propietarios de inmuebles en alquiler. Para permitirles gestionar fácilmente las fechas, lugares y clientes en las temporadas de vacaciones que están de moda. Utilizando el sistema online, los usuarios pueden reservar sin esfuerzo apartamentos, habitaciones, etc. Con sólo pulsar un botón, y también pueden recibir notificaciones sobre las últimas ofertas y promociones.

El calendario de reservas permite a los clientes procesar sus pagos tanto online como offline y también permite a los administradores gestionar las reservas, generar facturas, cupones y más desde el panel de control. El sistema también proporciona vistas de calendario únicas con cuatro diseños diferentes (vistas de 1, 3, 6 y 12 meses) para mantener a los usuarios actualizados sobre las reservas disponibles.

Traveling Booking System

gestionar tu negocio de viajes de forma eficaz

Para gestionar tu negocio de viajes de forma eficaz, integra este sistema de gestión de agencias de viajes en tu aplicación y experimenta la forma rápida y sin esfuerzo de gestionar todas las reservas de los clientes. Es un sistema ágil y fácil de usar que permite a tus clientes comprobar los destinos y paquetes disponibles desde la facilidad de sus casas. Es una de las mejores maneras de atraer a más clientes en la temporada de vacaciones, ya que proporciona una forma avanzada y sin complicaciones de interactuar con tus clientes y ofrecerles ofertas para lugares de vacaciones de moda.

Este sistema está construido sobre CodeIgniter con fuertes protocolos de seguridad que te ayudan a proteger tu aplicación de inyecciones SQL, XSS, CSRF, y otros ataques maliciosos. Proporciona una interfaz simple que incluso una persona no técnica puede utilizar para sus proyectos de viaje.

Observaciones finales

Esto nos lleva al final de este artículo, en el que se destacan algunos de los scripts de reserva en PHP más utilizados en el mercado. Siendo desarrollador, es tu prioridad construir una aplicación que cumpla con todas las características requeridas del cliente(s), especialmente si es un sistema de reservas comercial en PHP. Usando estos scripts, no sólo puedes construir la aplicación requerida a tiempo, sino que también puedes reducir tu carga de trabajo para concentrarte en otras tareas más importantes como el diseño UX de tu web.

Si todavía tienes alguna pregunta o sugerencia con respecto a este artículo, no dudes en publicarla a continuación en la sección de comentarios.

10 Ejemplos de animaciones SVG para diseñadores web

10 Ejemplos de animaciones SVG para diseñadores web

 

Las mejores animaciones SVG para diseñadores web

Animaciones SVG para diseñadores web. SVG (Scalable Vector Graphics) tiene una serie de ventajas en comparación con otros formatos de imagen utilizados en la web. En primer lugar, los SVG son escalables, por lo que pueden adaptarse a cualquier tamaño de pantalla sin pérdida de calidad. Luego, los navegadores pueden cargarlos más rápido, usando menos recursos. Y, pueden ser editados con CSS como si fueran simples elementos de HTML. Además de ser utilizado para imágenes estáticas, también puede crear animaciones impresionantes con SVG. En este artículo, he recopilado 10 ejemplos de animaciones SVG para inspirarte a usarlas también en tus propios proyectos web.

1. Become a Traveler Today (Animaciones SVG)

See the Pen SVG Animation by jjperezaguinaga (@jjperezaguinaga) on CodePen.default

Esta impresionante demo de ‘Become a Traveler Today’ de José Aguinaga es actualmente la animación SVG más popular en CodePen, y esto no es una coincidencia, ya que se ha invertido mucho trabajo en este proyecto artístico. El autor creó los gráficos con Adobe Illustrator y los exportó con el plugin SVG Export. También utilizó el preprocesador Sass para crear la animación de fotogramas clave que mueve cuidadosamente el globo alrededor de la pantalla.

Descarga este SVG desde este enlace.

2. SVG Loader Animations

See the Pen SVG Loader Animation by Nikhil Krishnan (@nikhil8krishnan) on CodePen.default

Estos cargadores puros de SVG de Nikhil Krishnan son un bonito ejemplo de cómo crear animaciones SVG adecuadas para proyectos web en el mundo real. Al igual que la demostración ‘Become a Traveler Today’, estos cargadores también utilizan el preprocesador Sass. Sin embargo, aquí, la animación es un efecto SVG nativo añadido directamente al elemento animateTransform SVG dentro de la página HTML.

Descarga este SVG desde este enlace.

3. Project Deadline Is Coming

See the Pen #2 – Project Deadline – SVG animation with CSS3 by Jonathan Silva (@jonathansilva) on CodePen.default

Este genial proyecto de animación de Jonathan Silva es escalofriante y divertido a la vez. Demuestra muy bien que realmente se pueden utilizar las animaciones SVG para cualquier tipo de proyecto creativo. Con este pequeño pero inteligente recordatorio de plazos, puedes motivar a tu equipo a cumplir con los plazos, sin ser un fastidio. Aquí, el autor creó el efecto animado usando la regla @keyframes de CSS y un poco de jQuery para establecer el tiempo.

Descarga este SVG desde este enlace.

4. SVG Text Animation Using Stroke Offset Method

See the Pen SVG Text Animation Using Stroke Offset Method by Mack Ayache (@Ayachem) on CodePen.default

Además de las imágenes animadas, también puede utilizar animaciones SVG para crear efectos impresionantes de texto. Por ejemplo, echa un vistazo a esta bonita animación de texto de Mack Ayache. Él hace uso de simples formas SVG para crear las letras. A continuación, añade el movimiento por separado a cada letra utilizando los atributos SVG stroke-dashoffset y stroke-dasharray. Sin embargo, añade estos atributos al CSS en lugar de al elemento <svg> dentro del HTML. Él puede hacer eso porque los atributos de presentación de SVG pueden ser utilizados como propiedades CSS también.

Descarga este SVG desde este enlace.

5. Sketch Photo Animation

See the Pen Sketch Photo by Kristen Zirkler (@kristenzirkler) on CodePen.default

Esta animación de fotos exclusivas de Kristen Zirkler puede ser una gran incorporación a cualquier interfaz de usuario que muestre fotos de perfil. La autora creó el gráfico en Adobe Illustrator colocando dos capas una encima de la otra, una para su foto y otra para el camino que va alrededor de su cara. Luego, usó Sass para agregar la animación de fotogramas clave que modifica las reglas de desplazamiento-desplazamiento y opacidad.

Descarga este SVG desde este enlace.

6. Beating Heart Animation (Animaciones SVG)

See the Pen Beating Heart – CSS and SVG animation – low poly by morkett (@morkett) on CodePen.default

Si quieres ver un ejemplo de una animación SVG realmente sofisticada, echa un vistazo a la animación del corazón palpitante cuidadosamente elaborada por David Corkett. A pesar de que es un efecto complicado, no utiliza ningún tipo de JavaScript, sino que se basa únicamente en SVG y CSS. El corazón está hecho de múltiples polígonos a los que el autor añadió efectos de entrada y salida usando la regla @keyframes de CSS.

Descarga este SVG desde este enlace.

7. Pointless Rider (Animaciones SVG)

See the Pen Pointless Rider by Elliott Munoz (@elliottmunoz) on CodePen.default

Si alguna vez has querido crear un logo animado, aquí tienes un excelente ejemplo. La demo de Pointless Rider de Elliott Muñoz muestra que también puedes usar animaciones SVG para temas de marca. Por defecto, es un elegante logotipo en blanco y negro. El autor añadió el sutil efecto de animación con los elementos SVG animateTranform y animateMotion. Aquí, el CSS sólo alinea los elementos y establece los colores, pero es el SVG el que se encarga de todo el movimiento en la pantalla.

Descarga este SVG desde este enlace.

8. Sovog 404 Page (Animaciones SVG)

See the Pen Sovog 404 page by Marco Barría (@fixcl) on CodePen.default

Las páginas 404 son otra área en la que puedes poner en práctica con éxito una animación SVG. La demostración de la página Sovog 404 de Marco Barría se basa en SVG y Sass para hacer que el robot levante sus extremidades. Aunque las partes del robot son todas trayectorias SVG separadas, se mueven hacia arriba y hacia abajo con la ayuda de la transformación: rotate(); propiedad CSS, utilizada en cada trayectoria individualmente.

Descarga este SVG desde este enlace.

9. List Expand SVG Animation

See the Pen List Expand by Daniel (@daniel_wolf) on CodePen.default

Si quieres un ejemplo de una animación SVG que puedas usar fácilmente en proyectos cotidianos, aquí tienes una interesante demostración. Esta elegante animación de expansión de una lista de Daniel Wolf puede funcionar bien en cualquier aplicación móvil o web en la que se quiera mostrar información ampliada a los usuarios. De acuerdo con la descripción del autor, la clave para este efecto es “el tiempo en que los elementos se mueven en la transición”. Las animaciones se basan en CSS así como en un poco de jQuery para la funcionalidad de clic.

Descarga este SVG desde este enlace.

10. SVG Animation with Sliders

See the Pen SVG animation with sliders by Kenneth Aamås (@knekk) on CodePen.default

Esta bella animación SVG de Kenneth Aamås con controles deslizantes de demostración utiliza tanto Sass como JavaScript para lograr un efecto inteligente y controlado por el usuario. Puede cambiar las dimensiones de la imagen con la ayuda de tres sliders en la parte inferior de la página. Cada slider está atado a una parte diferente de la imagen que comienza a moverse cuando el usuario cambia la posición del slider. Para esta animación, el autor utiliza la propiedad CSS de transición en lugar de las animaciones de fotogramas clave, lo que resulta en un efecto más sutil.

Descarga este SVG desde este enlace.

Si te han gustado estos efectos en CSS te invito a que leas el artículo Efecto De Burbujas Con CSS Como 7UP. y recuerda compartir este artículo en tus redes sociales 🙂

Hosting Compartido vs VPS vs Servidor Dedicado

Hosting Compartido vs VPS vs Servidor Dedicado

 

Hosting Compartido vs VPS vs Hosting Dedicado. Cuando se está preparando para lanzar un nuevo proyecto de sitio web, la elección del hosting correcto puede ser una decisión difícil. Incluso para los desarrolladores experimentados, no es una tarea fácil dado el gran número de empresas de hosting disponibles que ofrecen diferentes tipos de servicios y características.

Sin embargo, antes de elegir un alojamiento web, es importante averiguar qué tipo de hosting necesitas.

En este artículo exploraremos los cuatro tipos principales de hosting: compartido, VPS y dedicado. Cada una de estas opciones tiene sus propias ventajas y desventajas, que es importante comprender para que puedas determinar qué solución se ajusta mejor a las necesidades de tu sitio web.

Hosting compartido

hosting compartido siteground

El hosting compartido es la opción más popular para la gente que está desarrollando su primer sitio web.

Cuando te registras para un hosting compartido, la compañía de hosting pondrá tu sitio web en un servidor junto con cientos, si no miles, de otros sitios web. Esto significa que cada cliente tiene que compartir el espacio y los recursos del servidor con todos los demás clientes, incluyendo el tiempo de CPU, la memoria y el espacio en disco.

Piensa en el hosting compartido como si vivieras de alquiler en un piso. Todos los vecinos comparten el mismo edificio, pero también comparten cosas como ascensores y escaleras, aparcamiento y recogida de basura. Como alquilado no tienes la opción de modificar o reformar nada importante del piso.

El alojamiento compartido es la opción más barata y económica en cuanto a hosting se refiere. Sin embargo, obtienes lo que pagas – en este caso, el hosting compartido viene con estrictas limitaciones.

Pros de un hosting compartido

Es económico. Algunas compañías de hosting cobran tan poco como 3,95 euros al mes.

Es para principiantes. Es fácil comenzar con el hosting compartido en comparación con otras opciones de hosting.

La seguridad, las actualizaciones y el mantenimiento del servidor no son administrados por ti.

Desventajas de un hosting compartido

Puede ser lento. Con tantos otros sitios web funcionando en el mismo servidor, los tiempos de carga de sus páginas pueden verse afectados.

La seguridad no está garantizada. No sabes quién más está usando el mismo servidor, por lo que si un sitio tiene una fuga de información o es pirateado, tu sitio podría verse afectado.

Falta de control y rendimiento del servidor. Si el servidor está saturado o si otro sitio web ocupa más de su cuota de recursos, el rendimiento puede disminuir.

Es difícil de escalar debido a la limitación del almacenamiento y del ancho de banda.

Precio de un hosting compartido

El hosting compartido puede tener un precio que oscila entre los 3,95 y los 9,95 euros al mes, dependiendo del hosting que elijas.

Se adapta mejor a

Sitios web pequeños con un mínimo de tráfico, como blogs y sitios personales.

Servidores virtuales privados (VPS)

vps banahosting

VPS es similar al hosting compartido en el sentido de que tu sitio web comparte un servidor con otros sitios, pero hay menos sitios que comparten espacio y recursos y el servidor se divide en diferentes entornos de servidores virtualizados. A diferencia del hosting compartido, el VPS suele proporcionar recursos básicos garantizados, así como recursos adicionales disponibles en un momento dado en caso de que tu sitio experimente un pico de tráfico.

Piensa en VPS como si fueras el propietario de un piso. Mientras compartas el mismo edificio con otros propietarios, eres responsable del mantenimiento de tu propiedad y de cualquier reparación que deba realizarse dentro de tu apartamento. Además, hay menos propietarios y tienes tu propio espacio de parking asignado.

Pros de un VPS

Es más asequible que un servidor dedicado y pagas por lo que necesitas.

Más seguro. Para segmentar el servidor adecuadamente, el host instala una capa de software que le dedica parte del servidor, que hace que esté completamente separado de otros clientes.

Es rápido. Se le asignan más recursos en comparación con el hosting compartido.

Acceso al servidor raíz. Puedes realizar personalizaciones según tus necesidades y tienes un mayor control sobre tu entorno de hosting.

Es escalable. Un VPS puede crecer con tu sitio a medida que las necesidades de tu servidor aumentan con el tiempo.

Contras de un VPS

Algunas compañías de servidores sobrevenden sus servidores, con la esperanza de que cada sitio que actualmente utiliza un servidor en particular no tenga un día con más tráfico.

Es más caro que el hosting compartido.

Si elige un VPS no administrado, puede ser difícil de configurar, tomando más tiempo para que tu sitio web funcione.

Precio de un VPS

El precio de un VPS puede variar entre 20 euros y 100 euros al mes, dependiendo del hosting que elijas.

Se adapta mejor a

Si el hosting compartido es demasiado básico para tus necesidades y quieres recursos dedicados y más control sobre tu entorno de hosting, entonces un VPS puede ser el adecuado para ti.

Servidor dedicado

Servidor dedicado raiola

Un servidor dedicado es exactamente como suena: Tu sitio web se almacena en un único servidor físico dedicado a tu uso personal. No compartes el servidor con nadie, tienes todos los derechos sobre los recursos del servidor y puedes configurar los entornos de hosting según tus especificaciones exactas.

Este tipo de hosting es generalmente más caro, pero a cambio obtienes un rendimiento muy alto y un nivel de seguridad más alto comparado con otras formas de hosting.

Piensa en el servidor dedicado como si fueras dueño de tu propio chalet. Eres el único residente. Puedes aparcar tu coche en tu propia entrada y pintar tu casa del color que quieras. Pero tú eres el responsable último del mantenimiento de tu propiedad y depende de ti instalar una alarma de seguridad para ahuyentar a los ladrones.

Pros del servidor dedicado

Tienes un servidor dedicado todo para ti.

Tienes acceso completo a todas las configuraciones y puedes personalizar completamente el servidor para que se adapte a las necesidades de tu sitio web.

Es rápido. Obtienes el 100% de acceso a los recursos del servidor.

Gran rendimiento del servidor ya que puedes adaptarlo para que cumpla con las especificaciones exactas que necesitas para tu sitio web.

Es seguro. Como eres el único que utiliza el servidor, no tienes que preocuparte por el efecto de “mal vecino” que es común en el hosting compartido.

Soporte 24/7. Ya que estás pagando mucho dinero por tu cuenta, las compañías de hosting web harán que ofrecerte el mejor soporte sea una prioridad.

Contras del servidor dedicado

Es muy caro.

Necesitas personal técnico cualificado para mantener y optimizar el servidor. Eres responsable de tu servidor, así que si algo sale mal, depende de ti arreglarlo.

Precio del servidor dedicado

El servidor dedicado puede tener un precio que oscila entre los 80 y los 500 euros al mes, dependiendo de tus necesidades. El precio se basa normalmente en las especificaciones del servidor y los servicios adicionales.

Se adapta mejor a

Dado que el servidor dedicado es bastante caro, es el más adecuado para grandes empresas y sitios web de alto tráfico que reciben más de 500.000 visitantes al mes y cuentan con el personal técnico necesario para mantener el servidor. El servidor dedicado es también una opción ideal si tienes un negocio que requiere un alto nivel de seguridad.

Conclusión sobre Hosting Compartido vs VPS vs Servidor Dedicado

Para finalizar este artículo sobre Hosting Compartido vs VPS vs Servidor Dedicado, decirte que, si eres un principiante en el tema del desarrollo web, lo mejor que puedes hacer es contratar un hosting compartido, en cambio si por el contrario ya eres un desarrollador web freelancer, lo mejor sería que al menos tengas un VPS y para mayor calidad contrates un servidor dedicado.

Mi opinión personal, uno de los mejores hosting que puedes contratar es BanaHosting, puedes contratarlo desde este enlace, es un enlace de afiliado, si lo contratas desde ese enlace ayudará a que pueda seguir creando contenidos gratuitos y sobre todo decirte que solo recomiendo lo mejor y lo que yo utilizo para mis webs 🙂

Mejores monitores USB-C para diseño, programación y juego

Mejores monitores USB-C para diseño, programación y juego

 

Los mejores monitores USB-C tienen múltiples usos, no sólo facilitan la conexión de su portátil USB-C, lo que significa que obtienes una pantalla adicional, sino que también cargan el portátil al mismo tiempo.

Aunque la facilidad de carga no es exactamente el punto principal de los monitores USB-C, existe una creciente necesidad de compatibilidad USB-C. Con los últimos modelos MacBook Pro y MacBook Air haciendo uso de USB-C, y muchos dispositivos Windows más recientes que también utilizan el puerto, nunca ha habido un mejor momento para conseguir uno de los mejores monitores USB-C del mercado.

Pero, ¿qué monitor con puerto USB-C debes comprar? Hay muchas opciones excelentes, pero hemos hecho el trabajo duro por ti y las hemos reunido en esta guía. Ya sea que quieras utilizar el mejor monitor USB-C de 4K para tu MacBook, o un monitor USB-C de un reproductor importante como Dell o LG, o que simplemente quieras la opción más asequible que puedas conseguir, nosotros te cubrimos….

Los mejores monitores USB-C

Hemos encontrado el mejor monitor USB-C y lo enumeramos a continuación.

01. LG 27UD88-W – Monitor USB-C de 27 pulgadas y 4K

LG 27UD88-W mejores monitores USB-C

Cuando se trata de elegir el mejor monitor USB-C de 4K del mercado, el LG 27UD88-W de 27 pulgadas se lleva la mejor parte. Está diseñado para juegos, lo que significa que también es ideal para los diseñadores gráficos y programadores web, y es el hermano menor del monitor USB-C de 5K que ocupa el puesto 5 en esta lista, ofreciendo un brillante equilibrio de características y funcionalidad a un precio mucho más asequible.

Obtendrás una resolución de 4K y un procesamiento antidesgarre FreeSync, además de tres ajustes preestablecidos para juegos, dos ajustes preestablecidos personalizados y dos ajustes preestablecidos de calibración. Y como con todas las opciones de USB-C aquí, alimentará tu portátil mientras actúa como una pantalla.

Tamaño de pantalla: 27 pulgadas | Resolución: 3840 x 2160 | Relación de aspecto: 16:9 | Entradas HDMI: 2 | Puertos de visualización: 1 | Fecha de lanzamiento: 2018

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

02. Dell U3818DW UltraSharp Monitor USB-C curvado de 38 pulgadas

Dell U3818DW UltraSharp

Si dispones de un presupuesto más amplio (y un escritorio) con el que jugar, te recomendamos el gran y hermoso monitor USB-C Dell U3818DW. La pantalla curva de 38 pulgadas InfinityEdge es impresionante y le da una ridícula cantidad de propiedades de pantalla, así que si eres propenso a trabajar con muchas ventanas abiertas, vale la pena considerar esta opción.

Está diseñado para el trabajo profesional y está dirigido especialmente a los profesionales del diseño gráfico y diseño web, o a cualquiera que necesite la mayor precisión de color posible, y también es ideal para los juegos. El contraste podría ser un poco mejor, pero la precisión del color es excelente y las imágenes son nítidas. Lo mejor de todo es que tienes una garantía de tres años. ¿Tiene aún más dinero? Prueba el Asus ProArt PA32UC, en el número 7 de esta lista.

Tamaño de pantalla: 38 pulgadas | Resolución: 3840 x 1600 | Relación de aspecto: 21:9 | Entradas HDMI: 2 | Puertos de visualización: 1 | Fecha de lanzamiento: 2017

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

03. Acer H277HU Monitor USB-C de 27 pulgadas

Acer H277HU Monitor USB-C

El Acer H277HU es un monitor USB-C de presupuesto más asequible para cualquiera que tenga menos dinero para gastar. No se trata de un monitor USB-C de 4K, y te faltan las especificaciones de gama alta para la edición de vídeo, pero es una excelente opción si necesitas una pantalla para diseñar, programar o jugar, y viene con un puerto HDMI y un DisplayPort también. ¿Buscas el monitor USB-C más económico para jugar? Echa un vistazo a la Acer XR382CQQK de 38 pulgadas en el número 09.

Tamaño de pantalla: 27 pulgadas | Resolución: 2560 x 1440 | Relación de aspecto: 16:9 | Entradas HDMI: 1| Puertos de visualización: 1 | Fecha de lanzamiento: 2016

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

04. HP Envy Monitor USB-C  de 27 pulgadas y 4K

HP Envy mejores Monitores USB-C

Otra opción más asequible es el HP Envy 27, un impresionante monitor USB-C de 4K con una estética elegante, gracias a sus biseles microfinos. Ofrece colores ricos y excelentes detalles de imagen, aunque la precisión de color podría ser un poco mejor directamente de la caja. Pero si estás buscando un monitor UHD de 4K a un precio razonable con amplios ángulos de visión – y eso se ve muy bien en tu escritorio – vale la pena echarle un vistazo.

Tamaño de pantalla: 27 pulgadas | Resolución: 3840 x 2160 | Relación de aspecto: 16:9 | Entradas HDMI: 2 | Puertos de visualización: 1 | Fecha de lanzamiento: 2017

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

05. LG 27MD5KA Monitor USB-C de 27 pulgadas UltraFine 5K

LG 27MD5KA mejores Monitores USB-C

El monitor USB-C LG UltraFine 5K se sitúa en el mercado de monitores de gama alta. Presionado por Apple como su compañero preferido del MacBook Pro, este magnífico monitor cuenta con una increíble pantalla de 14,7 millones de píxeles de 27 pulgadas. Las fotos y los vídeos son increíblemente ricos en detalles, vibrantes y realistas, con 218 píxeles por pulgada y una frecuencia de actualización de 60 Hz.

Está dirigido a usuarios de Mac, con cuatro puertos Thunderbolt 3/USB Type-C en la parte posterior, y absolutamente nada más, excepto un enchufe para el cable de alimentación. Si no te importa la falta de otros puertos, esta es una opción fabulosa para fotógrafos, diseñadores y videógrafos.

Tamaño de pantalla: 27 pulgadas | Resolución: 5120 x 2880 | Relación de aspecto: 16:9 | Entradas HDMI: 0 | Puertos de visualización: 0 | Fecha de lanzamiento: 2017

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

06. BenQ PV3200PT mejores monitores USB-C

BenQ PV3200PT monitor USB-C

Diseñado para editores de vídeo profesionales, animadores, cineastas, modeladores 3D y diseñadores CAD, el BenQ PV3200PT ofrece colores ricos y muy precisos y una fantástica reproducción en escala de grises. Cubre el 100 por ciento de la gama de colores Rec.709 (HDTV), así como el 100 por ciento del espacio de color sRGB, e incluso te recordará cuándo está previsto que se calibre.

El cambio al modo vertical es rápido y sencillo gracias a un mecanismo de rotación con resorte; la única característica que falta son los ajustes de luz azul. Si trabajas con vídeo de alta definición en particular, este es el mejor.

Tamaño de pantalla: 32 pulgadas | Resolución: 3840 x 2160 | Relación de aspecto: 16:9 | Entradas HDMI: 1| Puertos de visualización: 2 | Fecha de lanzamiento: 2016

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

07. Asus ProArt PA32UC mejores monitores USB-C

Asus ProArt PA32UC mejores monitores USB-C

El Asus ProArt PA32UC de alta calidad es el monitor USB-C más caro de esta lista – y está en una liga diferente. Dirigido a profesionales creativos, cuenta con una resolución de 4K con capacidades de imágenes HDR, y viene en un sofisticado paquete equipado con USB-C y Thunderbolt 3 con casi todas las funciones que un creativo podría necesitar para el trabajo con SDR y HDR. Obtienes una cobertura de espacio de color 100% sRGB, 99,5% Adobe RGB y 95% DCI-P3; además de funciones de calibración profesional y una herramienta de calibración de hardware en la caja. Con la PA32UC se puede realizar un trabajo de precisión sRGB, un trabajo de precisión de amplio espectro y un trabajo HDR.

Sin embargo, no se trata de un monitor USB-C destinado a los jugadores; la frecuencia de actualización es decepcionante; en su lugar, recomendaríamos el Acer XR382CQK en el número 08 de esta lista. Pero con un fuerte seguimiento de rayos gamma y consistencia de color, pero si eres un creativo profesional que trabaja en cualquier cosa, desde películas hasta gráficos, esta es una pantalla media que reproduce el contenido exactamente como se supone que debe verse.

Tamaño de pantalla: 32 pulgadas | Resolución: 3840 x 2160 | Relación de aspecto: 16:9 | Entradas HDMI: 4 | Puertos de visualización: 1 | Fecha de lanzamiento: 2018

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

08. Acer XR382CQK Monitor USB-C curvado de 38 pulgadas

Acer XR382CQK mejores monitores USB-C

Este enorme monitor USB-C de 38 pulgadas, el Acer XR382CQK, ofrece la tecnología FreeSync de AMD y 75Hz, además de un soporte ergonómico con altura, inclinación y giro, y una calidad de construcción superior. El radio de la curva es de 2300 mm, lo que ofrece un efecto envolvente sin distorsión de la imagen. La reproducción del color es fantástica, mientras que los niveles de negro son impresionantes. Y en cuanto a los videojuegos – bueno, es maravilloso. Este es uno de los mejores monitores USB-C para juegos que puedes conseguir.

Tamaño de pantalla: 37,5 pulgadas | Resolución: 3840 x 1600 | Relación de aspecto: 21:9 | Entradas HDMI: 2 | Puertos de visualización: 1 | Fecha de lanzamiento: 2018

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

09. LG 34UM69G-B Monitor USB-C de 34 pulgadas UltraWide

LG 34UM69G-B Monitor USB-C

Con una reducción del desenfoque por movimiento de 1ms, tecnología FreeSync y sincronización de acción dinámica, el LG 34UM69G-B de 34 pulgadas está repleto de funciones fáciles de usar, lo que lo convierte en uno de los mejores monitores USB-C de bajo presupuesto para juegos que puedes conseguir ahora mismo. Alojado en una carcasa negra sin bisel, hay tres modos de juego personalizables: dos modos de disparo en primera persona y un modo RTS preestablecido. Mientras tanto, la precisión de color lista para usar es buena, con un fuerte rendimiento en escala de grises. Este es un monitor USB-C de precio excepcional.

Tamaño de pantalla: 34 pulgadas | Resolución: 2560 x 1080 | Entradas HDMI: 1| Puertos de visualización: 1 | Fecha de lanzamiento: 2018

Comprar en España comprar en amazon

Comprar en EEUU  comprar en amazon

Si te ha gustado esta lista de los mejores monitores USB-C, te recomiendo le eches un vistazo a mi lista de Los Mejores Portátiles Para Programación En 2019.

Háblame ;)
¿Necesitas ayuda?
Hola! Necesitas ayuda? hablemos por WhatsApp :)