vanillaview
kotlinx.html
vanillaview | kotlinx.html | |
---|---|---|
6 | 11 | |
12 | 1,550 | |
- | 0.6% | |
0.0 | 7.4 | |
about 2 years ago | about 1 month ago | |
JavaScript | Kotlin | |
MIT License | Apache License 2.0 |
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
kotlinx.html
-
How to use htmx with ktor
1 Clone this repo https://github.com/tom-delalande/html-to-kotlin-converter and open in intellij 2 In the root of that project folder, create input.txt and add the component/html that you want to convert (feel free to pick a component from tailwind), run main in that project and it'll be converted to kotlin ktor html DSL in output.txt (basically, that's the readme of that project lol) 3 in your ktor project (make sure you already added ktor-html from kotlin team), respond to a route like so
-
Dart 3 will be on pair with Kotlin and other top languages (you can see more features in the proposal)
As for the strange infix syntax, you're correct - it's not important (for Dart anyway). Kotlin supports writing code that have DSL like syntax making things like typesafe HTML or Jetpack Compose possible.
- I taught the chat bot an alternative syntax for HTML, called HBML, basically just braces instead of tags... we are so screwed
-
"A New Programming Metric": my attempt to come up with a better way of handling the "how good are you at a programming language" question.
I'm not familiar with JavaEE/JSP so I cannot really answer that, why do these technologies need a special IDE? Does JSP even make sense with Kotlin? If I was stuck with JSP I'd probably use Java since that's what JSP was made for. Kotlin has other solutions like https://github.com/Kotlin/kotlinx.html
-
Create any kind of app with Kotlin
Html DSL in Kotlin. See it on Github.
-
How do you imoprt custom fonts in Kotlin/JS?
If so, and if they don't provide an easy way to set a font family list, you may have to escape into a raw block: https://github.com/Kotlin/kotlinx.html/wiki/Style-and-script-tags
-
Building a DOM DSL in Kotiln
You might like to leave a comment here, someone requested svg support in the Kotlin HTML dsl https://github.com/Kotlin/kotlinx.html/issues/144
- Is there an equivalent for Compose Web for server side Kotlin apps?
-
Show HN: Imba – I have spent 7 years creating a programming language for the web
Thanks for sharing, I really like projects like this. And the website is really informative.
I find it less of a new language and more of a JS preprocessor, removing lots of the cruft and integrating XML-tags and CSS in a very neat way.
What I miss:
1) I feel the web is shifting to more type checking. TS, Elm, Kotlin.js... I personally also prefer more typesafety, especially if the project grows in LOC/team size.
2) Compared to JSX, Imba does a much better job in integrating adjacent technologies. Though I much prefer these to be integrated in an eDSL fashion. For example how Elm does HTML templating (in Elm) or Kotlinx.html[1].
Just taste i guess. Good luck with yr project!
[1]: https://github.com/Kotlin/kotlinx.html
-
Kotlin Team AMA #3: Ask Us Anything
I do use kotlinx.html and while there is a lack of the documentation about the tags, most of them are already implemented (as far as I know they are automatically generated) and the ones that aren't automatically generated can be implemented manually in your own project.
What are some alternatives?
pFreak - pFreak is a unit-level 2-in-1 JavaScript benchmarking and testing framework.
http4k - The Functional toolkit for Kotlin HTTP applications. http4k provides a simple and uniform way to serve, consume, and test HTTP services.
_____ - 💎 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]
vertx-lang-kotlin - Vert.x for Kotlin
coffeesense - IntelliSense for CoffeeScript. LSP implementation / VSCode extension
ktor - Framework for quickly creating connected applications in Kotlin with minimal effort
typescript-imba-plugin - Typescript Plugin for providing rich language functionality for Imba
spark-kotlin - A Spark DSL in idiomatic kotlin // dependency: com.sparkjava:spark-kotlin:1.0.0-alpha
javalin - A simple and modern Java and Kotlin web framework [Moved to: https://github.com/javalin/javalin]
kotlinx.serialization - Kotlin multiplatform / multi-format serialization
Firefly - Firefly is an asynchronous web framework for rapid development of high-performance web application.
apollo-android - :robot: A strongly-typed, caching GraphQL client for the JVM, Android, and Kotlin multiplatform.