Javascript
Prendendo spunto da ultime attività lavorative, vorrei evidenziare (molti lo sapranno) come il numero di chiamate http parallele eseguite da un browser (browser != istanza di browser) verso lo stesso server (stesso dominio) sia in numero finito e ridotto, e che la cosa possa peggiorare la performance del vostro applicativo web [http://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser]. Partiamo cronologicamente al contrario: 1 - Angular2 Angular2 è la nuova versione del framework di google, scritta in typescript, ed "enormemente" modulare; basti pensare che: ogni "view" può essere composta dalla definizione di “component" scritto in typescript (=> js), un css...
Senza entrare nella discussione di quale lint-tool utilizzare per il verificare la “bontà” del codice js scritto, e poichè JsHint è incluso nel plugin di VS WebEssentials, mi sono ritrovato a faccia a faccia con il seguente messaggio: Tale messaggio indica chiaramente che la variabile “_” (lodash nel mio caso) è usata senza che essa venga precedentemente dichiarata. Da qui il mio pensiero è stato: Vero è che, di buona norma, occorrerebbe evitare di utilizzare variabili globali ed iniettarle tutte tramite injection, però è anche vero che ce ne sono un insieme ($,...
Quando iniziai (un po’ di tempo fa a dire il vero) a voler provare/utilizzare AngularJS su alcuni progetti web, mi sono scontrato contro alcuni problemi tra i quali: Non voler cambiare “troppo” le tecnologie utilizzate e conosciute dal team (asp.net, webapi, sql server… e quindi niente node, mongo, php, gruntjs…), Utilizzare Visual Studio e avere una struttura chiara della solution, Creare una SPA, e non solo il motore di binding di ng per le singole view asp.net. Poichè ai tempi (mesi e mesi fa) non...
Lavorando su un progetto ~MEAN (MongoDB + ExpressJS + AngularJS + nodeJS) mi sono chiesto: “perchè non creare un modulo di registrazione custom dei controller simile a quella delle webapi di asp.net”? da qui è nato il seguente modulo: 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
...
Dalla beta di asp.net mvc4 sono stati fatti passi avanti nelle API riguardanti i Bundle.
Giusto per informazione, i bundle sono presenti in ASP.NET MVC4 (assembly System.Web.Optimization.dll) e servono per riunire e minificare gruppi di risorse css e js. Questo permette di ridurre il payload e ridurre le connessioni HTTP.
Ci sono molte librerie che svolgono lo stesso compito (es Combres, Cassette ...), ma per i pigri (e chi non vuole troppe dipendenze al di fuori dallo stack ms) ora è tutto integrato.
Alcune novità rispetto alla beta:
Rimozione del metodo "BundleTable.Bundles.RegisterTemplateBundles()"
Imho bene, tutto a favore di una registrazione...
In ambito XAML per mostrare una lista di elementi occorre impostare il datacontext di un ItemsControl ad una IEnumerable. L’ItemsControl poi rendererizza la lista in base al DataTemplate specificato nella proprietà ItemTemplate. Per aggiungere oggetti nuovi ho sempre usato ItemTemplateSelector e/o CompositeCollection, ma la presenza di un container l’ho sempre considerata obbligatoria (correggetemi se sbaglio).
Ho considerato l’assioma valido anche in Knockout, ma non è così. Con knockout è possibile scrivere un “contenitore fittizio” tramite commenti:
<!-- ko ... -->
<!-- /ko -->
Tramite questa feature è possibile (come nel mio caso particolare) creare una tabella con un numero di colonne variabili:
<table id="classificationTable"> ...
Anche se leggermente OT rispetto al mondo .net, notifico l'uscita di Knockout v2.0.0; Per chi non sapesse cosa fosse, è un framework javascript che semplifica l'applicarazione del pattern MVVM (oramai noto in xaml) in javascript+html.
Tra le nuove caratteristiche che ho notato velocemente, cito le seguenti:
ViewModel: negli esempi ora è rappresentato da una funzione (=oggetto)
Computed properties: ko.dependentObservable è deprecato, ora è preferibile utilizzare ko.computed.
Templating: poiché jQuery.tmpl non è più in sviluppo, è stato modificato il motore di templating. Ora si può usare il binding di tipo foreach e altre tecniche. Probabilmente questa è...