<?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>Senza categoria Archivi - RD Tech</title>
	<atom:link href="https://www.rdtech.it/category/senza-categoria/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.rdtech.it/category/senza-categoria/</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>
	</channel>
</rss>
