Show HN: SingUI – compose modern front end with pure vanilla JavaScript
stackblitz.comI'm sure this is a great framework, but I thought "vanilla JavaScript" meant just writing everything from scratch and not using a framework. Have I misunderstood what this term means?
Here I'd like to separate it from those frameworks that require a "compiler" to work...
Sorry for mistaken "vanilla" for different meanings...
Can we not just use react without jsx? Is that still a thing?
You didn't get the point.
What I'm tring to do is making a "writable" solution with pure JavaScript, not needing to write a lot of `React.createElement` or something similar. I even got `attr` and `prop` proxied to the correct element when building, no need to extract them form arguments each time inside an element.
What's more, it's only less than 5kb without gzip.
No, you haven't...
There are frameworks that already exist that don't require compiling, like hyperapp (but others, too). Even React can be written without compiling - you don't _have_ to use JSX or advanced babel.
So I read through the example, and I do get it, but I'm not a fan, but I also think you put a lot of thought into this in general.
If you want adoption, I think you need to focus on at least two things:
- Testing (part 1). Your library doesn't have tests, and was only pushed about 9 hours ago from the time of this comment. Developers don't have any way to trust that the library works the way they think it should.
- Testing (part 2). There is no obvious way to test code written with your library/framework. Developers won't be able to verify if their code is doing what they expect. I suspect you could have build return faked methods, but then how do you tell the build function that it should be in test mode?
1. This was just a POC, and there's yet no document. Testing may be added later but for there's only 400 lines of code, it could hardly go wrong. The demo itself acts as a proof of correctness as well.
2. Hyperapp actually does have some sort of compiling (at least parsing a string for a tag)
3. There're far more advanced usages that you may not aware of, so build function has no need to care about whether it's in test mode. More usage demos may come later.
4. I'm actually not a fan of writing redundant tests. IMO tests are more of a psychological comfort for users to see rather than a practical proof of robustness. Though it could gaurantee some sort of correctness, it won't cover how users want to use it. It's a waste of time to write a whole bunch of tests and run them every now and then.
5. I don't want to make this project "heavy", and I hate "heavy" projects.
Hopefully I didn't come off aggressively, I was just trying to give you some feedback.
In terms of hyperapp, that is as much compiling as `document.createElement("a")`, which is what your library does, too.
I'm not saying write redundant tests. Tests are more than just one person's psychological comfort. Another great example is if you are accepting PRs into a larger codebase, having tests means you know other people aren't breaking previously working parts of your app. Tests can also work as documentation, since a test describes how pieces of your app should work.
I'm confused why you think any of my suggestions imply that you should make your library heavy/larger/unmanageable.
I mixed hyperapp with hpyerscript.. My bad
In terms of "heavy", it's actually a problem with node's package management. Once I include test frameworks as dev dependencies, there's a high chance of installing my package will get the test framework together with it's whole bunch of dependencies installed as well - very unnecessary and time consuming.
No problem, the JS ecosystem is so full that there is a lot of naming overlap.
Nothing should be stopping you from just making a test file, you don't _have_ to use a framework. NodeJS even comes bundled with https://nodejs.org/api/assert.html .
> ERROR: Cross-origin localStorage blocked by browser but required for devserver.
> Please enable 3rd party cookies or add an exception for stackblitz.io to resolve.
You know, I don't think I will.
How is this different from hyperscript or mithril?
No vdom, proxy based, self contained, and absolutely no need for any kind of parsing for templates.
The overall code composition is quite different if you take a closer look.