Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Html dinamico in javascript, consigli su librerie

    ciao!

    mi hanno commissionato di scrivere alcune pagine in html in cui popolare alcune parti prendendo dei dati da una api.
    i dati mi arrivano in formato json.
    con fetch recupero i dati, ma poi come li rendo nella pagina?
    vorrei evitare di scrivere tutto il codice html dentro il file js.

    ho visto che ci stanno svariati template engine, tipo mustache, ma tutti sostanzialmente consigliati in ambito node.js.
    io invece devo scrivere dei semplici html con javascript plain.

    ovviamente non posso usare angular/react o cose del genere.

    voi cosa mi consigliate??

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Io darei un'occhiata ad Alpine.js oppure htmx: sono perfetti per questo tipo di impieghi.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ciao!

    grazie alka, penso che addirittura li avevo testati tempo fa, ma li avevo rimossi.
    faccio qualche test e ti aggiorno!

  4. #4
    ciao!

    mi sono trovato meglio con alpine.js.
    ho avuto un attimo di difficoltà a capire il funzionamento generale, ma mi sembra che ci sono.

    vi lascio un esempio per i posteri:
    codice:
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta charset="UTF-8">
        <title>TEST</title>
        <link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
    
    
        <script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
      </head>
    
    
      <body>
        <div x-data="{ title: setHeader() }">
          <div x-html="title"></div>
        </div>
    
    
        <hr>
    
    
        <div x-data="initData()" x-init="getData()">
          USERS LIST
          <ul>
            <template x-for="item in items" :key="item.id">
              <li>
                <span class="" x-text="item.titolo"></span>
              </li>
            </template>
          </ul>
        </div>
    
    
        <script>
          function setHeader() {
            return '<h1>HEADER</h1>';
          }
    
    
          function initData() {
            const url = "https://www.mattepuffo.com/api/blog/articoli/get.php?last=10";
            return {
              isLoading: false,
              items: [],
              getData() {
                this.isLoading = true;
                fetch(url)
                    .then((response) => response.json())
                    .then((data) => {
                      this.items = data.articoli;
                      this.isLoading = false;
                    });
              }
            }
          }
        </script>
    
    
      </body>
    
    
    </html>

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Quote Originariamente inviata da fermat Visualizza il messaggio
    mi sono trovato meglio con alpine.js.
    ho avuto un attimo di difficoltà a capire il funzionamento generale, ma mi sembra che ci sono.
    Pure io apprezzo molto il buon Alpine.js.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Quote Originariamente inviata da alka Visualizza il messaggio
    Pure io apprezzo molto il buon Alpine.js.
    si concordo, lo sto apprezzando.
    così su due piedi non so se lo userei anche per grossi progetti al posto di angular o react.
    ma per quello che ci devo fare ora è perfetto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.