[{"data":1,"prerenderedAt":245},["ShallowReactive",2],{"project-14527124":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":35,"aspects":36,"strip":42,"post_text":45,"what":46,"said":68,"maker_in_thread":155,"shape":165,"grid":169,"attempts":208,"same_week":209,"maker_shows":236,"maker_hidden":237,"reader_version":238,"card":239},"14527124","Cell.js","A Self-constructing web app framework","title","Show HN: Cell.js – A Self-constructing web app framework","http:\u002F\u002Fwww.celljs.org\u002Findex.html?hn","celljs.org","gliechtenstein",1497098481,2017,70,20,633,2242,29,"notable","languages","javascript framework","library",[21,24,25,26,27],"dom","reactive ui","json markup","no framework","curious",-0.121,{"positive":31,"neutral":32,"mixed":33,"critical":34},2,8,0,4,14,{"idea":37,"design":39,"docs":40,"performance":41},{"positive":38,"critical":31},1,{"positive":38,"critical":33},{"positive":33,"critical":38},{"positive":33,"critical":38},[43,33,44,33,44,44,38,44,33,38,33,44,33,38,44,43,44,44,33,38],5,3,null,{"problem":47,"audience":45,"pricing":45,"motivation":54,"time_to_build":45,"stack":58,"openness":65,"stage":66,"team_size":67},{"value":48,"source":49,"evidence":50},"Building web apps with a decentralized architecture instead of centralized MVC frameworks","maker",[51],{"id":52,"by":11,"text":53},"14530236","Thanks! Zero framework is just one of the distinct traits that makes Cell special. Here's why I started working on Cell: Aside from Cell, I am working on a project called…",{"value":55,"source":49,"evidence":56},"Needed a simple framework for a web version of Jasonette that centralized frameworks could not provide",[57],{"id":52,"by":11,"text":53},[59],{"value":60,"source":49,"evidence":61},"JavaScript",[62],{"id":63,"by":11,"text":64},"14532042","1) How does one cell send messages to another. I suppose this is left to the application? There are several ways to do this…","open_source","beta","unknown",{"praise":69,"objections":86,"requests":116,"questions":133,"alternatives":145},[70,78],{"value":71,"source":72,"evidence":73},"Novel and easy to understand architecture","commenter",[74],{"id":75,"by":76,"text":77},"14531982","dgreensp","This is a thought-provoking new framework, thank you! It's novel and easy to understand. Having worked on sophisticated React apps, I've come to understand the benefits and…",{"value":79,"source":72,"evidence":80},"Interesting approach to state and DOM as one tree",[81,82],{"id":75,"by":76,"text":77},{"id":83,"by":84,"text":85},"14534603","tmzt","It seems to use functions for that purpose, look at the example with map. I really like the linked to Android\u002FiOS implementation of this concept.",[87,94,105],{"value":88,"source":72,"evidence":89},"Amounts to another templating engine rather than a new architecture",[90],{"id":91,"by":92,"text":93},"14532941","hannofcart","Thanks for taking the time to respond. From everything you've said, most of what cell.js does is implement yet another templating engine. I think you said as much in your reply:…",{"value":95,"source":72,"evidence":96},"Direct DOM id access and lack of scalability concerns",[97,101],{"id":98,"by":99,"text":100},"14529642","teyc","Interesting, but I get worried every time I see that code refer to specific DOM id. It's probably ok for simple programs where there is only a handful of elements. When the…",{"id":102,"by":103,"text":104},"14530242","mnishihan","How does it scale? Anti pattern is sometimes useful & obvious, but going with anti patterns for everything is a stupid decision IMO. Frameworks are for greater good. If you don't…",{"value":106,"source":72,"evidence":107},"Unclear SEO and pre-rendering story",[108,112],{"id":109,"by":110,"text":111},"14530583","shakna","JS frameworks and SEO have a rough history. Pre-rendering tends to be the workaround, but Cell's lack of hierarchy might make that more difficult than normal. How would you work…",{"id":113,"by":114,"text":115},"14534341","satyrnein","Let's say you pre-render the DOM nodes on the server. At that point, there's no need to create them again in the browser from the JSON object. How would you augment them to…",[117,126],{"value":118,"source":72,"evidence":119},"Clearer documentation of context inheritance and messaging",[120,123],{"id":121,"by":76,"text":122},"14533215","Got it. I immediately had a bunch more questions, some of which I tried to answer by playing around with the demo. Is \"this\" the actual DOM element? (Yes.) Then how is \"context…",{"id":124,"by":92,"text":125},"14530916","After having looked through the tutorials, I am unclear about the following: 1) How does one cell send messages to another. I suppose this is left to the application? 2) How do…",{"value":127,"source":72,"evidence":128},"Guidance on reusable components and passing data",[129],{"id":130,"by":131,"text":132},"14534572","meekaaku","This is interesting. I have had a look at the examples. One question that comes to mind, how do you make a reusable component? Say I have: Part = { $cell: true, $type: \"h2\",…",[134,141],{"value":135,"source":72,"evidence":136},"How does reactivity and update propagation work",[137,140],{"id":138,"by":76,"text":139},"14532131","Sure thing. :) One thing I'm not completely clear on is the reactivity model. It seems like setting $components (for example) triggers a setter that updates the DOM? What about…",{"id":121,"by":76,"text":122},{"value":142,"source":72,"evidence":143},"How are components tested and how do cells communicate",[144],{"id":124,"by":92,"text":125},[146,151],{"value":147,"source":72,"evidence":148},"React",[149,150],{"id":75,"by":76,"text":77},{"id":121,"by":76,"text":122},{"value":152,"source":72,"evidence":153},"Redux and Elm",[154],{"id":75,"by":76,"text":77},{"comments":156,"answered":43,"key":157},6,[158,161,164],{"id":159,"text":160},"14532082","Thank you, I think you pretty much nailed it! This architecture may not be very obvious to many people at this point but I believe it can enable a lot of interesting use cases…",{"id":162,"text":163},"14532190","Yup, it works for all $ variables. As for the \"_\" variables they are meant to have no side effect on the DOM directly and instead only trigger a function called $update()…",{"id":52,"text":53},{"commenters":166,"max_depth":43,"maker_replies":156,"first_comment_mins":167,"lifespan_hours":168},11,607,39,[170,172,174,176,177,178,182,186,187,188,190,193,195,196,197,198,200,202,204,206],[75,33,43,171,76,33],"project\u002Fpositive\u002Fidea",[159,33,33,173,11,38],"maker\u002Fpositive\u002Fnone",[138,33,44,175,76,33],"project\u002Fneutral\u002Fdesign",[162,33,33,175,11,38],[121,33,44,175,76,33],[179,33,44,180,181,33],"14533899","project\u002Fneutral\u002Fidea","rco8786",[183,38,38,184,185,33],"14535067","project\u002Fcritical\u002Fdocs","ezekg",[98,31,44,175,99,33],[52,31,33,180,11,38],[102,31,38,189,103,33],"project\u002Fcritical\u002Fidea",[191,31,33,192,11,38],"14532126","maker\u002Fneutral\u002Fidea",[124,44,44,194,92,33],"project\u002Fneutral\u002Fdocs",[63,44,33,175,11,38],[91,44,38,189,92,33],[130,34,44,175,131,33],[83,34,43,199,84,33],"project\u002Fpositive\u002Fdesign",[201,34,44,175,131,33],"14534700",[109,43,44,203,110,33],"project\u002Fneutral\u002Fperformance",[205,43,33,203,11,38],"14532053",[113,43,38,207,114,33],"project\u002Fcritical\u002Fperformance",[],[210,215,220,225,229,233],{"id":211,"name":212,"points":213,"category":214},"14552615","DemandRush",1100,"web_saas",{"id":216,"name":217,"points":218,"category":219},"14553401","StatiCrypt",348,"security_privacy",{"id":221,"name":222,"points":223,"category":224},"14553551","Vexlio",309,"dev_tools",{"id":226,"name":227,"points":228,"category":224},"14552140","SimulDocs",220,{"id":230,"name":231,"points":232,"category":224},"14515494","Retool",190,{"id":234,"name":235,"points":232,"category":214},"14538351","Keygen",7,false,"v2",{"id":240,"name":5,"line":6,"ai":237,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":241,"top":18,"kw":242,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":243,"url":9,"mix":244,"praise":71,"objection":88,"sub":21},14527124,-0.12,[21,24,25,26,27],"50303313010301353301",[31,32,33,34],1794036556166]