5 ms·
Show HN: LoadJS – A tiny async loader for modern browsers
- brudgers 10y agoCurious as to how 84 bytes were shaved since the previous posting. https://news.ycombinator.com/item?id=9941182 https://news.ycombinator.com/item?id=9941182
- andres 10y agoHere are some of the changes: * Replaced for-loops with while-loops [1] * Removed un-necessary code in the script loading function [2][3] * Removed setTimeout wrapper [4][5] [1] https://github.com/muicss/loadjs/blob/master/src/loadjs.js#L35 https://github.com/muicss/loadjs/blob/master/src/loadjs.js#L... [2] https://github.com/muicss/loadjs/blob/master/src/loadjs.js#L82-L95 https://github.com/muicss/loadjs/blob/master/src/loadjs.js#L... [3] https://github.com/muicss/loadjs/blob/8d380e1f6c2af431b08088889b4d26705f5bae83/src/loadjs.js#L79-L99 https://github.com/muicss/loadjs/blob/8d380e1f6c2af431b08088... [4] https://github.com/muicss/loadjs/blob/master/src/loadjs.js#L149-L15 https://github.com/muicss/loadjs/blob/master/src/loadjs.js#L... [5] https://github.com/muicss/loadjs/blob/8d380e1f6c2af431b08088889b4d26705f5bae83/src/loadjs.js#L157-L165 https://github.com/muicss/loadjs/blob/8d380e1f6c2af431b08088...
- teknologist 10y agoFor wider browser support I've always relied on LABjs. It's been around for ages and has to be among the most stable JS libraries out there despite having to deal with all those browser quirks. http://labjs.com/ http://labjs.com/
- fbdjfhhcbd 10y agoFor what purpose? Just stop layering bloat.
- King-Aaron 10y agoBut what if you want to load four hundred dependant scripts on each pageload? :(
- romanovcode 10y ago1. If you need four hundred dependant scripts to load a page you're doing something wrong. 2. Why can't you just use <script async src="/js/script.js"></script> and be done with it in the first place?
- michaelmior 10y agoBecause async doesn't do what you think it does. https://www.stevesouders.com/blog/2012/01/13/javascript-performance/#comment-3659 https://www.stevesouders.com/blog/2012/01/13/javascript-perf...
- andres 10y agoI just shaved off another 3 bytes so LoadJS is now 503 bytes (minified + gzipped). HN - If you see a way to get below 500 bytes please let me know! https://github.com/muicss/loadjs/blob/master/src/loadjs.js https://github.com/muicss/loadjs/blob/master/src/loadjs.js
- barsonme 10y agoUsing ES5 features? Because arrow functions would make it smaller. Also using an if/else instead of continue saves 4 bytes. Using arrow functions shaves off another 2 bytes. (Gzipped that's 489 bytes.)[0] [0] - https://closure-compiler.appspot.com/code/jscde34e44897623a837f5b52935589a66f/default.js https://closure-compiler.appspot.com/code/jscde34e44897623a8...
- andres 10y agoThat's a good suggestion but it looks like the minifier removes "continue" automatically: https://raw.githubusercontent.com/muicss/loadjs/master/dist/loadjs.min.js https://raw.githubusercontent.com/muicss/loadjs/master/dist/... Arrow functions would be great but then we'd have to drop support for browsers that don't support ES6.
- barsonme 10y agoIt seems running your original code through the closure compiler shaves it down to 488 max. The closure compiler doesn't respect arrow functions, so I'm assuming that'd have to be changed manually.
- deleted 10y ago[deleted]
- sunrising 10y agocheck out https://github.com/sun2rise/dysel https://github.com/sun2rise/dysel too
- andres 10y agoHow does dysel do sequential loading? Dynamically loaded script tags default to async=true so I think this code loads/executes scripts asynchronously: https://github.com/sun2rise/dysel/blob/master/dist/dysel.js#L19-L21 https://github.com/sun2rise/dysel/blob/master/dist/dysel.js#...
- maxpert 10y agoNice work would love to see it delivered via CDNjs