Cos'è l'EJS e perché ne ho bisogno?

Cos'è l'EJS e perché ne ho bisogno?

Nello sviluppo web, ci sono molti strumenti a disposizione degli sviluppatori tra cui scegliere. La scelta degli strumenti e delle tecnologie giuste può avere un impatto significativo sull’efficienza e sulla funzionalità dei progetti. Uno degli strumenti più popolari nello sviluppo web è EJS, che sta per Embedded JavaScript . EJS è un semplice linguaggio di template JavaScript che genera HTML con semplice JavaScript. In questo articolo tratteremo cos'è EJS, perché è necessario, le sue funzionalità, come installarlo e forniremo un esempio con l'output.

Cos'è l'EJS

EJS o Embedded JavaScript è un motore di modelli per JavaScript utilizzato per lo sviluppo web che consente agli utenti di generare markup HTML dinamico utilizzando il codice JavaScript all'interno dei modelli HTML. È progettato per semplificare il processo di rendering di contenuti dinamici nelle applicazioni web. Contiene una combinazione di HTML e JavaScript che semplifica la generazione di contenuti dinamici basati sui dati della tua applicazione.

Caratteristiche dell'EJS

  • Sintassi semplice: EJS offre una sintassi semplice che combina HTML e JavaScript, facilitandone l'apprendimento e l'utilizzo.
  • Contenuto dinamico: EJS consente la generazione dinamica di contenuti HTML e JavaScript all'interno dei tag HTML, migliorando la flessibilità nella creazione di contenuti.
  • Layout e parziali: EJS supporta layout e partial, consentendo agli utenti di suddividere i modelli in componenti riutilizzabili, riducendo la duplicazione del codice e migliorando la manutenibilità.
  • Gestione degli errori: EJS fornisce messaggi di errore che aiutano gli sviluppatori nel debug, migliorando l'esperienza di sviluppo complessiva.

Perché hai bisogno di EJS?

  • Generazione HTML dinamico: EJS ti consente di generare contenuto HTML dinamico basato su variabili, condizioni, loop e altra logica JavaScript. Ciò è particolarmente utile per il rendering di dati dinamici recuperati da database o API.
  • Riutilizzabilità del codice: Utilizzando i modelli EJS, è possibile creare componenti o partial riutilizzabili che possono essere inclusi in più pagine. Ciò promuove la modularità del codice e riduce la duplicazione nelle applicazioni web.
  • Rendering lato server: Con EJS è possibile eseguire il rendering lato server (SSR) delle pagine Web. SSR è vantaggioso per la SEO (Search Engine Optimization) in quanto consente ai motori di ricerca di eseguire la scansione e indicizzare i tuoi contenuti in modo più efficace rispetto al rendering lato client (CSR) eseguito da framework come React o Angular.
  • Facile integrazione con Node.js ed Express.js: EJS si integra perfettamente con Node.js ed Express.js, rendendolo una scelta popolare per gli sviluppatori che lavorano su applicazioni JavaScript lato server. È facile da configurare e utilizzare all'interno di un progetto Express.js.
  • Sintassi familiare: Se hai già familiarità con HTML e JavaScript, imparare e utilizzare EJS è semplice. La sintassi è simile all'HTML con codice JavaScript incorporato racchiuso > tag, rendendolo accessibile a sviluppatori con diversi livelli di abilità.
  • Ereditarietà e layout dei modelli: EJS supporta l'ereditarietà e i layout dei modelli, consentendoti di creare layout coerenti per le tue pagine web. Puoi definire un layout di base ed estenderlo in altri modelli, semplificando il mantenimento di un aspetto coerente in tutta l'applicazione.

Come utilizzare EJS?

Passo 1: Installa EJS come dipendenza nel tuo progetto

 npm install ejs 

Passo 2: Crea una cartella 'views' nella directory del tuo progetto se non esiste già. All'interno della cartella views, crea un nuovo file con estensione .ejs, ad esempio index.ejs

