clojurescript

Takis_ 2024-10-23T23:09:16.439949Z

Hello, for someone that wants to use JS libraries, using lisp syntax, what is better to use? for example i want to use react.js(not reagent etc) or express.js or next.js using clojurescript is better or using squint or something else , for this? to me squint looks like what i need.

respatialized 2024-10-23T23:39:10.648839Z

I have a client-side-only project that sounds similar - clojurescript felt like overkill and squint has served nicely to help glue JS libraries together.

p-himik 2024-10-24T05:25:43.830219Z

Specifically about React - in the JS world you usually write React code with JSX that requires a separate preprocessing steps to turn all those <div> into React.createElement("div", ...). So if you wan to use React with CLJS without any wrappers whatsoever, you will have to write code like that manually. IMO it's better to just use a wrapper. Maybe not Reagent, but UIx or Helix.

martinklepsch 2024-10-24T07:36:24.455549Z

Squint has JSX built in

martinklepsch 2024-10-24T07:36:46.566619Z

I think squint is a great option for what you’re describing. I use it with vite in a few projects and haven’t had any issues

Takis_ 2024-10-24T07:37:45.206469Z

this is too verbose React.createElement("div", ...) in general i would prefer to use JSX, yes i saw that squint has it, thank you

martinklepsch 2024-10-24T07:42:29.698199Z

you can also do sth like

(def $ react/createElement)

($ :div {:className „xyz“} ,,,)

martinklepsch 2024-10-24T07:43:19.522169Z

i did this in one project and it works quite well, you only need to watch out for omitting the attribute map, if omitted you will get an error

p-himik 2024-10-24T07:57:28.136469Z

You also need to convert keywords to strings and CLJS data structures to JS.

Takis_ 2024-10-24T08:17:36.317239Z

thank you i will try both, and see libraries that might help also

martinklepsch 2024-10-24T08:25:48.978779Z

@p-himik in squint you don’t need to convert keywords to strings as they’re all strings under the hood

👍 1
borkdude 2024-10-24T10:28:10.447429Z

@takis_ you can find an example squint react project here: https://github.com/squint-cljs/squint/tree/main/examples/vite-react Here's a playground demo with https://squint-cljs.github.io/squint/?repl=true&amp;src=KHJlcXVpcmUgJ1sicmVhY3QiIDphcyByZWFjdF0pCihyZXF1aXJlICdbInJlYWN0LWRvbSIgOmFzIHJkb21dKQoKKGRlZm9uY2UgY29tcG9uZW50LXN0YXRlIChhdG9tIDApKQoKKGRlZm4gQmFyIFt7OmtleXMgW2ZpcnN0bmFtZSBsYXN0bmFtZV0gOmFzIHByb3BzfV0KICAobGV0IFtbY2xpY2tzIHNldENsaWNrc10gKHJlYWN0L3VzZVN0YXRlIEBjb21wb25lbnQtc3RhdGUpXQogICAgI2pzeCBbOjw%2BCiAgICAgICAgICBbOnNwYW4gZmlyc3RuYW1lICIgIiBsYXN0bmFtZV0KICAgICAgICAgIFs6ZGl2ICJZb3UgY2xpY2tlZCAiIGNsaWNrcyAiIHRpbWVzISJdCiAgICAgICAgICBbOmJ1dHRvbiB7Om9uQ2xpY2sgIyhzZXRDbGlja3MgKHN3YXAhIGNvbXBvbmVudC1zdGF0ZSBpbmMpKX0KICAgICAgICAgICAiQ2xpY2sgbWUiXV0pKQoKKGRlZm4gRm9vIFtdCiAgI2pzeCBbOmRpdiAiSGVsbG8sICIKICAgICAgICAobGV0IFttIChhc3NvYyB7OmZpcnN0bmFtZSAiTWljaGllbCJ9IDpsYXN0bmFtZSAiQm9ya2VudCIpXQogICAgICAgICAgI2pzeCBbQmFyIHs6JiBtfV0pXSkKCihkZWZvbmNlIGVsdCAoZG90byAoanMvZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAiZGl2IikKICAgICAgICAgICAgICAgKGpzL2RvY3VtZW50LmJvZHkucHJlcGVuZCkpKQoKKGRlZiByb290IChyZG9tL2NyZWF0ZVJvb3QgZWx0KSkKCigucmVuZGVyIHJvb3QgI2pzeCBbRm9vXSk%3D and https://squint-cljs.github.io/squint/?repl=true&amp;jsx.import-source=https%3A%2F%2Fesm.sh%2Fpreact%4010.19.2&amp;src=KHJlcXVpcmUgJ1siaHR0cHM6Ly9lc20uc2gvcHJlYWN0QDEwLjE5LjIiIDphcyByZWFjdF0pCihyZXF1aXJlICdbImh0dHBzOi8vZXNtLnNoL3ByZWFjdEAxMC4xOS4yL2hvb2tzIiA6YXMgaG9va3NdKQoKKGRlZm9uY2UgY29tcG9uZW50LXN0YXRlIChhdG9tIDApKQoKKGRlZm4gQmFyIFt7OmtleXMgW2ZpcnN0bmFtZSBsYXN0bmFtZV0gOmFzIHByb3BzfV0KICAobGV0IFtbY2xpY2tzIHNldENsaWNrc10gKGhvb2tzL3VzZVN0YXRlIEBjb21wb25lbnQtc3RhdGUpXQogICAgI2pzeCBbOjw%2BCiAgICAgICAgICBbOnNwYW4gZmlyc3RuYW1lICIgIiBsYXN0bmFtZV0KICAgICAgICAgIFs6ZGl2ICJZb3UgY2xpY2tlZCAiIGNsaWNrcyAiIHRpbWVzISJdCiAgICAgICAgICBbOmJ1dHRvbiB7Om9uQ2xpY2sgIyhzZXRDbGlja3MgKHN3YXAhIGNvbXBvbmVudC1zdGF0ZSBpbmMpKX0KICAgICAgICAgICAiQ2xpY2sgbWUiXV0pKQoKKGRlZm4gRm9vIFtdCiAgI2pzeCBbOmRpdiAiSGVsbG8sICIKICAgICAgICAobGV0IFttIChhc3NvYyB7OmZpcnN0bmFtZSAiTWljaGllbCJ9IDpsYXN0bmFtZSAiQm9ya2VudCIpXQogICAgICAgICAgI2pzeCBbQmFyIHs6JiBtfV0pXSkKCihkZWZvbmNlIGVsdCAoZG90byAoanMvZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAiZGl2IikKICAgICAgICAgICAgICAgKGpzL2RvY3VtZW50LmJvZHkucHJlcGVuZCkpKQoKKHJlYWN0L3JlbmRlciAjanN4IFtGb29dIGVsdCk%3D

❤️ 3
m3tti 2024-10-24T11:29:21.390579Z

Imho squint is one of the easiest ways to get into clojurescript. Use the project you work on install squint start both watchers webpack, vite etc and squint and lets go.

m3tti 2024-10-24T11:30:04.734379Z

Like babashka for clojure install have fun. A lot of batteries included. Btw thanks for that @borkdude

🙇 3