Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Microjs: an index of javascript micro frameworks (microjs.com)
104 points by gbaygon on March 17, 2012 | hide | past | favorite | 26 comments


It has now become a norm that everyone just drops in jQuery and bootstrap css for most of their projects while they might just be needing a DOM handler and a few utility functions. I have nothing against jQuery or Bootstrap. They are awesome to get things rolling but in most cases there is no necessity to load huge JS libraries with lots of utility functions which one might not be using. Not to leave aside the fact that a few third party analytics, tracking, help desk tools also load/include jQuery in their bloated script.

MicroJS is a good resource. I am wondering how many of the frameworks listed there are actively developed/maintained. Adding the last commit date information might be super useful.


> there is no necessity to load huge JS libraries with lots of utility functions which one might not be using.

I think we really need to see a tracing link-time-optimizer for Javascript code that can be run as part of an asset pipeline. Dump in your huge JS library, run your client scripts (with a thorough test suite) to detect what functions of the big library are or aren't called, then cull off the functions that aren't when writing out the final "compiled-and-linked" client library.


That's a really good idea. In the meantime you could use jquip which cuts out a lot of the commonly-unused jQ stuff. https://github.com/mythz/jquip


Google Closure and GWT both do exactly that - they use static analysis to cull code which never gets called. You can't use them with standard JS libs though - JS code needs to be specially marked up to use that feature in Closure, and GWT development is in Java.

GWT takes the idea one step further - the code splitting functionality lets you define split points, and code that only ever gets called behind the split point does not need to be downloaded on page load, but can instead be downloaded when that split point is first reached.


Unless the optimizer made sure that it didn't inadvertently break any cross-browser compatibility, you would lose one of the biggest benefits of libraries like jQuery.


Right; I imagine library authors would have to adopt some sort of conventional annotation on functions declaring something like "if you execute any function in the set {X,Y,Z}, you have to include all of {X,Y,Z}, because they're cross-platform equivalents for one-another."


GWT solves this problem a few years ago.


When we strip out or modify parts of a library's code we bring onto ourselves an unwanted task of patching it whenever there is a update. Living with the old working version is fine but not very optimal. Say if you made a custom version from jQuery 1.4 i bet it would be painful to update the custom version to use the current release ensuring cross browser compatibility.


You don't strip it out manually; you run the compiler on it. When you get the new version of the library, you update that library to the newest version (by simply replacing it) and then run the compiler again. You're never manually touching/modifying/updating any of the "object code" coming from the compiler, just regenerating it from scratch.


This is what Closure Compiler does, without the need to even dump in a large test suite.


Considering jQuery is available on Google's CDN, and lots of websites just fetch it from there, it's not necessarily true that using a smaller library will actually translate into slower load times in most cases. Similarly, if you concatenate all your javascript together, that gets rid of the main culprit where slow page loads are concerned, which is latency, not file size.


I ended up porting from jQuery to Zepto for my mobile PhoneGap app, where the files are stored locally. Porting to Zepto resulted in performance gains due to the browser taking less time to actually parse the JavaScript. Here's a blog post I wrote with more info and performance comparison: http://blog.pamelafox.org/2011/11/porting-from-jquery-to-zep...


That's not the whole point, even if it's in your cache it takes time to evaluate. Jquery and jqueryui together are taking 300ms in my chrome - blocking the page painting


Imagine loading that on a mobile device, where something like that could easily take a few seconds. That's another reason why you really don't want to use jQuery on mobile.


I started using zepto recently, it's at 7.4k min+gziped, not the 3.3 listed on this site. Still a super useful site, it might just be slightly out of date.


I'm the author of both MicroJS and Zepto. The sizes are automatically generated from GitHub when I deploy, usually a couple times per week.

Zepto's size includes only the core library, not additions like Ajax, Touch and so on, that's where the 3.3k number is coming from.


Very cool! I'd very much like to be able to sort by popularity, so when I'm trying to find an off-the-shelf library for something I have a general sense of what has support in the community.

I've put together a pull request which aims to accomplish this goal at https://github.com/madrobby/microjs.com/pull/232.


Since the list is so long, an "about" link on top of the page to link to the bottom would be helpful (eg. I want to find out what constitues as a "micro" framework - currently it's 5k).


It would be nice if I could use a minifying compiler that would strip what I don't use from JQuery, without having to also organize my JS source in a compileable form.


Thanks for this. Bookmarked so that I can use it for future reference. I am going to try out some of those one page .js frameworks soon.


Does Dojo count now with their latest release? They're supposed to have a "micro kernel" that's something like 3kb now.


Your HTTP headers alone per requested file is probably 1KB - 3KB is still tiny.


Is the purpose of this site to highlight how easy it is to build your own framework to suit your needs?


I wonder if it's faster to learn 400 new APIs, or just use ExtJS or Dojo?


Great. Some kind of categorization or tagging would be really useful too.


Wow this is cool. I will definitely use some of those at work ;) thanks!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: