<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web Archivi - RD Tech</title>
	<atom:link href="https://www.rdtech.it/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.rdtech.it/category/web/</link>
	<description>Ricerca e Sviluppo messi a disposizione delle Imprese Italiane</description>
	<lastBuildDate>Wed, 09 Apr 2025 13:09:12 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Le novità di Angular 17</title>
		<link>https://www.rdtech.it/novita-angular-17/</link>
					<comments>https://www.rdtech.it/novita-angular-17/#respond</comments>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 13 Nov 2023 16:39:11 +0000</pubDate>
				<category><![CDATA[Angular]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[Novità]]></category>
		<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[Web]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1912</guid>

					<description><![CDATA[<p>Angular si è rinnovato con un sito completamente nuovo ed un insieme di funzionalità che danno una ventata d&#8217;aria fresca al framework, sia dal punto di vista di Developer Experience che di User Experience. In questo articolo vedremo alcuni tra i principali cambiamenti. Angular Signals Signals è un sistema che permette ad Angular di gestire uno stato applicativo in maniera granulare.&#160; Questo sistema reattivo di gestione dello stato permette al change detector di ottimizzare la re-renderizzazione dei componenti coinvolti, permettendo allo sviluppatore di massimizzare le performances dei componenti che sviluppa. Un signal è un wrapper che rende &#8220;osservabile&#8221;&#160;un attributo di…</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/novita-angular-17/">Le novità di Angular 17</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1912" class="elementor elementor-1912">
									<main class="elementor-section elementor-top-section elementor-element elementor-element-cedf3fc ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="cedf3fc" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-93e4dd4" data-id="93e4dd4" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-8c175f3 elementor-widget elementor-widget-text-editor" data-id="8c175f3" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}</style>				<p>Angular si è rinnovato con <a href="https://angular.dev/">un sito completamente nuovo</a> ed un insieme di funzionalità che danno una ventata d&#8217;aria fresca al framework, sia dal punto di vista di Developer Experience che di User Experience.</p><p>In questo articolo vedremo alcuni tra i principali cambiamenti.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-de597b6 elementor-widget elementor-widget-heading" data-id="de597b6" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}</style><h2 class="elementor-heading-title elementor-size-default">Angular Signals</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-3c6b36a elementor-widget elementor-widget-text-editor" data-id="3c6b36a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Signals è un sistema che permette ad Angular di gestire uno stato applicativo in maniera granulare. <br />Questo sistema reattivo di gestione dello stato permette al change detector di ottimizzare la re-renderizzazione dei componenti coinvolti, permettendo allo sviluppatore di massimizzare le performances dei componenti che sviluppa.</p><p>Un signal è un wrapper che rende <a href="https://www.google.it/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=&amp;cad=rja&amp;uact=8&amp;ved=2ahUKEwjVzuvRisGCAxUNhP0HHTz8BpMQFnoECBIQAw&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FObserver_pattern%23%3A~%3Atext%3DThe%2520observer%2520design%2520pattern%2520is%2C%252C%2520change%252C%2520test%2520and%2520reuse.&amp;usg=AOvVaw0CPdsmiZCtU8Ieqf7LxIQn&amp;opi=89978449">&#8220;osservabile&#8221;</a> un attributo di classe.</p><p><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">L&#8217;API di Signals rende il </span><a style="font-size: inherit; text-align: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);" href="https://en.wikipedia.org/wiki/Reactive_programming">paradigma di programmazione reattiva</a><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);"> più semplice da applicare grazie alla sua API minimale:</span></p>						</div>
				</div>
				<div class="elementor-element elementor-element-1ea20a6 elementor-widget elementor-widget-code-highlight" data-id="1ea20a6" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-typescript line-numbers">
				<code readonly="true" class="language-typescript">
					<xmp>@Component({
  selector: 'my-app',
  standalone: true,
  template: `
    {{ fullName() }} <button (click)="setName('John')">Click</button>
  `,
})
export class App {
  firstName = signal('Jane');
  lastName = signal('Doe');
  fullName = computed(() => `${this.firstName()} ${this.lastName()}`);

  constructor() {
    effect(() => console.log('Name changed:', this.fullName()));
  }

  setName(newName: string) {
    this.firstName.set(newName);
  }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-dfdb743 elementor-widget elementor-widget-text-editor" data-id="dfdb743" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per creare un Signal, è sufficiente dichiarare un attributo di classe assegnandogli un valore iniziale &#8220;wrappato&#8221; dalla funzione <code>signal</code> .</p><p>Per leggere il valore corrente di un Signal si invoca l&#8217;attributo di classe come funzione.</p><p>Per modificare il valore di un Signal bisogna passare il nuovo valore coma argomento del metodo <code>set</code> . Il Change Detector di Angular verrà così segnalato e provvederà a notificare tutti gli osservatori, nel nostro caso l&#8217;aggiornamento del template e dell&#8217;attributo <code>computed</code>.</p><p>Per &#8220;reagire&#8221; ai cambiamenti di valore di un Signal, si usa <code>effect</code>, una funzione che accetta una callback come argomento, e la invoca ad ogni cambiamento di stato.</p><p>Un Signal può essere di diversa natura: read-only, scrivibile, composto ecc. Grazie a dei metodi di utilità, un Signal è compatibile con gli Observables della libreria <code>rxjs</code> . Per approfondimenti lasciamo il <a href="https://angular.dev/guide/signals">link alla documentazione dedicata</a> e al nostro <a href="https://www.rdtech.it/contatti/">form di contatto.</a></p><p> </p>						</div>
				</div>
				<div class="elementor-element elementor-element-e6088c1 elementor-widget elementor-widget-spacer" data-id="e6088c1" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
			<style>/*! elementor - v3.12.0 - 29-03-2023 */
.elementor-column .elementor-spacer-inner{height:var(--spacer-size)}.e-con{--container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(--container-widget-width,var(--spacer-size));--align-self:var(--container-widget-align-self,initial);--flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(--container-widget-height,var(--spacer-size))}</style>		<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-94684ba elementor-widget elementor-widget-heading" data-id="94684ba" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Control flow (Developer Preview)</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-16d289b elementor-widget elementor-widget-text-editor" data-id="16d289b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>I template Angular supportano il &#8220;control flow&#8221; come alternativa alle direttive <code>ngIf</code>, <code>ngFor.</code></p><p>Un esempio:</p>						</div>
				</div>
				<section class="elementor-section elementor-inner-section elementor-element elementor-element-d6d16c6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="d6d16c6" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-d9da2e7" data-id="d9da2e7" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-5866475 elementor-widget elementor-widget-heading" data-id="5866475" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Control flow</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-1e76ecb elementor-widget elementor-widget-code-highlight" data-id="1e76ecb" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>@Component({
  selector: 'app-root',
  standalone: true,
  template: `
    <h2>Todos</h2>
    <input #text />
    <button (click)="add(text.value)">Add</button>

    @for (todo of todos; track $index) {
    <p>
      <input type="checkbox" (change)="toggle($index)" />
      @if (todo.done) {
      <s>{{ todo.text }}</s>
      } @else {
      <span>{{ todo.text }}</span>
      }
    </p>
    } @empty {
    <p>No todos</p>
    }
  `,
})
export class TodosComponent {
  todos: Array<{done: boolean; text: string}> = [];

  add(text: string) {
    this.todos.push({text, done: false});
  }

  toggle(index: number) {
    this.todos[index].done = !this.todos[index].done;
  }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
					</div>
		</div>
				<div class="elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-a5f4db5" data-id="a5f4db5" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-d514fd2 elementor-widget elementor-widget-heading" data-id="d514fd2" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h3 class="elementor-heading-title elementor-size-default">Common Module</h3>		</div>
				</div>
				<div class="elementor-element elementor-element-d078fbd elementor-widget elementor-widget-code-highlight" data-id="d078fbd" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>@Component({
  selector: 'app-root',
  standalone: true,
  imports: [CommonModule],
  template: `
    <h2>Todos</h2>
    <input #text />
    <button (click)="add(text.value)">Add</button>
    <div *ngIf="todos.length; else empty"></div>
    <p *ngFor="let todo of todos; let index = index">
      <input type="checkbox" (change)="toggle(index)" />
      <s *ngIf="todo.done; else pending">{{ todo.text }}</s>
      <ng-template #pending>
        <span>{{ todo.text }}</span>
      </ng-template>
    </p>
    <ng-template #empty>
      <p>No todos</p>
    </ng-template>
  `,
})
export class TodosComponent {
  todos: Array<{ done: boolean; text: string }> = [];

  add(text: string) {
    this.todos.push({ text, done: false });
  }

  toggle(index: number) {
    this.todos[index].done = !this.todos[index].done;
  }
}
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
					</div>
		</div>
							</div>
		</section>
				<div class="elementor-element elementor-element-1ff106e elementor-widget elementor-widget-spacer" data-id="1ff106e" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-4715064 elementor-widget elementor-widget-heading" data-id="4715064" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Hydration SSR</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-ef107ea elementor-widget elementor-widget-text-editor" data-id="ef107ea" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Angular è cambiato anche nella gestione dello stato in Server Side Rendering: dopo che il client riceve l&#8217;FCP e il bundle js, non viene renderizzata nuovamente l&#8217;intera pagina ma soltanto alcuni nodi specifici. Questo permette di:</p><ul><li>Non avere artefatti visivi dopo il <a href="https://web.dev/articles/fcp?hl=it">first contentful paint.</a></li><li>Ottenere migliori prestazioni Web Core Vitals</li><li>User Experience più fluida</li></ul><div>In aggiunta a tutti i benefici che il Server Side Rendering offre già.</div>						</div>
				</div>
				<div class="elementor-element elementor-element-998a5c1 elementor-widget elementor-widget-spacer" data-id="998a5c1" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-a57436a elementor-widget elementor-widget-heading" data-id="a57436a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Deferrable views</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-f2c0f4b elementor-widget elementor-widget-text-editor" data-id="f2c0f4b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Analizziamo il caso in cui si utilizza Angular in Server Side Rendering: bisogna essere consapevoli di cosa si renderizza lato server, e cosa si renderizza lato client.</p><p>Questo comportamento si può gestire in diversi modi, ad esempio dichiarando una variabile di stato booleana inizializzata a <code>false</code> che diventa <code>true</code> dopo il ciclo di vita di <code>mount</code> (gestito quindi lato client). Questo stato usato come binding in un <code>ngIf</code> vincola una porzione di template ad essere gestita solo dal client e non dal server.</p><p>In Angular 17 nulla di ciò è più necessario. E&#8217; sufficiente usare il blocco <code>@defer</code> direttamente sul template e un attributo di utilità <code>isBrowser</code> nel Component. Angular gestirà il flusso di stato</p>						</div>
				</div>
				<div class="elementor-element elementor-element-c15fa4b elementor-widget elementor-widget-code-highlight" data-id="c15fa4b" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-typescript line-numbers">
				<code readonly="true" class="language-typescript">
					<xmp>@Component(
    selector: "my-app",
    template: `
    @defer(when isBrowser) {
        <p>Hi, I am the client.</p>
    }
    <p>Hi, I am the server.</p>
    `
)
export class AppComponent {
  isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-5153409 elementor-widget elementor-widget-text-editor" data-id="5153409" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Un altro caso d&#8217;uso importante è quello in cui il browser deve renderizzare un componente che per qualche motivo impiega molto a comparire sulla pagina.</p><p>Una buona User Experience si basa anche su quanto velocemente una pagina risponde ad un input utente. Un caso standard di &#8220;loading spinner&#8221; si potrebbe descrivere in questo modo:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-45d66be elementor-widget elementor-widget-code-highlight" data-id="45d66be" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>@defer {
  <large-component />
} @loading (after 100ms; minimum 1s) {
  <img decoding="async" alt="loading..." src="loading.gif" />
}
</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-eef612f elementor-widget elementor-widget-spacer" data-id="eef612f" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-9d07d06 elementor-widget elementor-widget-heading" data-id="9d07d06" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Migrazioni per la standalone API</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-eb79fdc elementor-widget elementor-widget-text-editor" data-id="eb79fdc" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per supportare gli sviluppatori nella migrazione da <code>NgModules</code> a standalone api, il team di Angular ha creato un tool che permette di automatizzare il processo. Il requisito è di avere installato almeno la versione 15.2.0, la build deve essere pulita senza errori di compilazione ed il branch sul tuo vcs deve essere pulito.</p><p>Per lanciare l&#8217;automatismo basta scrivere questo comando su terminale dalla root del progetto:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-d4c2f65 elementor-widget elementor-widget-code-highlight" data-id="d4c2f65" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-javascript line-numbers">
				<code readonly="true" class="language-javascript">
					<xmp>ng generate @angular/core:standalone</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-10485fe elementor-widget elementor-widget-text-editor" data-id="10485fe" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Per i nuovi progetti basta usare il flag <code>--standalone</code> dopo <code>ng new</code>,</p>						</div>
				</div>
				<div class="elementor-element elementor-element-71fa5fc elementor-widget elementor-widget-spacer" data-id="71fa5fc" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-88c3493 elementor-widget elementor-widget-heading" data-id="88c3493" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Esbuild e Vite (Developer Preview)</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-a957d06 elementor-widget elementor-widget-text-editor" data-id="a957d06" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><code>ng serve</code> ora supporta<code>esbuild</code> per generare le build di produzione e di sviluppo e di produzione, e <code>vite</code> per il server di sviluppo. Questo significa che le performances di build in fase di sviluppo saranno sensibilmente più veloci. E&#8217; una funzionalità opt-in essendo ancora in &#8220;developer preview&#8221;, per attivarla bisogna modificare <code>angular.json</code> come segue:</p>						</div>
				</div>
				<div class="elementor-element elementor-element-0c62cb2 elementor-widget elementor-widget-code-highlight" data-id="0c62cb2" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-json line-numbers">
				<code readonly="true" class="language-json">
					<xmp>...
"architect": {
  "build": {                     /* Add the esbuild suffix  */
    "builder": "@angular-devkit/build-angular:browser-esbuild",
...</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-b078757 elementor-widget elementor-widget-spacer" data-id="b078757" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-f5eb5e6 elementor-widget elementor-widget-heading" data-id="f5eb5e6" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Jest come test runner (Developer Preview)<br></h2>		</div>
				</div>
				<div class="elementor-element elementor-element-d0df76a elementor-widget elementor-widget-text-editor" data-id="d0df76a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p><code>Jest</code> è uno dei framework di testing più diffusi e amati nell&#8217;ecosistema JavaScript. Da questa versione di angular in poi è possibile usarlo:</p><p><code>npm install --save-dev jest</code></p>						</div>
				</div>
				<div class="elementor-element elementor-element-a08e12d elementor-widget elementor-widget-code-highlight" data-id="a08e12d" data-element_type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-json line-numbers">
				<code readonly="true" class="language-json">
					<xmp>{
  "projects": {
    "my-app": {
      "architect": {
        "test": {
          "builder": "@angular-devkit/build-angular:jest",
          "options": {
            "tsConfig": "tsconfig.spec.json",
            "polyfills": ["zone.js", "zone.js/testing"]
          }
        }
      }
    }
  }
}</xmp>
				</code>
			</pre>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-e9fe08f elementor-widget elementor-widget-spacer" data-id="e9fe08f" data-element_type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
					<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
				</div>
				</div>
				<div class="elementor-element elementor-element-dba34a1 elementor-widget elementor-widget-heading" data-id="dba34a1" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Conclusioni</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-548f6b1 elementor-widget elementor-widget-text-editor" data-id="548f6b1" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Con queste novità il team di Google dimostra non solo di ascoltare le richieste degli sviluppatori (vedi Jest, Esbuild + Vite) e un&#8217;attenzione particolare alla Developer Experience (vedi Control Flow, @defer), ma dimostra soprattutto che Angular è un Framework che tiene stretto il proprio posto nel mercato dell&#8217;industria Web e lo terrà ancora per lungo tempo.</p><p>Personalmente ho molto apprezzato l&#8217;introduzione dei <code>Signal</code> ed il lavoro fatto per semplificare e migliorare il <code>Server Side Rendering</code>. </p><p>Il nuovo sito di Angular <a href="https://github.com/angular/angular/tree/main/adev">sarà completamente open-source e disponibile su GitHub</a>, non vediamo l&#8217;ora di poterlo studiare e condividere le nostre scoperte con voi.</p>						</div>
				</div>
				<div class="elementor-element elementor-element-9179035 elementor-widget elementor-widget-heading" data-id="9179035" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
			<h2 class="elementor-heading-title elementor-size-default">Vuoi approfondire uno di questi argomenti?</h2>		</div>
				</div>
				<div class="elementor-element elementor-element-d1890af elementor-widget elementor-widget-text-editor" data-id="d1890af" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Contattaci tramite <a href="https://angular.dev/">il form su questo sito web</a> o <a href="https://tr.ee/aTQIIRlpWV">tramite i nostri canali social</a>!</p>						</div>
				</div>
				<div class="elementor-element elementor-element-ecd13b7 elementor-widget elementor-widget-text-editor" data-id="ecd13b7" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
													</div>
				</div>
				<div class="elementor-element elementor-element-8467b12 elementor-widget elementor-widget-text-editor" data-id="8467b12" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
													</div>
				</div>
					</div>
		</div>
							</div>
		</main>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/novita-angular-17/">Le novità di Angular 17</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.rdtech.it/novita-angular-17/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Che cos&#8217;è un Web Developer?</title>
		<link>https://www.rdtech.it/cose-un-web-developer/</link>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 15:23:57 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[azienda]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[lavoro]]></category>
		<category><![CDATA[offerta]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1372</guid>

					<description><![CDATA[<p>Un web developer è un professionista capace di sviluppare applicazioni accessibili dal web. I suoi compiti sono quelli di un frontend developer e un backend developer  — spesso è più specializzato in una delle due categorie.</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-web-developer/">Che cos&#8217;è un Web Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1372" class="elementor elementor-1372">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-6ed969f ct-section-stretched elementor-section-full_width elementor-section-height-default elementor-section-height-default" data-id="6ed969f" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-701262d" data-id="701262d" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-e9a5f8e elementor-widget elementor-widget-global elementor-global-1406 elementor-widget-text-editor" data-id="e9a5f8e" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Definire che cos&#8217;è un Web Developer oggi non è semplice. Con l&#8217;avanzamento delle tecnologie web le competenze richieste per lo sviluppo e la manutenzione di un&#8217;applicazione sono aumentate. </p><p>&#8220;Sono un Web Developer&#8221; inquadra il tuo settore, ma non le tue competenze specifiche.</p><p>Il motivo è che su applicazioni di medie o grandi dimensioni lavorano vari gruppi di sviluppo, ognuno dei quali è composto da più di uno sviluppatore web con specializzazione diversa a seconda del loro ruolo nel progetto.</p><p><!-- notionvc: 3c1eb7df-1047-4b97-b208-1ae29038cc35 --></p><p>Ad esempio: <br />Può esserci un team dedicato ad uno specifico servizio Back-end e le sue API: <a href="https://www.rdtech.it/cose-un-backend-developer/">Web Developers specializzati in tecnologie Back-end o Back-end Developers</a>;<br />Un altro team può dedicarsi allo sviluppo delle interfacce utente: <a href="https://www.rdtech.it/cose-un-frontend-developer/">Web Developers specializzati in tecnologie Front-end o Front-end Developers</a>;<br />Un terzo team può essere specializzato nella distribuzione delle varie componenti online tramite sistemi automatizzati (CI/CD deployments): Web Developers specializzati in DevOps o DevOps Developers;<br /><span style="font-size: inherit; text-align: inherit; color: var(--color); font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-transform: var(--textTransform);">La lista è incredibilmente lunga. </span></p><p><span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);">Ogni ruolo è fondamentale per la creazione di un&#8217;applicazione di successo per garantire che il sistema sia funzionale, sicuro e performante.</span></p><p><span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);">In RDTech, ci occupiamo dello sviluppo Back-End tramite <a href="https://spring.io/">Spring Boot (Java Framework)</a> o <a href="https://aws.amazon.com/it/what-is/net/">.NET (C# Framework)</a>, produciamo <a href="https://www.redhat.com/it/topics/api/what-is-a-rest-api">REST API</a> e le documentiamo tramite lo standard <a href="https://swagger.io/specification/">OpenAPI (Swagger);</a><br />Sviluppiamo interfacce utente tramite <a href="https://angular.io/">Angular (TypeScript Framework)</a>, <a href="https://it.reactjs.org/">React (libreria JavaScript)</a> o <a href="https://www.thymeleaf.org/">Thymeleaf (Template engine)</a> e distribuiamo le applicazioni tramite <a href="https://httpd.apache.org/">Apache Web Server</a>, <a href="https://tomcat.apache.org/">Tomcat</a>, <a href="https://www.nginx.com/">NGINX</a>, <a href="https://www.redhat.com/it/technologies/jboss-middleware/application-platform">JBoss EAP</a>. </span></p><p><span style="color: var(--color); font-size: inherit; font-style: var(--fontStyle, inherit); font-weight: var(--fontWeight); letter-spacing: var(--letterSpacing); text-align: inherit; text-transform: var(--textTransform);">Queste sono le tecnologie principali che abbiamo riscontrato essere al momento più adatte per i progetti che gestiamo, ma non siamo chiusi su di esse. Siamo un team dinamico e come tale valutiamo la tecnologia più adatta a seconda delle necessità progettuali.</span></p><p><span style="font-weight: 600;" data-token-index="0">Ti piacerebbe lavorare nell’ambito dello sviluppo di applicazioni web? potresti essere la persona giusta per noi! <a href="https://www.rdtech.it/contatti/">Clicca qui</a> per candidarti.</span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-web-developer/">Che cos&#8217;è un Web Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cos’è un Frontend Developer?</title>
		<link>https://www.rdtech.it/cose-un-frontend-developer/</link>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 14:39:36 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[azienda]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[lavoro]]></category>
		<category><![CDATA[offerta]]></category>
		<category><![CDATA[tech]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1367</guid>

					<description><![CDATA[<p>Un frontend developer è un professionista specializzato nello sviluppo e nella manutenzione di una interfaccia utente; Essa costituisce la parte visibile e interagibile di un sistema informatico</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-frontend-developer/">Cos’è un Frontend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1367" class="elementor elementor-1367">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-4a13a4c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4a13a4c" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0e17ad3" data-id="0e17ad3" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-f611a8b elementor-widget elementor-widget-text-editor" data-id="f611a8b" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Un Frontend Developer è un professionista che si occupa di sviluppare una interfaccia utente.</p><p>In condizioni di lavoro ideali, un Frontend Developer lavora a stretto contatto con uno UI/UX Designer e un Backend Developer:</p><ul><li>Lo UI/UX Designer fornisce tutti gli strumenti necessari per riprodurre lo stile grafico dell’interfaccia, e una documentazione esaustiva su tutti i flussi operativi per utilizzarla.</li><li>Il <a href="https://www.rdtech.it/cose-un-backend-developer/">backend developer</a> fornisce la documentazione necessaria per usare le API (Application Programming Interface): che ha sviluppato per un determinato servizio: sono un’interfaccia software che permette la comunicazione tra due applicativi al fine di creare, leggere, modificare e eliminare i dati secondo la logica di business del sistema</li></ul><p><!-- notionvc: e26d6301-445b-4467-9d8c-01be96c1bad5 --></p><p>Lo sviluppatore front-end dovrà conoscere le principali tecnologie del suo campo così da scegliere quella migliore: ovvero quella che permette il raggiungimento di tutti i requisiti progettuali.</p><p>Il suo ruolo è fondamentale per la creazione di un&#8217;applicazione di successo e la sua esperienza e competenza sono cruciali per garantire che l&#8217;applicazione sia funzionale, sicura e performante.</p><p>In RDTech, i nostri frontend developer utilizzano tecnologie all&#8217;avanguardia come <a href="https://angular.io/">Angular</a> e <a href="https://it.reactjs.org/">React</a> per le interfacce utente renderizzate lato client, e template engine moderne come <a href="https://www.thymeleaf.org/">Thymeleaf</a> per le interfacce utente renderizzate lato server.</p><p><span style="font-weight: 600;" data-token-index="0">Se hai studiato JavaScript e ti piacerebbe lavorare nell’ambito dello sviluppo di applicazioni web come frontend developer, potresti essere la persona giusta per noi! <a href="https://www.rdtech.it/contatti/">Clicca qui</a> per candidarti.</span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-frontend-developer/">Cos’è un Frontend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cos&#8217;è un Backend Developer?</title>
		<link>https://www.rdtech.it/cose-un-backend-developer/</link>
		
		<dc:creator><![CDATA[Matteo Veraldi]]></dc:creator>
		<pubDate>Mon, 06 Feb 2023 14:21:06 +0000</pubDate>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[azienda]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[informatica]]></category>
		<category><![CDATA[lavoro]]></category>
		<category><![CDATA[offerta]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[web]]></category>
		<guid isPermaLink="false">https://www.rdtech.it/?p=1354</guid>

					<description><![CDATA[<p>Un backend developer si occupa di sviluppare e mantenere il lato server delle applicazioni web e/o mobile. Si concentra sulla costruzione delle API, sulla gestione della base di dati e sulla risoluzione di problemi di performance.</p>
<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-backend-developer/">Cos&#8217;è un Backend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="1354" class="elementor elementor-1354">
									<section class="elementor-section elementor-top-section elementor-element elementor-element-974a32d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="974a32d" data-element_type="section">
						<div class="elementor-container elementor-column-gap-no">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4794ac1" data-id="4794ac1" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
								<div class="elementor-element elementor-element-404faa4 elementor-widget elementor-widget-text-editor" data-id="404faa4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
							<p>Un Backend developer è un professionista che si occupa di:</p><ul><li>Gestione e manutenzione di un database: Il database deve essere progettato e mantenuto al fine di rispecchiare le caratteristiche del sistema modellato; Conosce come usare e interfacciarsi ai principali tipi di Database e conosce le tecniche di ottimizzazione delle performances.</li><li>Costruzione di un’API (Application Programming Interface): Di fatto è un intermediario con cui due applicativi possono comunicare tra loro per le operazioni di Creazione, Lettura, Aggiornamento e Rimozione dei dati. Il backend, tramite un set di regole (business rules) e logiche (business logic) stabilisce se una determinata azione richiesta può essere eseguita.</li><li>Sicurezza: La sicurezza è un aspetto fondamentale delle applicazioni web e mobile. Uno sviluppatore Backend è responsabile — nel suo dominio applicativo — di garantire che i dati dell&#8217;utente siano protetti e che l&#8217;applicazione sia sicura da eventuali minacce.</li></ul><p>Il suo ruolo è fondamentale per la creazione di un&#8217;applicazione di successo e la sua esperienza e competenza sono cruciali per garantire che l&#8217;applicazione sia funzionale, sicura e performante.</p><p>In RDTech, un backend developer si interfaccia con diverse tecnologie:<br />Database relazionali come MySQL, MariaDB, PostgreSQL. Spring Boot o .NET (C#) per le API, usando lo standard OpenAPI (Swagger) per la documentazione ed i test funzionali. Userai Docker per la virtualizzazione degli ambienti, principalmente per la gestione delle istanze dei Database, e vari tools CLI o GUI per operazioni di diagnostica.</p><p><span style="font-weight: 600;" data-token-index="0">Se hai studiato Java e ti piacerebbe lavorare nell’ambito dello sviluppo di applicazioni web come backend developer, potresti essere la persona giusta per noi! <a href="https://www.rdtech.it/contatti/">Clicca qui</a> per candidarti.</span></p>						</div>
				</div>
					</div>
		</div>
							</div>
		</section>
							</div>
		<p>L'articolo <a rel="nofollow" href="https://www.rdtech.it/cose-un-backend-developer/">Cos&#8217;è un Backend Developer?</a> proviene da <a rel="nofollow" href="https://www.rdtech.it">RD Tech</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