Passaggio 3: Per integrare EJS con Express in un'applicazione Express.js, imposta EJS come motore di visualizzazione nella configurazione dell'app Express. Questa configurazione consente a Express di utilizzare EJS per il rendering delle viste.

app.set('view engine', 'ejs'); 

Passaggio 4: Rendering del modello EJS, nei gestori del percorso Express eseguiamo il rendering del modello EJS utilizzando ‘res.render()’ e fornire i dati necessari da passare al modello.

res.render('hello', { name: 'Geeks' }); 

Struttura del progetto:

directory_progetto

Le dipendenze aggiornate in pacchetto.json il file sarà simile a:

'dependencies': {  'ejs': '^3.1.9',  'express': '^4.18.2'  } 

Esempio: Implementazione per mostrare l'uso di ej con un esempio.

HTML
          Titolo di esempio EJS> head> <body>  <h1>Ciao, <%= name %>!h1> corpo> html> </pre>  </code>JavaScript <code>  <pre>// index.js  const express = require('express'); const app = express(); const port = 3000; app.set('view engine', 'ejs'); app.get('/', (req, res) =>{ res.render('ciao', { nome: 'Geeks' }); }); app.listen(port, () => { console.log(`Il server è in esecuzione su http://localhost:${port}`); }); </pre>  </code>  <p dir='ltr'>  <b>  <strong>Passaggio per eseguire l'applicazione: </strong>  </b>  <span>Esegui l'applicazione utilizzando il comando seguente dalla directory root del progetto </span> </p>  <pre>node index.js </pre> <p dir='ltr'>  <b>  <strong>Produzione: </strong>  </b>  <span>Il tuo progetto verrà mostrato nell'URL http://localhost:3000/ </span> </p>  <p dir='ltr'> <img src='//techcodeview.com/img/ejs-templating-language/39/what-is-ejs-why-do-i-need-it-2.webp' alt='produzione'> </p>  <br>  <br>
                     </div>

                     <!-- Article Footer with Prominent Share Buttons -->
                     <div class="px-6 md:px-8 py-8 bg-slate-50 dark:bg-slate-900/50 border-t border-slate-200 dark:border-slate-700/50">
                          <div class="flex flex-col sm:flex-row items-center justify-between gap-6">
                              <h4 class="text-base font-bold text-slate-700 dark:text-slate-300 uppercase tracking-wide flex items-center gap-2">
                                 <i class="fa fa-share-alt text-tech-500"> </i>
                                Condividere                              </h4>
                             
                              <div class="flex flex-wrap justify-center gap-3">
                                 <!-- Twitter -->
                                 <a href="https://twitter.com/intent/tweet?text=Cos'è l'EJS e perché ne ho bisogno?&url=https://www.techcodeview.com/it/what-is-ejs-why-do-i-need-it" 
                                   target="_blank" rel="noopener noreferrer" 
                                   class="flex items-center gap-2 px-6 py-3 rounded-xl bg-[#1DA1F2]/10 text-[#1DA1F2] hover:bg-[#1DA1F2] hover:text-white transition-all duration-300 font-bold text-sm">
                                     <i class="fa fa-twitter text-lg"> </i>
                                     <span class="hidden sm:inline">Twitter </span>
                                 </a>

                                 <!-- Facebook -->
                                 <a href="https://www.facebook.com/sharer/sharer.php?u=https://www.techcodeview.com/it/what-is-ejs-why-do-i-need-it" 
                                   target="_blank" rel="noopener noreferrer"
                                   class="flex items-center gap-2 px-6 py-3 rounded-xl bg-[#4267B2]/10 text-[#4267B2] hover:bg-[#4267B2] hover:text-white transition-all duration-300 font-bold text-sm">
                                     <i class="fa fa-facebook text-lg"> </i>
                                     <span class="hidden sm:inline">Facebook </span>
                                 </a>
                                
                                 <!-- LinkedIn -->
                                 <a href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.techcodeview.com/it/what-is-ejs-why-do-i-need-it&title=Cos'è l'EJS e perché ne ho bisogno?" 
                                   target="_blank" rel="noopener noreferrer"
                                   class="flex items-center gap-2 px-6 py-3 rounded-xl bg-[#0077b5]/10 text-[#0077b5] hover:bg-[#0077b5] hover:text-white transition-all duration-300 font-bold text-sm">
                                     <i class="fa fa-linkedin text-lg"> </i>
                                     <span class="hidden sm:inline">LinkedIn </span>
                                 </a>
                              </div>
                          </div>
                     </div>
                </article>

                <!-- Comments Placeholder / Random Articles -->
                <div class="mt-8 bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl p-6 md:p-8 shadow-sm">
                     <h3 class="text-xl font-bold text-slate-900 dark:text-white mb-6 uppercase tracking-wide border-b border-slate-200 dark:border-slate-700 pb-2">
                        Potrebbe Piacerti                     </h3>
                     <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
                         <div class="group">
                              <a href="/it/explained-what-is-pok-mon-go-24260" class="block aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3">
                                 <img loading="lazy" src="https://techcodeview.com/img/get-informed/04/explained-what-is-pok-mon-go.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Spiegato: cos'è Pokémon Go?" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                              </a>
                              <h4 class="font-bold text-slate-900 dark:text-white leading-tight group-hover:text-tech-500 transition-colors">
                                 <a href="/it/explained-what-is-pok-mon-go-24260">Spiegato: cos'è Pokémon Go? </a>
                              </h4>
                         </div> <div class="group">
                              <a href="/it/declaring-an-array-python" class="block aspect-video rounded-lg overflow-hidden bg-slate-200 dark:bg-slate-700 mb-3">
                                 <img loading="lazy" src="https://techcodeview.com/img/picked/30/declaring-an-array-python.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Dichiarazione di un array in Python" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                              </a>
                              <h4 class="font-bold text-slate-900 dark:text-white leading-tight group-hover:text-tech-500 transition-colors">
                                 <a href="/it/declaring-an-array-python">Dichiarazione di un array in Python </a>
                              </h4>
                         </div>
                     </div>
                </div>
             </div>

             <!-- SECONDARY COLUMN (SIDEBAR) -->
             <!-- Aside Column -->
 <div class="lg:col-span-4 space-y-8">
	
	 <!-- Best Articles Widget -->
	 <div class="rounded-xl bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 p-6 shadow-sm">
		 <div class="mb-4 border-b border-slate-100 dark:border-slate-700 pb-2">
			 <h2 class="text-lg font-bold text-slate-900 dark:text-white uppercase tracking-wide flex items-center">
                 <span class="mr-2 h-2 w-2 rounded-full bg-tech-500"> </span>
                Articoli Più             </h2>
		 </div>
		
		 <!-- Owl Carousel Preserved Container -->
		 <div id="owl-carousel-3" class="owl-carousel owl-theme center-owl-nav">
			 <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/radius-circle">
						 <img src="https://techcodeview.com/img/circles/70/radius-circle.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Raggio del cerchio" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/radius-circle" class="hover:text-tech-500 transition-colors line-clamp-3">Raggio del cerchio </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/ap-physics-c-equation-sheet-131338">
						 <img src="https://techcodeview.com/img/blog/69/ap-physics-c-equation-sheet.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Foglio delle equazioni AP Physics C: cosa contiene e come utilizzarlo" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/ap-physics-c-equation-sheet-131338" class="hover:text-tech-500 transition-colors line-clamp-3">Foglio delle equazioni AP Physics C: cosa contiene e come utilizzarlo </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/mysql-add-delete-column">
						 <img src="https://techcodeview.com/img/mysql-tutorial/72/mysql-add-delete-column.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Colonna Aggiungi/Elimina MySQL" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/mysql-add-delete-column" class="hover:text-tech-500 transition-colors line-clamp-3">Colonna Aggiungi/Elimina MySQL </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/candidate-key-dbms">
						 <img src="https://techcodeview.com/img/dbms-tutorial/31/candidate-key-dbms.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Chiave del candidato nel DBMS" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/candidate-key-dbms" class="hover:text-tech-500 transition-colors line-clamp-3">Chiave del candidato nel DBMS </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/python-web-scraping-tutorial">
						 <img src="https://techcodeview.com/img/web-scraping/92/python-web-scraping-tutorial.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Tutorial sul web scraping Python" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/python-web-scraping-tutorial" class="hover:text-tech-500 transition-colors line-clamp-3">Tutorial sul web scraping Python </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/how-set-classpath-java">
						 <img src="https://techcodeview.com/img/java-tutorial/05/how-set-classpath-java.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Come impostare CLASSPATH in Java" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/how-set-classpath-java" class="hover:text-tech-500 transition-colors line-clamp-3">Come impostare CLASSPATH in Java </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/what-is-boot-sequence">
						 <img src="https://techcodeview.com/img/computer/74/what-is-boot-sequence.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Cos'è una sequenza di avvio?" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/what-is-boot-sequence" class="hover:text-tech-500 transition-colors line-clamp-3">Cos'è una sequenza di avvio? </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/examples-rhombus-real-life">
						 <img src="https://techcodeview.com/img/picked/02/examples-rhombus-real-life.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Esempi di rombo nella vita reale" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/examples-rhombus-real-life" class="hover:text-tech-500 transition-colors line-clamp-3">Esempi di rombo nella vita reale </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/difference-between-till">
						 <img src="https://techcodeview.com/img/differences/02/difference-between-till.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Differenza tra fino e fino a quando" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/difference-between-till" class="hover:text-tech-500 transition-colors line-clamp-3">Differenza tra fino e fino a quando </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE --> <!-- ARTICLE -->
			 <article class="flex items-start gap-4 p-2 hover:bg-slate-50 dark:hover:bg-slate-700/50 rounded-lg transition-colors">
				 <div class="w-20 h-20 shrink-0 overflow-hidden rounded-md bg-slate-200 dark:bg-slate-700">
					 <a href="/it/memory-management-java">
						 <img src="https://techcodeview.com/img/java-misc/33/memory-management-java.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Gestione della memoria in Java" class="w-full h-full object-cover">
					 </a>
				 </div>
				 <div class="flex-1 min-w-0">
					 <h4 class="text-sm font-semibold text-slate-800 dark:text-slate-200 leading-snug">
                         <a href="/it/memory-management-java" class="hover:text-tech-500 transition-colors line-clamp-3">Gestione della memoria in Java </a>
                     </h4>
				 </div>
			 </article>
			 <!-- /ARTICLE -->
		 </div>
		

         <!-- Categories -->
		 <div class="mt-8 mb-4 border-b border-slate-100 dark:border-slate-700 pb-2">
			 <h2 class="text-lg font-bold text-slate-900 dark:text-white uppercase tracking-wide">Categoria </h2>
		 </div>
		 <div class="flex flex-wrap gap-2">
             <a href="/it/blog/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                Blog
             </a> <a href="/it/java-conversion/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                Conversione Java
             </a> <a href="/it/maths/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                Matematica
             </a> <a href="/it/java-collections/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                Collezioni Java
             </a> <a href="/it/differences/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                Differenze
             </a> <a href="/it/java-string/" class="inline-block px-3 py-1 bg-slate-100 dark:bg-slate-700 text-xs font-medium text-slate-600 dark:text-slate-300 rounded-full hover:bg-tech-500 hover:text-white transition-colors">
                Stringa Java
             </a>
         </div>

         <!-- Interesting Articles Widget -->
		 <div class="mt-8">
			 <div class="mb-4 border-b border-slate-100 dark:border-slate-700 pb-2">
				 <h2 class="text-lg font-bold text-slate-900 dark:text-white uppercase tracking-wide">Articoli Interessanti </h2>
			 </div>
			
			 <div id="owl-carousel-4" class="owl-carousel owl-theme">
				 <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/geeks-premier-league-2023/03/how-add-user-group-linux.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Come aggiungere un utente a un gruppo in Linux" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/it/geeks-premier-league-2023-cat/">Geek Premier League 2023 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/it/how-add-user-group-linux">Come aggiungere un utente a un gruppo in Linux </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/it-problems-solutions/40/25-basic-linux-commands.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="25 comandi di base di Linux per principianti" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/it/it-problems-solutions/">Problemi E Soluzioni Informatiche </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/it/25-basic-linux-commands">25 comandi di base di Linux per principianti </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/it-problems-solutions/72/jdk-java.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="JDK in Giava" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/it/it-problems-solutions/">Problemi E Soluzioni Informatiche </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/it/jdk-java">JDK in Giava </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/maths-class-12/46/lagrange-interpolation-formula.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Formula di interpolazione di Lagrange" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/it/maths-class-12-cat/">Matematica-Class-12 </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/it/lagrange-interpolation-formula">Formula di interpolazione di Lagrange </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/blog/99/photosynthesis-equation.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Equazione della fotosintesi: che cos'è? Come funziona?" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/it/blog/">Blog </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/it/photosynthesis-equation-131108">Equazione della fotosintesi: che cos'è? Come funziona? </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE --> <!-- ARTICLE -->
				 <article class="relative aspect-video rounded-lg overflow-hidden group mb-2">
					 <div class="absolute inset-0">
						 <img src="https://techcodeview.com/img/ds-tutorial/01/height-binary-tree.webp" onerror="this.onerror=null; this.src='https://techcodeview.com/template/assets/images/unnamed.webp'" alt="Altezza dell'albero binario" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
                         <div class="absolute inset-0 bg-gradient-to-t from-black/80 to-transparent"> </div>
					 </div>
					 <div class="absolute bottom-0 left-0 p-4">
						 <div class="text-xs text-tech-400 font-bold mb-1"> <a href="/it/ds-tutorial/">Tutorial Ds </a> </div>
						 <h4 class="text-sm font-bold text-white leading-tight"> <a href="/it/height-binary-tree">Altezza dell'albero binario </a> </h4>
					 </div>
				 </article>
				 <!-- /ARTICLE -->
			 </div>
		 </div>
	 </div>
 </div>
 <!-- /Aside Column -->         </div>
        </div>
     </div>

 <footer class="site-footer">
         <div class="container">
             <span class="footer-links">
                Copyright ©2026 Tutti I Diritti Riservati | 
                 <a href="//www.techcodeview.com/fi/">techcodeview.com </a> | 
                 <a href="/disclaimer" rel="nofollow noopener noreferrer" target="_blank">Disclaimer </a> | 
                 <a href="/about-us" rel="nofollow noopener noreferrer" target="_blank">Chi Siamo </a> | 
                 <a href="/privacy-policy" rel="nofollow noopener noreferrer" target="_blank">Politica Sulla Riservatezza </a> 
             </span>
         </div>
     </footer>
 
     <script type="text/javascript" src="https://techcodeview.com/template/assets/plugins/jquery-1.11.3.min.js"> </script>
     <script type="text/javascript" src="https://techcodeview.com/template/assets/plugins/bootstrap/js/bootstrap.min.js"> </script>    
     <script type="text/javascript" src="https://techcodeview.com/template/assets/js/main.js"> </script>     
	 <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.5.1/highlight.min.js"> </script>
	 <script>
    !function(){"use strict";let t=document.createElement("button");t.id="toTopBtn",t.innerHTML="↑";let e=`
        #toTopBtn {
            position: fixed; bottom: 25px; right: 25px; z-index: 9999; opacity: 0; visibility: hidden; background-color: #0ea5e9; color: white; border: none; border-radius: 8px; width: 50px; height: 50px; font-size: 24px; cursor: pointer; transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
        }
        #toTopBtn:hover { background-color: #0284c7; }
    `,i=document.createElement("style");i.type="text/css",i.innerText=e,document.head.appendChild(i),document.body.appendChild(t),window.addEventListener("scroll",()=>{let e=window.scrollY||document.documentElement.scrollTop;e>300?(t.style.opacity="1",t.style.visibility="visible"):(t.style.opacity="0",t.style.visibility="hidden")}),t.addEventListener("click",()=>{window.scrollTo({top:0,behavior:"smooth"})})}();
     </script>
 </body>
 </html>