Show HN: Neo.mjs – Webworker-driven UI framework
github.com
github.com
All up, I’m afraid I found it decidedly unpleasant to interact with.
using the mouse wheel while the helix is mounting definitely breaks things. should be fixed when this issue is resolved.
it would be nice if you could double-check it.
selecting countries does change the hash value inside the ULR (routing), otherwise there is no browser controls hijacking i am aware of.
In fact, the code jsx compiles into (which, yeah, you said no compilation in dev so that argument applies, sure) is not honestly that different to the JSON structure for the DOM, it's just made out of function calls rather than nested objects but the "returns what's basically a data structure" is still there.
(I'm mentioning this not to complain, but because it's so obviously Not Even Wrong that it looks like a brain fart and is probably worth correcting)
there is a trade off point where it is less and cleaner code to manually deal with the json structures. sure, you can also manually change the generated jsx output, but i would argue that you need to do it in a different way (not consistent), while you can do this the same way in neo throughout the cmp lifecylcle.
now think about charts, like amCharts (just created the wrapper code): https://github.com/neomjs/neo/blob/dev/examples/charts/MainC...
putting the json config of a chart into the json component tree has its beauty. the same goes for mixing the json based cmp and vdom tree. (the chart lib runs inside the main thread while you define you chart inside the app worker).
if many devs really want to use jsx with neo and accept a build process as the price, i would not mind if someone starts to work on making it happen. as long as it is optional.
I believe I understand what you're trying to say ... but the way you've said it ends up including a giant factual error that will potentially put people off. I figured it was "not super good at explaining" so thought I'd mention it so you could try and fix it (I'd be happy to help review an updated version, btw).
[Violation] 'requestAnimationFrame' handler took 1210ms
Tried a few of the demo's and they're very sluggish.
on my end it looks like this: https://www.youtube.com/watch?v=BhSZS6_UlO4
(actually better, video-recording is slowing it down)
the helix is an extreme performance demo, since it is neither using canvas, svg nor webGL. just 300 div nodes which get adjusted in parallel.
managed to get > 30k dom manipulations per second (console logs for details)
it might make sense to adjust the configs of this component for your setup, but can not really help without details.
the framework and all demo apps are using the MIT license, so they are meant for others to step in.
it is on the todo list (adding touch events to the main thread and then polishing some examples to match mobile screen resolutions).
feedback appreciated!
if I may ask you to take a look into a 2nd () post in my entire life-time, this is the one.
neo.mjs - just hit 5000 commits () and 400 GitHub stars.
It has been a blast since the public release and there are more new features & enhancements than I can even mention here.
In short: The concept of neo.mjs is, that the framework & the apps which you build run within a separate thread (webworker) which leads to an idle main thread with an incredible performance.
The framework is based on top of ES8 and can run without any JS related builds.
At the moment I am mostly pushing the covid19 demo app, to create a perfect showcase for you on how to craft apps using the framework. A new wrapper for amCharts is in place: you can now simply add the chart config json into the component tree.
In case you have not looked at the neo.mjs yet, now is the time!
() The first one was the public release announcement on Nov 23, 2019
() 3720 commits prior to the public release
online demos here: https://neomjs.github.io/pages/