A | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Contact & info : http://eric.daspet.name/ , @edasfr or @webperf_fr Authors of js loaders and webperf experts are more than welcome to request write access to the grid. Please ask, we are waiting for you. | LABjs | HeadJS | ControlJS | RequireJS | Load.js | YepNope.js | $script.js | LazyLoad | curl.js | JsDefer (w/o Jquery) | jquery.defer.js | Bootstrap | PINF JS Loader | BravoJS | NBL.js | JSLoad | jQl | JSL | StealJS | bdLoad | YUI 3 Get | DominateJS | require-kiss | smoothie | ||
2 | Features (please read the "Warnings" worksheet) | http://labjs.com/ | http://headjs.com/ | http://stevesouders.com/controljs/ | http://requirejs.org/ | https://github.com/chriso/load.js | http://yepnopejs.com/ | http://www.dustindiaz.com/scriptjs/ | https://github.com/rgrove/lazyload/ | https://github.com/unscriptable/curl | https://github.com/BorisMoore/JsDefer | https://github.com/BorisMoore/JsDefer | https://bitbucket.org/scott_koon/bootstrap/src/a94d219da3e9/README | https://github.com/pinf/loader-js | http://code.google.com/p/bravojs/ | http://berklee.github.com/nbl/ | http://code.google.com/p/jsload/ | https://github.com/Cerdic/jQl | http://www.andresvidal.com/jsl | http://jupiterjs.com/news/stealjs-script-manager | http://bdframework.org/bdLoad/ | http://developer.yahoo.com/yui/3/get/ | http://github.com/cdata/dominatejs | Dead | https://github.com/letorbi/smoothie | ||
3 | This comparaison is not maintained and was initiated by the crowd. Most of this data may be wrong or outdated. Please use it as a start for your research, not as an end. | labjs | headjs | ||||||||||||||||||||||||
4 | Author(s) | Kyle Simpson | Tero Piirainen | Steve Souders | James Burke | Chris O'Hara | Alex Sexton & Ralph Holzmann | Dustin Diaz | Ryan Grove | John Hann @unscriptable | Boris Moore | Boris Moore | Scott Koon | Christoph Dorn | Wes Garland | Berklee | Eric Nguyen | Cédric Morin | Andres Vidal | Brian Moschel | Rawld Gill | Adam Moore/YUI Team | Chris Joel & Jason Benterou | AJ ONeal @coolaj86 | Torben Haase | ||
5 | Size minified | 4.7 KB | 6.3 KB | 3.6 KB (w. closure adv.) | 13 KB (+1 KB order plugin) | 2 KB | 3.4 KB | 1.4 KB | 1.6 KB | 4.5KB to 6.4KB | 4.7 KB | 2.6 KB | 1.3 KB | 22 KB | 10.7 KB | 971 B | 9.8 KB | 1.5 KB | 2.1 KB | 11.4 KB | 17.9 KB (incl. YUI core) | 48 KB | 1.7 KB | ||||
6 | Size minified and gziped | 2.2 KB | 1.9 KB | 1.5 KB | 5.3 KB (+650B order plugin) | 1 KB | 1.6 KB | 643 B | 904 B | 2.2KB to 2.9KB | 2.5 KB | 1.6 KB | 699 B | 6.2 KB | 3.6 KB | 593 B | 718 B | 855 B | 7.21 KB (incl. YUI core) | 10 KB | 1023 B | ||||||
7 | License | MIT | MIT | Apache 2.0 | BSD or MIT | MIT | WTFPL | MIT | MIT | MIT | Apache 2.0 | MIT | MIT | MIT | LGPL | MIT and GNU | BSD | MIT | LGPL | ||||||||
8 | Load JS files without blocking | Y | Y (tested) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | |||||
9 | Load independent JS files/groups in parallel | parallel | Y (tested) | Y (tested) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | ||||
10 | Ability to execute a callback after loading a script asynchronously | callback | Y (tested) | Y (tested) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | |||||||
11 | Execute independent JS files independently from the call order (chrome, safari, ie) | no-order | Y (tested) | Y (tested) | Y | Y | ? | N (by design) | ? | N | Y | Y | Y | N | Y | Y | Y | Y | N | ||||||||
12 | Execute independent JS files independently from the call order (firefox, opera) | no-order | N (tested) | N (tested) | Y | Y | ? | N (by design) | ? | N | Y | Y | Y | N | Y | Y | Y | Y | N | ||||||||
13 | Avoid loading a JS file twice if the HTTP cache is missing (same domain) (chrome, safari, ie) | load-twice | Y (tested) | N (tested) | N | N | ? | N | N ? | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | ||||||||
14 | Avoid loading a JS file twice if the HTTP cache is missing (cross domain) (chome, safari, ie) | load-twice-x | N (tested) | N (tested) | N | N | ? | N | N ? | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | ||||||||
15 | Avoid loading a JS file twice if the HTTP cache is missing (cross domain) (firefox, opera) | load-twice-x | Y (tested) | Y (tested) | N | N | ? | N | N ? | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | ||||||||
16 | Able to avoid executing a JS file twice if called twice | noexe-twice | Y (tested) | Y (tested) | Y | ? | ? | Y | ? | N | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||
17 | Able to execute a JS file twice if called twice | exe-twice | Y (tested) | N (by design) | N | ? | ? | Y | ? | Y | Y/N | N | N | N ? | N | N | N ? | N ? | Cached | N | |||||||
18 | Allow to define dependencies (executed before the wanted script) | dep | Y (tested) | Y (tested) | Y | Y | Y | Y | Y | Partially | Y | Y | Y | Y | Y | Y | Y | Y | Y | N | |||||||
19 | Load dependencies in parallel | dep-parallel | Y (tested) | Y (tested) | Y | Y | Y | Y | Y ? | Y | Y | Y | Y | Y | Y | Y | Y | N | Y | N | |||||||
20 | Load JS files outside the "same domain" policy | external | Y (tested) | Y (tested) | Y | Y | ? | Y | ? | Y | Y | Y | Y | Y | Planned | N | Y | Y | Y | ||||||||
21 | Feature detection and no user agent sniffing | Y | N | N | Y | ? | Y | ? | N | Y | N/A | N/A | Y | Y | Y | Y | N | Y | |||||||||
22 | Future proof with async=false | Y | Y (tested) | N/A | Partialy | N | N/A | N | Y | Y | N | N | N | Planned | Planned | N | Planned | N | |||||||||
23 | Ability to define shortcuts or ids (not full urls) to JS files / groups | N | Y (tested) | N | Y/N | N | Y | Y | N | Y | Y | Y | N | Y | Y | N | Y | N | N | ||||||||
24 | Ability to pre-define dependencies in the <head> or somewhere central | N | Y | N | Y | N | N | N | N | Y | Y | Y | N | Y | Y | Y | Y | N | Y | ||||||||
25 | Compliant with the CommonJS Modules spec | N | Planned | N | Y | ? | N/A | In Progress | N | Y | N | N | N | Y | Y | N | N | N | Y | ||||||||
26 | Supports plugins/extensions | N | N | N | Y | N | Y | N | N | Y | N | N | N | Planned | Y | N | N | N | N | ||||||||
27 | Let use classic <script> external tags (controlJS style) | N | N | Y | N | N | N | N | N | N | Y | Y | N | N | N | N | Y | Y | |||||||||
28 | Patches page's document.readyState (FF<=3.5) for DOM-ready detection in dynamically loaded jQuery, etc | Y | N | N | N | N | Y | ? | N | Y | Y | Y | N | N | N | N | Y? | N | N/A | ||||||||
29 | Control which and when scripts are executed (load without execute) | N | N | Y | N | N | Y | N | N | Y | N | N | N | Y | Y | N | N | N | |||||||||
30 | Overwrite document.write | N | N | Y | N | N | N | N | N | N | N | N | N | N | N | N | Y? | Y | N | ||||||||
31 | Aggregation detection and support (bulk download) | N | N | N | Y (w. plugin) | N | N | N | N | N | Y | Y | N | Y | via Plugin | N | N | N | |||||||||
32 | Callback if script is missing (404) or in error (500) | N | Planned | N | Y | Y | Y | not sure | N | Y | Y | Y | N | N | N | Y | Planned | N/A | |||||||||
33 | Fallback domain / mirror if the main URI fails | N | N | N | N | Y/N | Y | N | N | Y | N | N | N | Planned | N | N | Planned | N/A | |||||||||
34 | Allow for returning values | N | N | N | Y | N | N | N | N | Y | Y | Y | N | N | N | N | N | N | |||||||||
35 | Allow passing of parameters or context | N | N | N | Y | N | N | N | N | Y | Y | Y | Y | N | N | N | N | N | |||||||||
36 | Load CSS | N | Y (tested) | N | Y/N | N | Y | Y ? | Y | Y | Planned | Planned | Y | Planned | N | Y | N | Planned | N | ||||||||
37 | Load CSS without blocking | N | N | N | Y/N | N | Y | Y ? | Y | Y | Planned | Planned | Y | Planned | N | Y | N | N | |||||||||
38 | Load CSS in parallel | N | Y (tested) | N | Y/N | N | Y | Y ? | Y | Y | Planned | Planned | Y | Planned | N | Y | N | N | |||||||||
39 | Ability to define priorities in loading queue | N | N | N | Y | N | N | N | N | Y/N | N | N | N | Y | Y | Y | Y | N | |||||||||
40 | Conditional Loading | Y (tested) | Y | ||||||||||||||||||||||||
41 | |||||||||||||||||||||||||||
42 | |||||||||||||||||||||||||||
43 | |||||||||||||||||||||||||||
44 | CommonJS Package/1.1 support | N | Y | N | Y | N | N | Y | via Plugin | N | N | ||||||||||||||||
45 | CommonJS Package/Mappings/C support | N | N | N | Planned | N | N | Y | via Plugin | N | N | N | |||||||||||||||
46 | CommonJS AMD support | Planned | Y | N | Y | N | N | Y | N | N | N | Planned | |||||||||||||||
47 | Runs in browser | Y (tested) | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||
48 | Runs on server | N | Y | N | N | N | N | Y | Y | Untested | Maybe | N | |||||||||||||||
49 | ASYNC package downloading, provisioning & linking | N | N | N | N | N | N | Y | N | N | N | N | |||||||||||||||
50 | Tools/ability to inline and optimize multiple scripts/modules/resources | N | Y | N | Planned | N | N | Y | N | Y | N | N | |||||||||||||||
51 | Command-line support | N | N | N | N | N | N | Y | N | N | N | Y | |||||||||||||||
52 | WebWorker support (importScripts()) | N | Y | N | N | N | N | Y | via Plugin | N | N | N | |||||||||||||||
53 | Deferred/Promise integration (allowing 'joins' for callbacks) | Planned | N | Y | Y | Y | N | ||||||||||||||||||||
54 | |||||||||||||||||||||||||||
55 | |||||||||||||||||||||||||||
56 | |||||||||||||||||||||||||||
57 | |||||||||||||||||||||||||||
58 | |||||||||||||||||||||||||||
59 | |||||||||||||||||||||||||||
60 | |||||||||||||||||||||||||||
61 | |||||||||||||||||||||||||||
62 | |||||||||||||||||||||||||||
63 | |||||||||||||||||||||||||||
64 | |||||||||||||||||||||||||||
65 | |||||||||||||||||||||||||||
66 | |||||||||||||||||||||||||||
67 | |||||||||||||||||||||||||||
68 | |||||||||||||||||||||||||||
69 | |||||||||||||||||||||||||||
70 | |||||||||||||||||||||||||||
71 | |||||||||||||||||||||||||||
72 | |||||||||||||||||||||||||||
73 | |||||||||||||||||||||||||||
74 | |||||||||||||||||||||||||||
75 | |||||||||||||||||||||||||||
76 | |||||||||||||||||||||||||||
77 | |||||||||||||||||||||||||||
78 | |||||||||||||||||||||||||||
79 | |||||||||||||||||||||||||||
80 | |||||||||||||||||||||||||||
81 | |||||||||||||||||||||||||||
82 | |||||||||||||||||||||||||||
83 | |||||||||||||||||||||||||||
84 | |||||||||||||||||||||||||||
85 | |||||||||||||||||||||||||||
86 | |||||||||||||||||||||||||||
87 | |||||||||||||||||||||||||||
88 | |||||||||||||||||||||||||||
89 | |||||||||||||||||||||||||||
90 | |||||||||||||||||||||||||||
91 | |||||||||||||||||||||||||||
92 | |||||||||||||||||||||||||||
93 | |||||||||||||||||||||||||||
94 | |||||||||||||||||||||||||||
95 | |||||||||||||||||||||||||||
96 | |||||||||||||||||||||||||||
97 | |||||||||||||||||||||||||||
98 | |||||||||||||||||||||||||||
99 | |||||||||||||||||||||||||||
100 |