I’m running a server-side-rendered web server using Actix Web. Any suggestions for a client? All I really need is something fast and that I can use without breaking my neck (don’t need any fancy VDOM, trying to ship minimal JS).

  • livingcoder@lemmy.austinwadeheller.com
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    1 year ago

    I’ve been using tide-jsx, but I’m also using tide (not actix). Everything renders to a String, so it would technically be compatible with any web framework.

    I would love to see what other people suggest for Actix since I wanted to use that instead of Tide, but I also didn’t know where to find a crate like tide-jsx. https://crates.io/crates/tide-jsx

    • heartlessevil@lemmy.one
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      Can’t beat askama. There are other Jinja-like templates but askama has best-in-class performance and compile time safety.

    • dukk@programming.devOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Is there any way to track values without a struct? Or in my specific case, I’m using a struct, but most of the values are in an Option<String>.

  • m e
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    You want an engine that does the hard work at compile time so it doesn’t need to do it at run time. It should parse the template in much the same way as println! does and generate code accordingly.

  • Thinker@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    My go to for static content is astro.js. It gives a really nice developer experience that is really just writing HTML but with the quality of life of reusable “components”, all with 0 JS by default.

    • dukk@programming.devOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 year ago

      Ultimately, I ended up using Astro, Rust was giving me too much pain for no tangible gain.

  • ShittyKopper [they/them]@lemmy.w.on-t.work
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I came here to ask a similar question so I may as well throw it into the comments of this one just to make sure I don’t end up cluttering the community.

    In my case though, I have a few extra requirements the existing answers can’t handle:

    1. It needs to be re-compiled/interpreted at runtime
    2. It should be able to handle reasonably untrustworthy input (not as in completely untrustworthy, but if someone makes a typo it shouldn’t end up escalating into a security issue)
    • dukk@programming.devOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I think all of these can be recompiled at runtime.

      Askama seems to be a popular and mature option here. Yew is also pretty popular here, uses a VDOM and provides a powerful front end (great for SPAs) I’m most likely going to go with tide-jsx, it’s like HTML but it supports Rust expressions thru a macro, which is exactly what I need. Liquid is also pretty secure, so that’s an option.

      Askama and Yew are pretty mature, so they probably have reasonable security. I would check their docs, however.

      • ShittyKopper [they/them]@lemmy.w.on-t.work
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 year ago

        Perhaps “recompilation” wasn’t the right word to use there.

        My goal is to let people customize the templates that will end up building the pages, either from the app itself or through a companion panel app of sorts. This excludes anything that compiles down to native code, so it must be something interpreted at runtime.

        • dukk@programming.devOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          1 year ago

          Maybe just store the template in a file, read it, and format with the strfmt library?