Flicker.js - Creemos un framework web latino para node,js

Iniciado por Dext3rCode, 11 Mayo 2016, 00:51 AM

0 Miembros y 2 Visitantes están viendo este tema.

Dext3rCode

Que tal gente!, en esta ocasion les escribo para presentarle mi nuevo proyecto, Flicker.js.

Flicker.js en un framework web para node.js que usa la sintaxis de ES6 por ende es compatible con una version >=6.0.0 de node. Mi idea al crear este framework comenzo como una tarea personal para crear un framework desde cero en node, ya que usaba uno pero tenia ganas de ver como es todo por dentro (mi curiosidad como programador) y decidi empezarlo, luego me gusto como iba y decidi lanzarlo en NPM para ver que tal me iba. Actualmente Flicker.js esta en su version 1.0.1 y cuenta con un paquete como generador de aplicaciones (flicker-easy).

Para que vean algunas funcionalidades de Flicker.js

Código (javascript) [Seleccionar]


const flicker = require('flickerjs'); /* requerir el modulo */
var app = flicker(); /* iniciar la app */
app.to({ url: '/'}, /* la funcion app.to recibe dos parametros, un objecto de configuracion que contiene el metodo y la url a manejar (ambos opcionales) y el callback que ejecutara al manejar la peticion*/
   (req, res) => { // recibe los parametros peticion y respuesta
       res.send('Hello Flicker.js'); /* envia al usuario el mensaje "Hello Flicker.js" con statusCode 200 por defecto*/
})
   .listen(3000); // a la escucha en el puerto 3000




Tambien puedes anidar routers, un ejemplo de una pequeña REST API:

Código (javascript) [Seleccionar]


const flicker = require('flickerjs');
const bodyParser = require('body-parser');
const compress = require('compression');

let app = flicker();

app.to(compress())
   .to(bodyParser.json())
   .to(bodyParser.urlencoded({ extended: true }));

let api = app.Router();

app.locals.todos = [
   {
       description: "Lorem 0"
   },
   {
       description: "Lorem 1"
   },
   {
       description: "Lorem 2"
   },
   {
       description: "Lorem 3"
   },
   {
       description: "Lorem 4"
   },
   {
       description: "Lorem 5"
   }
];

api.to({ url:'/todos', method: 'GET'},
   (req,res,next) => { /* retorna todos los todos  */
       res.json(app.locals.todos);
})
   .to({ url: '/todos/:todo', method: 'GET'},
       (req,res,next) => { /*  retorna un todo */
           if(req.params.todo >= app.locals.todos.length){
               next();
           }
           else{
               res.json(app.locals.todos[req.params.todo]);
           }
   })
   .to({ url: '/todos', method: 'POST'},
       (req,res,next) => { /*  insertar un nuevo todo */
           app.locals.todos.push(req.body.todo);
           res.json(app.locals.todos)
   })
   .to({ url:'/todos/:todo', method: 'DELETE'},
           (req,res,next) => { /*  borrar un todo */
           if(req.params.todo >= app.locals.todos.length){
               next();
           }
           else{
               app.locals.todos.splice(req.params.todo,1);
               res.json(app.locals.todos);
           }
   })
   .to({ url: '/todos/:todo', method: 'PUT'},
           (req,res,next) => { /*  editar un todo */
           if(req.params.todo >= app.locals.todos.length){
               next();
           }
           else{
               app.locals.todos[req.params.todo] = req.body.todo;
               res.json(app.locals.todos)
           }
   })

app.to({ url: '/api'},api) // anidamos el router (como una sub-app)

   .to({ url: '/'}, (req,res,next) => {
       res.redirect("/api/todos");
   })
   .to((req,res,next) => {
       res.json({}); // retorna un json vacio en caso de error
   })
   .listen(3000); /* listen */




Pueden ver el repositorio en github -> https://github.com/FlickerStudio/flickerjs

Mi propuesta es que esperaria con ansias que alguno de ustedes se anime a seguir el proyecto juntos, y compartir ideas para mejorarlo, ademas estoy cambiando muchas funcionalidades y agregando otras para que la logica sea muy diferente a la de Express, aunque ambos frameworks estan basados en Connect, pero lo que quiero es que sin importar su experiencia en nodejs, sus ideas y Pull request seran bien recibidos, en resumen, el repositorio esta a su disposicion.

Ademas, si se animas desearia que la comunidad del proyecto sea un poco grande y trasladar el proyecto completamente al español y que la documentacion, codigo y desarrollo sea por y para la comunidad hispana, desearia (aunque manejo un poco el ingles) que hubiera proyectos como estos que fueran completamente para la comunidad hispana, con su documentacion en nuestro idioma para aquellos que empiezan y no dominan el ingles.


Bueno esto es todo (un poco largo la verdad) lo que queria contarles!

*Cualquier sugerencia, opinion o critica sera bien recibida en los issues del repositorio, los Espero por ahi!!!, Happy Coding!.


engel lex

si estás creando un framework latino por qué usas un nombre en inglés y que a demás es bien asociado con un servicio estadounidense hijo de yahoo? :s

no entiendo el valor de "latino" aquí
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Dext3rCode

Cita de: engel lex en 11 Mayo 2016, 03:38 AM
si estás creando un framework latino por qué usas un nombre en inglés y que a demás es bien asociado con un servicio estadounidense hijo de yahoo? :s

no entiendo el valor de "latino" aquí

Hermano, antes que todo Saludos!
En primer lugar, el nombre proviene de 'parpadeo' en ingles por ser un framework rapido ( rapido como un parpadeo) .

Como dije anteriormente, el software nació como una practica personal por lo que mi intención era solo crear un paquete NPM (preferiblemente en ingles) y por eso esta desarrollado en dicho idioma.
PERO, como expuse en el articulo, mi intención es transformar el proyecto en uno latino (cambio de nombre, idioma de desarrollo, comunidad, etc.) pero primero, la comunidad que lo desarrolle debe ser hispana. Por eso el motivo del artículo, para que sean ustedes que decidan a que se transforme el proyecto.

Gracias por tu comentario y espero haberte aclarado cualquier duda, pero sobre todo, disculpas!.

engel lex

comprendo...

está bien, la programación debe ser invariablemente en inglés, evita traducir variables y funciones eso ayuda mucho a 3ros, sin embargo todos los comentarios y bases si pueden ser hispanas al igual que el nombre..

realmente no se mucho de nodejs (no más que para revisar y modificar programas) y no se de que va tu proyecto, pero así como avance podría ver que puedo colaborar!

saludos
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.