[{"data":1,"prerenderedAt":278},["ShallowReactive",2],{"project-6579808":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":40,"post_text":43,"what":44,"said":88,"maker_in_thread":185,"shape":191,"grid":194,"attempts":242,"same_week":243,"maker_shows":42,"maker_hidden":270,"reader_version":271,"card":272},"6579808","hr.js","Build large client-side applications in a structured way","title","Show HN: hr.js - Build large client-side applications in a structured way","http:\u002F\u002Ffriendcode.github.io\u002Fhr.js\u002F","friendcode.github.io","SamyPesse",1382275407,2013,69,23,364,1739,21,"notable","languages","javascript framework","library",[24,25,26,27],"client-side framework","backbone alternative","javascript mvc","amd modules","curious",-0.077,{"positive":31,"neutral":32,"mixed":33,"critical":31},2,11,1,16,{"design":36,"docs":37,"idea":39},{"positive":33,"critical":33},{"positive":38,"critical":33},0,{"positive":33,"critical":38},[41,38,38,41,41,41,38,42,38,41,41,41,41,41,33,38,41,38,42,38,33,41,41],3,5,null,{"problem":45,"audience":43,"pricing":43,"motivation":56,"time_to_build":43,"stack":63,"openness":87,"stage":87,"team_size":87},{"value":46,"source":47,"evidence":48},"Structuring large client-side applications with modular code and built-in features","commenter",[49,53],{"id":50,"by":51,"text":52},"6580545","ville","It feels a lot like Backbone.js. However when building a large application with Backbone, by time lots of things need to be added on top of it: i18n, caching, paged loading of…",{"id":54,"by":11,"text":55},"6580261","Hr is like a backbone-on-steroids, it uses the same code structure: models\u002Fcollections\u002Fviews but also brings a base structure and a build system for the application using…",{"value":57,"source":58,"evidence":59},"Maker needed a scalable client-side structure for FriendCode after Backbone proved hard to extend","maker",[60],{"id":61,"by":11,"text":62},"6580450","Before building HappyRhino, I tried a lot to improve Backbone because we were using it for building FriendCode (friendco.de) but the code base of Backbone is really not modular…",[64,70,74,81],{"value":65,"source":58,"evidence":66},"Node.js",[67],{"id":68,"by":11,"text":69},"6580645","To answer your second question: First of all, hr.js build process can be integrated in another node.js process using \"var hr = require('hr.js')\", so you can still use Grunt (or…",{"value":71,"source":58,"evidence":72},"require.js (AMD)",[73],{"id":54,"by":11,"text":55},{"value":75,"source":47,"evidence":76},"LESS",[77],{"id":78,"by":79,"text":80},"6580859","nilgradisnik","This seems like a step in the right direction to me. I was wondering about the flexibility of templating engine and CSS preprocessing. It seems like hr.js is using it's own…",{"value":82,"source":58,"evidence":83},"Underscore.js templating",[84],{"id":85,"by":11,"text":86},"6580949","You can use sass by defining another css compile in the build config (however I never tested with sass). The templating engine is the templating engine from underscore.js. Thank…","unknown",{"praise":89,"objections":105,"requests":128,"questions":155,"alternatives":164},[90,101],{"value":91,"source":47,"evidence":92},"Feels like a grown-up Backbone with modular design",[93,97,100],{"id":94,"by":95,"text":96},"6580348","calebgilbert","This looks really awesome - like a fully grown up Backbone.js! The nested\u002Fcomplex modeling, thoughtful subview handling, and ability to use backends other than rails\u002Frest pretty…",{"id":98,"by":95,"text":99},"6580416","What I really like is that hr.js isn't built on Backbone, it rather is highly-inspired by it. That's a BIG advantage over things like Marionette\u002FChaplin\u002Fetc, because Backbone has…",{"id":50,"by":51,"text":52},{"value":102,"source":47,"evidence":103},"Built-in i18n, caching, and collection paging",[104],{"id":50,"by":51,"text":52},[106,110,121],{"value":107,"source":47,"evidence":108},"Build tool tightly coupled to framework; should be separate project",[109],{"id":50,"by":51,"text":52},{"value":111,"source":47,"evidence":112},"No comparison with existing frameworks in docs",[113,117],{"id":114,"by":115,"text":116},"6580006","jonahx","As with most new js frameworks, the first thing I'd like to see in the docs is a comparison with similar popular frameworks, and a brief description of what makes this one…",{"id":118,"by":119,"text":120},"6580016","thenerdfiles","Actually, we know that these types of frameworks are not created in the dark. Instead of a comparison, I'd like to see what elements of Backbone.js, AngularJS, KnockoutJS, etc.…",{"value":122,"source":47,"evidence":123},"Package-by-layer structure may not scale",[124],{"id":125,"by":126,"text":127},"6583282","k3n","How is it going to scale, since it's using package-by-layer (as opposed to package-by-feature[1])? Most systems like that become highly annoying to work in with even a moderate…",[129,136,148],{"value":130,"source":47,"evidence":131},"Hello World and clearer introduction in docs",[132],{"id":133,"by":134,"text":135},"6580421","jcutrell","Seems like this page could definitely benefit from some sort of Hello World. What are the primary components, and how do I run it? Perhaps it's not meant to be a simple library,…",{"value":137,"source":47,"evidence":138},"Comparisons with Marionette, Chaplin, Ember and others",[139,143,144],{"id":140,"by":141,"text":142},"6580471","lazerwalker","If that's the case, I'd love to hear how hr differs from all of the other \"backbone-on-steroids\" projects like Marionette and Chaplin.",{"id":114,"by":115,"text":116},{"id":145,"by":146,"text":147},"6581778","logical42","Of the number of comparisons drawn here, I'm rather surprised that this hasn't been compared to ember.",{"value":149,"source":47,"evidence":150},"Explain backend loading and storing of models",[151],{"id":152,"by":153,"text":154},"6580465","lobster_johnson","Looks very interesting. The only thing I couldn't find in the introduction was how hr.js interfaces with a backend for loading and storing models. Care to explain? One of my…",[156,160],{"value":157,"source":47,"evidence":158},"Why not built on Backbone.js?",[159],{"id":50,"by":51,"text":52},{"value":161,"source":47,"evidence":162},"How to use other templating engines or CSS preprocessors like Sass",[163],{"id":78,"by":79,"text":80},[165,169,173,177,181],{"value":166,"source":47,"evidence":167},"Backbone.js",[168],{"id":50,"by":51,"text":52},{"value":170,"source":47,"evidence":171},"Marionette",[172],{"id":140,"by":141,"text":142},{"value":174,"source":47,"evidence":175},"Chaplin",[176],{"id":140,"by":141,"text":142},{"value":178,"source":47,"evidence":179},"Ember",[180],{"id":145,"by":146,"text":147},{"value":182,"source":47,"evidence":183},"AngularJS and KnockoutJS",[184],{"id":118,"by":119,"text":120},{"comments":186,"answered":41,"key":187},6,[188,189,190],{"id":68,"text":69},{"id":54,"text":55},{"id":61,"text":62},{"commenters":32,"max_depth":186,"maker_replies":186,"first_comment_mins":192,"lifespan_hours":193},72,55,[195,197,200,202,204,206,208,210,212,214,216,219,220,222,224,226,229,230,231,234,237,239,240],[50,38,41,196,51,38],"project\u002Fmixed\u002Fdesign",[198,38,38,199,95,38],"6580569","commenter\u002Fneutral\u002Fnone",[68,38,38,201,11,33],"maker\u002Fneutral\u002Fdesign",[114,33,41,203,115,38],"project\u002Fneutral\u002Fdocs",[118,33,41,205,119,38],"project\u002Fneutral\u002Fidea",[207,33,41,205,119,38],"6580036",[54,33,38,209,11,33],"maker\u002Fpositive\u002Fdesign",[98,33,42,211,95,38],"project\u002Fpositive\u002Fdesign",[61,33,38,213,11,33],"project\u002Fneutral\u002Fdesign",[215,33,41,213,119,38],"6580599",[217,33,41,218,119,38],"6580566","project\u002Fneutral\u002Fnone",[140,33,41,205,141,38],[221,33,41,205,119,38],"6580556",[223,33,41,213,141,38],"6594492",[133,31,33,225,134,38],"project\u002Fcritical\u002Fdocs",[227,31,38,228,11,33],"6580442","maker\u002Fneutral\u002Fdocs",[78,41,41,213,79,38],[85,41,38,201,11,33],[94,232,42,233,95,38],4,"project\u002Fpositive\u002Fidea",[235,232,38,236,11,33],"6580365","maker\u002Fpositive\u002Fnone",[125,42,33,238,126,38],"project\u002Fcritical\u002Fdesign",[152,186,41,213,153,38],[145,241,41,218,146,38],7,[],[244,249,254,258,262,266],{"id":245,"name":246,"points":247,"category":248},"6567967","copy.sh x86 emulator",765,"dev_tools",{"id":250,"name":251,"points":252,"category":253},"6598441","Sketchology",212,"creative",{"id":255,"name":256,"points":257,"category":20},"6588802","Unirest",174,{"id":259,"name":260,"points":261,"category":20},"6569690","WordsForThat.com",151,{"id":263,"name":264,"points":265,"category":20},"6578584","YinYang",134,{"id":267,"name":268,"points":269,"category":20},"6572349","Turbo Pascal compiler in JavaScript",101,false,"v2",{"id":273,"name":5,"line":6,"ai":270,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":274,"top":18,"kw":275,"maker":11,"domain":10,"tier":19,"attempts":38,"strip":276,"url":9,"mix":277,"praise":91,"objection":107,"sub":21},6579808,-0.08,[24,25,26,27],"30033305033333103050133",[31,32,33,31],1793990898718]