It’s basically done and used for private projects, but it’s not polished
and there’s no documentation,
only some examples. MonoJS http://monojs.org - RoR clone in NodeJS.
Examples to play:
- Classical RoR 10 Blog http://example.monojs.org
- Simple CMS
Blog http://jslang.gitsites.com
Editing http://jslang.gitsites.com/edit
(Register here http://gitsites.com to play with it and see it in
action)
Would you be interested in such framework? I need to know it to decide -
create documentations and polishing it or just keep it as it is for
internal usage.
What’s the same as in RoR
- Looks and feels like working with RoR. Uses same API, naming and
conventions. - Forget about asynchronous code, use plain and simple synchronous code
(without
blocking the node, thanks to Fibers). - More robust error handling (thanks to Fibers).
- Full support for RoR AJAX techniques for Classical Web2.0 AJAX -
remote
links, JS responses,
js-helpers, Turbolinks. - Controller with before / after callbacks.
- RESTful routing.
- AssetPipeline (based on Browserify, support CoffeeScript, ClientSide
Templates, minifying, etc.) - Code Reload
- Pluralize and localize helpers.
- Modular, create many applications and combine it as you wish (similar
to
how it’s done in express). - Request format recognition and automatically use correct ContentType
for
response and Template extension. - Full support for CoffeeScript, use it for server code, server
templates,
client code (Backbone.js for
example) client templates. All will be assembled automatically and in
case
of client stuff also
transpiled to JS packed and delivered to Browser. - Use mocha.js to create tests similar to RoR RSpec
What’s different from RoR
- Unlike RoR its internal structure is modular, every of its Core
Component
can be replaced. So, you
don’t need things like RoR Engines, it’s already there out of the box. - Small code size, basically it does nothing by itself, it’s just a
gluecode
delegating all actual work to other well known and established Node.js
libraries. - No enforcement on project structure, you can use folder structure like
RoR or whatever other
your like.