vanillaview
imba
vanillaview | imba | |
---|---|---|
6 | 45 | |
12 | 6,234 | |
- | 0.2% | |
0.0 | 9.4 | |
about 2 years ago | 2 days ago | |
JavaScript | JavaScript | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
vanillaview
-
Show HN: Bang
Hello Humans of HN,
This is BANG! a new UI framework for JavaScript on the web. It comes out of work I did in 2014 (on a web component framework with v0 Shadow DOM) and in 2018 (on a pure view-as-a-function of state framework with JavaScript template tag functions, variously known as brutal.js, dumbass and now vanillaview or just VV).
This work unifies those two works, and combines the JavaScript templating and minimal DOM updates (diffs without VDOM, by using granular updating functions down even to the level of splicing text nodes and text in attribute values and names) of VV with the scoped-styles, and component organization of the original unnamed web component framework.
It also adds a few new things, such as fixing some bugs in VV that I didn't even know existed before I tried merging it with another framework, making the list-diffing capability of VV truly minimal (previously it would reprint the whole list if any item order changed, not only items inserted or deleted actually are), and adding support for something I'm very proud of..."custom self-closing tags."
You can't get self-closing custom tags in HTML, because you can't define them. HTML has a limited set (, ,
and the like), but their syntax has always been neat. And React picked up on this as a way to include a component in another. I really liked that syntax. In VV I simply used template slots and function calls to the included view function to include components, it worked. But I always wanted a neater syntax. I experimented with a parser at the time, and that worked, too. But the performance was slow, and I thought it made the code clunky.One day I had the realization I could use HTML comment nodes. They look, "kinda" like elements, and you can write them by omitting everything but the leading ``. This was what I needed. Hence "bang" (at least I think that's where the name comes from, I'm not even sure). So these "bang tags" are self-closing tags, that are automatically converted to regular custom elements. Allowing you to type less.
I build things to improve my developer experience. That's all important. Then you're more efficient, and effective and you enjoy doing it more. So I'm sharing it here because I want to contribute to you, too. Maybe it's something valuable for you, or maybe it gives you ideas. Either way, this framework is yours. It's an open-source permissive license, and yours to contribute to, or fork or whatever.
It's got bugs right now and the syntax is more limited than VV, but I like it better. I wanted something new, and I got it. By making this. I can always add the VV syntax I removed for performance and simplicity during the merge, back later. But I'm not sure if I will, not yet. If you want something more battle-tested take a look at VV[0], but note that some of the fixes I made to the merged-VV have not been included back in main. I'm sure I'm going to do that eventually, but not for a while yet probably. I'm too busy basking in the bliss that is BANG!. Hopefully it's your bliss too :P ;) xx
[0]: https://github.com/i5ik/vanillaview
- Show HN: Vanillaview – Easy to Use Views in JavaScript
-
Show HN: Imba – I have spent 7 years creating a programming language for the web
Wow you are clearly a genius. The syntax looks beautiful! This is great. I don't want to use it (the best tool for the job for me is one that fits my own mental models, my own mind, and this is not it) but you are a genius.
Also -- wow those Nordics are super productive programmers/coders/developers/open-sorcerers (Sindre Aarsaether & Sindre Sorhus & Linus Torvalds & ......) -- could it maybe have something to do with: The low GNI, the high HDI and the great weather for coding? (cold, blistery, bleak, focused, electrons-and-light universe is only outlet in a desolate landscape)?
PS - I use my own memoized DOM with minimal/granular updates in my own quirky framework (https://github.com/i5ik/vanillaview)
CONGRATULATIONS, SIR!
- VanillaView is a JavaScript library for building user interfaces
- i5ik/vanillaview VanillaView is a JavaScript library for building user interfaces.
- Show HN: VanillaView – easy to use views with vanilla JavaScript semantics
imba
-
Ask HN: What are some unpopular technologies you wish people knew more about?
Imba. The best web programming language ever made.
https://imba.io/
-
Portugal. The Man – Official Website Is a Google Sheets Document
I agree. I was looking for the same thing.
They’re not easy to create but side by side code/result demos like the ones I saw on https://imba.io/ make it very clear on what I’ll be getting into as a developer.
- Imba – The friendly full-stack language
- Clojure is a product design tool
- Fore – Declarative user interfaces in plain HTML
-
Framework for a frontend-only project?
You might get away with Svelte (not Sveltekit) here since it compiles down to javascript. Another fun framework to try out for this might be https://imba.io/, which also has an option to compile things down to pure HTML, CSS & JS (plus it’s very fun to work with).
-
Thoughts on Svelte
I've been using Svelte exclusively for the past 3 years or so. I love it and will keep using it as my main solution for interactivity. It's fast to use and execute, produces small apps, and it's extremely economical in how you express components.
The confusion the author expresses with $: reactive statements and store auto subscription with the $ are unwarranted IMO. It's really just a lack of familiarity but this kind of stuff becomes intuitive very quickly.
My criticism of Svelte is rather that they haven't gone deep enough into the compiler-based approach.
Would be great if there were something like .svelteStore files where you had all the automatic reactivity tracking without having to use a component. Or some kind of improvements into writing styles. With a compiler you can do anything you want and I think Svelte has been a bit timid, maybe to not scare people away.
For example Imba[1] also bet on a compiler-based approach (years before Svelte existed) and created their own language/framework/compiler. They have come up with amazing solutions to many problems. It's a shame they bet on Ruby aesthetics though and also that they aren't investing into marketing/docs.
Of course, one might argue that using a compiler is a bad idea for a number of reasons. And yeah of course there are objective issues to any approach, but you have to pick your poison. All in all, Svelte has made me tremendously productive compared to using other solutions for years (React, Vue, Mithril, Inferno, etc).
I will say though that I would rather use a solution that doesn't have any reactivity at all. Mithril and Imba have this concept of just "redrawing the whole thing" like a game GUI without having to worry about reactivity. Cognitively speaking, no reactivity is the best mental model IMO. With any reactive solution, it's very easy to fall into complex reactive dependencies which can be hard to track. The author of Imba has a video from 2018 where he talks about this[2].
[1] https://imba.io/
[2] https://www.youtube.com/watch?v=jwoApTLvRdQ
-
The Io Language
A code snippet showing a simple program right on the home page and "selling" whatever features makes it special would go a long way. It's quite off-putting to have to delve deep into a guide in order to get a feel for a language.
Some examples done right:
https://lfe.io
https://elixir-lang.org
https://imba.io
https://ocaml.org
-
Why do so many CS grads seem to look down on webdev?
At the same time, my heart is kind of in the web stuff and I find it a lot more exciting personally so it's hard for me to leave. You can do so much more with web tech and all the new ideas Tcoming from it and the pace it's developing is really . I just don't understand why React is becoming the standard when it's a complete nightmare compared to where we should be. I mean, this is literally insane, especially when things like Svelte exist - or even better, Imba. The day Imba becomes the standard is the day I love web dev again.
What are some alternatives?
pFreak - pFreak is a unit-level 2-in-1 JavaScript benchmarking and testing framework.
js-framework-benchmark - A comparison of the performance of a few popular javascript frameworks
_____ - 💎 Das Bang-Architektur-Rahmenwerk! ist eine Ansichtsbibliothek, die benutzerdefinierte Elemente für das neue Zeitalter druckt. Es enthält asynchrone Vorlagenwerte, JS-Vorlagensyntax, <!void-elements /> und minimale DOM-Aktualisierungen ohne virtuelles DOM. [Moved to: https://github.com/i5ik/das.bang.froomwerk]
React - The library for web and native user interfaces.
kotlinx.html - Kotlin DSL for HTML
Tailwind CSS - A utility-first CSS framework for rapid UI development.
coffeesense - IntelliSense for CoffeeScript. LSP implementation / VSCode extension
svelte-preprocess - A ✨ magical ✨ Svelte preprocessor with sensible defaults and support for: PostCSS, SCSS, Less, Stylus, Coffeescript, TypeScript, Pug and much more.
typescript-imba-plugin - Typescript Plugin for providing rich language functionality for Imba
coffeescript - Unfancy JavaScript
htmx - </> htmx - high power tools for HTML
TypeScript - TypeScript is a superset of JavaScript that compiles to clean JavaScript output.