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
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
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!.