¿Qué es Buffalo?
¿Qué es la herramienta GoBuffalo framework?
Un ecosistema para el desarrollo web en Go. Diseñado para facilitar tu vida.
En General
Introducción
Si bien Buffalo puede considerarse como un marco, es principalmente un ecosistema de bibliotecas Go y Javascript seleccionadas para encajar juntas. La mayoría de estos componentes se pueden cambiar por otros, pero solo brindaremos soporte para esta combinación predeterminada.
Ahora, haremos un recorrido por los componentes predeterminados que tienes disponibles con tu aplicación Buffalo.
Bibliotecas de back-end
Buffalo :
Buffalo es el “pegamento” entre todos los componentes proporcionados. Envuelve las bibliotecas y administra el flujo de trabajo.
gorilla/mux es uno de los enrutadores más utilizados en Go. Si bien algunos enrutadores son más rápidos (como httprouter), gorilla/mux es el que brinda la mayor cantidad de funciones y es lo suficientemente rápido.
Pop :
pop es el ORM predeterminado para Buffalo. Proporciona la caja de herramientas soda
para ayudarte con tus necesidades de base de datos y es compatible con varias bases de datos, como PostgreSQL, MySQL y SQLite.
Plush :
plush es el motor de plantillas predeterminado de Buffalo. Su sintaxis es cercana a las plantillas ERB (en Ruby).
Bibliotecas de front-end
bootstrap :
bootstrap es una de las bibliotecas de herramientas frontend más famosas. Ayuda a crear interfaces responsivas utilizando componentes comunes como tablas, carruseles o diseños de cuadrícula.
jQuery es una rica biblioteca que tiene como objetivo simplificar la manipulación DOM y las consultas AJAX. Si bien ahora se usa menos, muchos proyectos todavía lo tienen como complemento para ayudar a admitir todos los navegadores.
webpack :
webpack es un conocido paquete de activos de Javascript. Se encargará de sus archivos Javascript, CSS, imágenes y activos estáticos.
webpack está configurado de forma predeterminada para aplicar hash y minificar sus activos.
Características Principales
Background Workers
Si está familiarizado con las tareas Rake de Ruby, se sentirá como en casa usando Grift. ¡Generar datos para una base de datos, ejecutar un trabajo de limpieza ahora es más fácil!
Buffalo Toolkit
Escribir un módulo de aplicación web siempre comienza con las mismas tareas. Buffalo le proporciona una caja de herramientas simple, el comando buffalo, para generar muchas partes de su aplicación y ejecutar tareas habituales.
Frontend Pipeline
Utilice la configuración generada por Webpack para crear los activos de interfaz de su aplicación. Buffalo le permite desarrollar ambas capas (Frontend y Backend) desde el primer momento.
Hot Code Reload
Code, save, refresh. Use the buffalo dev command to rebuild your app, from backend to frontend, and just see the changes live!
ORM
La integración profunda con Pop proporciona una forma sencilla de manejar la base de datos y las tareas relacionadas comunes. Pop es compatible con MySQL/MariaDB, PostgreSQL, CockroachDB y SQLite.
Routing
Buffalo utiliza el kit de herramientas Gorilla para gestionar rutas, sesiones, cookies… Puede haber enrutadores más rápidos, ¡pero este es definitivamente el más poderoso!
Templating
Escriba sus plantillas con Plush, utilizando una sintaxis similar a la de ERB. Amplíe sus funciones utilizando helpers personalizados. Si no le gusta, puedes usar html/template
o incluso traer el tuyo propio.
Testing
Dado que las pruebas pueden ser una tarea aburrida, Buffalo lo ayuda a definir conjuntos de pruebas. Los generadores de acciones, recursos y modelos crean plantillas de prueba para el código que acaba de generar.
¿Te gustaría comenzar a usar Buffalo?
Como Empezar; Empecemos por instalar Buffalo.
Como Instalar Buffalo:
Buffalo proporciona dos componentes principales:
La herramienta buffalo
, y el framework buffalo
:
Uno es una herramienta potente para ayudarle a desarrollar en una manera rápida y eficiente y el otro es una colección de piezas para construir su aplicación.
Node version 8
o superior y ya sea Yarn o npm para la Asset Pipeline construido sobre Webpack.
Requisitos de backend
SQLite 3: GCC, o un compilador de c equivalente para mattn/go-sqlite3.
GNU / Linux
$ wget https://github.com/gobuffalo/cli/releases/download/v0.18.8/buffalo_0.18.8_Linux_x86_64.tar.gz
$ tar -xvzf buffalo_0.18.8_Linux_x86_64.tar.gz
$ sudo mv buffalo /usr/local/bin/buffalo
MacOS
$ curl -OL https://github.com/gobuffalo/cli/releases/download/v0.18./buffalo_0.18.8_Darwin_x86_64.tar.gz
$ tar -xvzf buffalo_0.18.8_Darwin_x86_64.tar.gz
$ sudo mv buffalo /usr/local/bin/buffalo
# or if you have ~/bin folder setup in the environment PATH variable
$ mv buffalo ~/bin/buffalo
Scoop (Windows)
PS C:\> scoop install buffalo
Verifica tu instalación
Tu puedes comprobar si tu instalacion esta funcionando ejecutando buffalo
en la terminal:
$ buffalo
Build Buffalo applications with ease
Usage: buffalo [command]
Available Commands:
build Build the application binary, including bundling of webpack assets
completion Generate the autocompletion script for the specified shell
db [PLUGIN] [DEPRECATED] please use `buffalo pop` instead.
destroy Destroy generated components
dev Run the Buffalo app in ‘development’ mode
fix Attempt to fix a Buffalo applications API to match version v0.18.6
generate Generate application components
help Help about any command
info Print diagnostic information (useful for debugging)
new Creates a new Buffalo application
plugins tools for working with buffalo plugins
pop [PLUGIN] A tasty treat for all your database needs
routes Print all defined routes
setup Setup a newly created, or recently checked out application.
task Run grift tasks
test Run the tests for the Buffalo app. Use –force-migrations to skip schema load.
version Print the version information
Flags: -h, –help help for buffalo
Use «buffalo [command] –help» for more information about a command.
Bueno si todo funciona
El siguiente paso
Seria crear tu primer proyecto
Generando un Nuevo Proyecto
Ahora que ya tienes instalado el framework Buffalo, en esta sección, tu vas a aprender como crear Una nueva Aplicación web usando el comando buffalo
.
El objetivo de Buffalo es que la construcción de una aplicación web en Go sea lo mas rapido y sencilla posible. Que podria ser mas sencillo que un generador de un nueva aplicación?
Comienza por ir a tu carpeta favorita donde quieras crear tu proyecto, luego:
Esto generará aplicacion de Buffalo llamada Coke, lista para funcionar:
Crear una App Personalizada#
La configuración por defecto esta perfecta, pero tal vez eso no se adapte a ti. Buffalo provee algunas opciones como banderas para el comando new
Tu puede obtener las banderas disponibles usando el comando help
Tu puede elegir generar una aplicacion API, saltando el material frontend. ¿Tal vez tu quieres configurar un CI para construir tu aplicación en tu sistema favorito? ¿O incluso usar tu propio paquete para manejar la base de datos? ¡Solo usa la bandera!
Sobreescribir Configuración por Defecto#
Por defecto el comando buffalo new
va a mirar el archivo de configuración $HOME/.buffalo.yml
y si existe tratará de cargarlo. Tu puedes sobreescribir las banderas encontrandolas en ese archivo pasando lo correcto en la linea de comandos o utilizar la bandera --config
para especificar un archivo YAML diferente. Si la bandera --skip-config
es usado. El comando buffalo new
no va a cargar ningun archivo de configuración y solo va a usar las banderas pasadas por la linea de comandos.
Un ejemplo de .buffalo.yml
puede ser:
Siguiente Paso#
Estructura de Directorio
Buffalo te proporciona a ti una estructura de directorio minimo para trabajar en tu proyecto. Esta estructura mantiene el proyecto limpio, y permite el generador trabajar. No trates de reinventar la rueda, y deja que buffalo te compre mas tiempo para hacer la parte interesante de tu app! 🙂
Ahora que tu tienes un proyecto minimo, vamos a su contenido:
Directorio Raiz#
Aqui esta la estructura de un Proyecto Buffalo:
Actions#
Este directorio maneja la parte de Controlador del patron MVC. Eso contiene los controladores para tus URLs, un plus:
- El
app.go
es el archivo para configurar tu app y rutas.- El
render.go
es el archivo para configurar el motor de las plantillas.
Assets#
Este directorio es opcional. Si tu no necesitas usar una configuración para el frontend (Solo API, por ejemplo), puedes quitarlo sin problemas.
Este directorio contiene raw assets el cual sera compilado/comprimido y puestos en el directorio public
.
Cmd#
Esta carpeta contiene el main.go
es el archivo el cual arranca tu app y la inicia.
Grifts#
Este directorio es opcional. Si tu no necesitas usarlo tasks, puedes quitarlo sin problemas.
Este directorio contiene el tasks impulsado por grift.
Locales#
Este directorio es opcional. Si tu usas un solo lenguaje, tu puedes remover esto y el modulo i18n desde el archivo app.go
en el directorio actions
Este directorio is usado por el sistema de i18n. Eso va a traer la traduccion de cadenas desde aqui.
Models#
Si tu usas pop/soda con el generador integrado, eso generará los archivos del modelo aqui.
Este directorio es opcional. Si tu no necesitas usar una base de datos, puedes removerlo.
Este directorio se encarga de la parte del Model de el patrón MVC. Eso contiene el archivo models.go
para inicializar la conexion con la fuente de datos y el modelo para reflejar objetos de la base de datos.
Public#
El contenido de este directorio se genera automaticamente.
Este directorio contiene asset publico (Compilado/Comprimido). Si tu usas webpack, los assets se van a colocar en este directorio.
Templates#
Este directorio es opcional. Si tu no necesitas usar una configuración de frontend (Solo API, por ejemplo), puedes quitarlo sin problemas.
Este directorio maneja la Vista de el patron MVC. Eso contiene los templates de el proyecto, usado para renderizar las vistas.
Tmp#
El contenido de este directorio es autogenerado.
Este directorio es usado por el comando buffalo dev
para reconstruir tu proyecto con cada cambio. Los archivos temporales de Buffalo se van a colocar aqui.
Database.yml#
Este archivo es opcional. Si tu no necesitas una base de datos, o si tu quieres manejar la base de datos sin pop/soda puedes removerlo.
Este archivo contiene la configuración de la base de datos para pop/soda.
Siguiente Paso#
Configuración#
En este capitulo, tu vas a aprender como manejar la configuración de tu proyecto con Buffalo.
Las variables de entorno son un buen camino para separar entornos con diferentes valores o secretos, de la base del código de tu aplicación. (como describe en la aplicación de los Doce factores). Eso puede ayudar a definir el comportamiento quese basa en el contexto de la aplicación (Como requerir SSL en producción) y aislas secretos de tu código. De esta manera, todos los desarroladores no tienen que conocer las llaves de producción para servicios sensibles como la API de un Banco y pueden utilizar las llaves de la API en sandbox.
Variables de entorno Permitidas#
Las siguientes variables son usadas por Buffalo:
Variable | Por defecto | Uso |
---|---|---|
GO_ENV | development | El entorno (dev, qa, production etc.) que Buffalo esté corriendo. |
GO_BIN | go | El compilador de Go para usar. |
BUFFALO_PLUGIN_PATH | $PATH | Donde Buffalo va a buscar sus plugins. |
BUFFALO_PLUGIN_TIMEOUT | 1s | Cuanto tiempo espera Buffalo para que un plugin Responda |
ADDR | 127.0.0.1 or 0.0.0.0 | La direccion que se debe usar en el servidor. |
PORT | 3000 | El puerto que se debe configurar para el server. |
HOST | http://127.0.0.1:$PORT | La “URL” de la aplicación (i.e. Lo que escriben los usuarios). |
SESSION_SECRET | "" | Utilizada para asegurar las sesiones. |
Configuración Personalizada#
Tu puedes proporcionar tus propias variables y recuperarlas desde su aplicación. El paquete envy hace esto facil!
Soporte para archivos .env#
Buffalo entrega soporte con .env
(desde buffalo >= 0.10.3), lo que significa que buffalo cargará los archivos .env
dentro de la variable del entorno una vez que la aplicacion esté corriendo. Para hacer eso Buffalo usa envy.Load
el cual buscará el archivo .env
en la raiz de tu aplicación.
Si tu no estas familiarizado como luce un archivo .env
, aqui tienes un ejemplo:
Las aplicaciones generadas (con buffalo >= 0.10.3) van a crear un archivo .env
por defecto en la raiz de su aplicación. Este archivo va será mirado por Buffalo para los cambios pero va a ser ignorado por git (Añadido en el .gitignore
). Esto es una buena manera de evitar que los desarrolladores suban las credenciales por error.
Siguiente Paso#
Integración de Herramientas#
Tu puedes trabajar con Buffalo usando tu herramienta preferida. Aqui tienes una lista de herramientas para terminales, IDES, y otras herramientas.
Auto Completado zsh#
Si tu usas la terminal con zsh
, puedes usar este plugin creado por @1995parham: https://github.com/1995parham/buffalo.zsh
Auto Completado bash#
Si tu usas la terminal con bash
, puedes tratar de usar este script, creado por @cippaciong, el cual provee el auto completado basico: https://github.com/cippaciong/buffalo_bash_completion
Extension de Go para Visual Studio Code#
Si tu usas Visual Studio Code
como tu editor de Código, puedes usar esta extension: Go.
Si no puedes esperar a que termine de escribir esta guía, puedes visitar mientras tanto la página original.
¿Te has quedado con alguna duda o pregunta? Entonces te pido que dejes un comentario. Da igual que sea o una duda o un simple gracias, pero me alegraré mucho de leerlo y responderlo.
¡Cuéntame en los comentarios!
Enlaces internos:
Últimas Noticias Digitales
Blog
Tienda
Sí, te ha Gustado.
¡Cuéntame en los comentarios!
Comentarios
Entrada
Muy buena entrada.