Show HN: OxJS - a JavaScript Library for Web Applications
oxjs.org
oxjs.org
- How is this different to Backbone.js/underscore.js, Spine.js, Sproutcore, etc.?
- Who's using it? (I realise the list will be short for new projects)
- Why should I learn a new framework when my other tools seem to be working just fine?
- What are its dependencies, and what templating libraries does it use/support?
There are probably more (chime in if you have any!) but if you can answer these without resorting to impressive demos or long lists of (expected) features, I'd consider trying it out for a low-risk project and hope it saves me some time/hassle...
To answer your questions:
- The core library (Ox.js) is somewhat similar to underscore, while the UI module (Ox.UI) is more like YUI or Ext JS. Unlike backbone, OxJS comes with actual widgets, and it doesn't suggest a strict MVC model. Even though you may end up writing code that follows the MVC paradigm rather closely.
- So far, the only major project using OxJS is pan.do/ra (https://pan.do/ra). But then, OxJS has just been made public.
- In case the tools you're currently using give you the right abstractions and objects to build big applications (like pan.do/ra), then my suggestion would be to stick with them. Maybe try out OxJS for a small side project.
- Ox.UI wraps jQuery, but other than that, there are no dependencies. You can bring any third-party templating library, but the idea is that you won't need one. The UI widgets are your "views", and that's it.
- Were other libraries (YUI3, Backbone, Ember, ...) evaluated and if so, what were their weaknesses and how does this improve on that?
- What are the core strengths of the framework?
Perhaps they intend do go that route at some point?
Edit: Also, cripes, I get that you're trying to show off your amazing web app framework, but whatever happened to degrading gracefully?
Initial loading: 46 requests, 200KB, 4s load
Clicking documentation button: 140 requests, 400kb, ~5s load
The timeline in chrome dev tools for this site is terrifying, all I can say is 'wow'. Worst part is that the vast majority of resources don't appear to have cache headers set.
This is really nice if you're using and developing OxJS locally. On oxjs.org, it's definitely a waste of resources, and we will eventually cache the documentation data.
As a perspective user for this library, the site being excruciatingly slow leaves a very bad impression of the library itself. Whether it's the libraries fault or just the implementation of this particular site is irrelevant to the impression given.
Using myself as a singular datapoint I spent about 15 minutes messing around on the site. About 60 seconds were spent looking at the actual library while the rest of the time was spent being fascinated by how such a simple site could be so slow. That isn't what you want developers doing when considering using a new library.
The readme is fine, it appears to load the content only when the page is accessed.
The examples section is OK, _after_ it loads, since the first time you click on examples it loads all of them for some reason, another 56 requests and several seconds. Some the examples do render slowly which is actually the most concerning issue since all the data has already been pulled to the client (minus a couple tiny SVG files which are cached), thus any slow down you see there is from the JS rendering the view and its not quick.
The documentation load time is terrible, 140 requests as it literally loads _every_ components JS file individually when you first hit the page. Again despite all the data being there already, switching between component documentation views is not snappy in many cases. Clicking on 0x.image for instance spikes CPU usage and takes over a second to render.
The two stand out issues are:
1) loading a ton of JS and nodes into the DOM when it isn't yet needed.
2) slow client side rendering of the views, it shouldn't take a second to render a view when all the data is already client side. It could have just pulled a pre-rendered view from the server in that time.
[1] https://developers.google.com/chrome-developer-tools/docs/he...
If you care to provide a few more details (via e-mail, or using our bug tracker), we're definitely going to look into it.
But what you're looking at is just the HTML/JS that comes with OxJS, and it is intended to be used locally, for development. There is no server backend. You can just put it on your local web server, and it works the same. Generating documentation, tokenizing JS, running tests, etc. all happens live, on the client. (Sooner or later, we'll put pre-generated documentation on oxjs.org. But if you're running the site locally, it's really convenient to not need any build steps.)
The examples currently reference the development version of OxJS, and explicitly don't use cached files. Again, this is nice if you're making your own changes to OxJS, and want to see how they affect a particular example. But for someone just browsing oxjs.org, it's definitely overkill, and we'll fix it ASAP.
Looks a bit like Docco: http://jashkenas.github.com/docco/
I guess it rather depends on the type of application you're building. For anything complex and truly feature-rich (think a good e-mail client, or professional photo/video management software), the big advantage of a menu bar is that it makes functionality discoverable, using a well-known paradigm. Keyboard navigation + shortcuts are a plus, and OxJS provides that.
I definitely see a need for desktop-like JavaScript UI toolkits. But of course, one has to use them wisely. Non-native dialogs have become quite common, and I think they make sense for login, notifications, warnings, and so on. On the other hand, it's unlikely that a whole layer of stacked "windows" (inside a tab, inside a browser window) is a good idea.
EDIT, forgot to mention: The main reason menus or dialogs as elements on a website may seem confusing or broken could be that most existing JavaScript implementations are actually confusing and broken.
That said, I haven't used Windows in quite some time so I could be way off.