Introducing Ramen 🍜
yet another open source backend rest API framework! For now all this is, is a cheap copy of Express
You can find the repository for ramen here Currently as of when I'm writing this post, Ramen has the functionality to
- Detect query parameters
- Route parameters
- Get all the headers
- Send / write a response object
and it follows the route-by-route kind of routing, Where if a user goes to let's say 'http://ip:port/something/id' it will try to match this with different kind of functions provided to the server. And whichever function comes first (i.e. whichever function was appended first) will be used to process that request. It is also capable of finding query parameters, for example if you go to the URL 'http://ip:addr?foo=bar' you can access the value of foo by the Request object provided to you by Ramen simply by doing
req.queryParams I'll try to log all the developments I make in Ramen here only. And somehow this will keep me motivated to keep this project alive all the time :)
Top comments (25)
Why not write this in TS?
That's something I'm going to do in future. But for now I'm writing it in plain js because I'm just trying to make it work for now, If you will check the second part of the ramen series, I've mentioned that I'm just trying to get a brief idea of how to make it work. And after doing that I'll create a new typescript branch where I'll be writing it again from the ground up and with better code structure.
Learn Typescript. In the enterprise world basically the it's not a neat toy world, everything in done in TS. As @arindoneatk stated retrofitting is a really bad idea. Wish you the best and look forward to seeing your hard work. If you have Typescript questions just ask. Ppl are nicer than you think and we're all suckers for something cool!
Yes sure I really appreciate the community and everyone, If you'll checkout the latest development on Ramen I have added TypeScript as a future plan + it's on high priority right now :)
Definitely would make it top priority to eliminate silly bugs before they even happen, even in the early alpha stage.
Not doing so is a sign of fear due to not knowing TypeScript. I would never write plain JS if I could write TS instead.
So learn TS, then do it right, and make it simpler for yourself. Trust me, TS helps you stay more focused, helps your code base make sense sooner, it saves time down the road, as well as immediately.
Good luck with your thing!
Ghana is right. You can also right it in typescript for type safety. It can go a long way for you. But do what you feel is right.
Good job! Playing with some stuff like this helps to understand many things behind the scene. I confirm that because I created restfun for the same idea.
To parse query parameters from URL, you can use URLSearchParams or node:querystring. I used URLSearchParams first, then realized that
querystringis much faster.
Anyway, there utils give you
req.queryin express without manually parsing url string. You may need them to parse form data too.
Form can be submitted with 'application/x-www-form-urlencoded' or 'application/json' type. If that's 'application/json' you can use JSON.parse as you do. But when that's 'application/x-www-form-urlencoded', you must handle submitted data as url query string.
req.params, you can use URLPattern polyfill because it has not been implemented in Node.js yet. It can help to handle router and find the matched ones.
I've used this polyfill at first and it worked as well, but the performance is not good (just similar to express). So I replaced it with find-my-way to get better performance (x7 faster than express). You can also refer regexparam and @funjs/route-parser.
There are several algorithms for router matching we can investigate when possible. But among the nodejs frameworks, the uWebSockets.js based ones are still the fastest.
This is inspiring, keep it up
All the best
Keep going ! Good luck !
This is encouraging. Great idea!
Hey thanks a lot jeff :D
I hope someday that I could do something like this.
cool but frameworks being born everyday sucks on dev ends, which we all guilt of and yet also victims, anyway, it's very courageous to take on such a big task whole heartedly, I hope you will make it, am struggling to document my CSS framework, anyone interested in building a CSS framework?
Go Ahead Bro 💪
This is quite cool!
Building a framework is not an easy feat - I've tried myself. I'm glad you found enough motivation to start on such a big project! Looking forward to seeing your work!
That's a great one bro!! Ramen on the move. The name is ... 😂
I appreciate the fact that you have very good understanding of how computers and browsers interact.
That's a good one bro.
Great idea for a project to learn from and extend your skills. Looking forward to watching this develop in 2023.
Thanks Gil appreciate it :)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.