Serie di post sullo SharePoint Framework

Microsoft ha definito sin da subito lo SharePoint Framework come una "Open and connected platform".
Di sicuro è uno degli aggiornamenti per noi sviluppatori SharePoint più importanti degli ultimi 4 o 5 anni. Per prima cosa ci permette lo sviluppo di personalizzazioni su SharePoint Online in maniera più strutturata, senza dover mettere mano a master page o page layout e, soprattutto, senza dover iniettare codice Javascript in pagina tramite Content Editor Web Part o Script Web Part.
Inoltre, ci rimette un po' al passo con i tempi per quanto riguarda i tool, i linguaggi e le tecnologie da utilizzare per lo sviluppo. Sì perché negli ultimi 10 anni, siamo sempre stati abituati a lavorare server-side con il .NET Framework (grazie al Server Object Model) o client-side sempre con il .NET Framework (grazie alle librerie del Client Side Object Model) o sfruttando Javascript. In ogni caso, sempre in ambiente Microsoft.
Ora abbiamo a che fare con un mondo di tool, linguaggi e tecnologie totalmente open source e in uso dalla stragrande maggior parte di sviluppatori web.
Vi elenco i principali, così che possiate iniziare a prenderci un po' la mano.

NodeJs
Una delle piattaforme che sta prendendo piede in ambito di sviluppo web, che ci permette di utilizzare Javascript sia per lo sviluppo della parte client-side dell'applicazione, sia per quella server-side. Piattaforma basata su Javascript Engine V8, lo stesso framework utilizzato da Google all'interno di Chrome, viene utilizzata per tutta la fase di sviluppo e test in locale delle personalizzazioni fatte tramite lo SharePoint Framework.
Per farvi capire meglio, avete la possibilità di far girare in locale una pagina di test, che simula una modern page di SharePoint e su cui potete fare un primo test locale delle vostre Client Side Web Part. Ecco, il web server che si occupa di hostare questa pagina, assieme a tutti gli altri asset, è un modulo di NodeJs.
Lo stesso NodeJs viene utilizzato dalle librerie che fatto le operazioni di compilazione e packaging e per gestire le referenze a librerie esterne (tramite NPM).
Molto importante: non è necessario conoscere a fondo NodeJs per lavorare con lo SharePoint Framework.

Typescript
E' un linguaggio di programmazione open-source, ideato e portato avanti da Microsoft, che porta una modalità di sviluppo più robusta a Javascript. Tecnicamente è un super-set di Javascript, basato ad oggetti e fortemente tipizzato, che permette la creazione di progetti di una certa complessità senza dover impazzire al primo refactor.
Questa è l'unica parte che vi consiglio di studiare per bene, perchè ne vale la pena.
Lo SharePoint Framework stesso, assieme a la maggior parte delle librerie open source gestite da Microsoft e dalla Community (es: l'utilissima PNP Core JS) sono scritte utilizzando Typescript.

Yeoman
E' un tool per effettuare l'operazione di "scaffolding" dei vostri nuovi progetti. Che significa? Semplicemente creare un nuovo progetto a partire da un template.
Per creare un nuovo progetto tramite le librerie dello SharePoint Framework, dovete utilizzare Yeoman (yo) in questo modo:

C:\project folder\> yo @microsoft/sharepoint

Gulp
E' un tool di esecuzione di task. Lo SharePoint Framework utilizza Gulp per tutte le operazioni di compilazione, avvio dell'applicazione in debug, packaging.
Per far partire in debug il vostro nuovo progetto potete utilizzare Gulp in questo modo:

C:\project folder\> gulp serve

Webpack
E' un tool che si ocuppa di impacchettare vari moduli Javascript all'interno di un singolo "bundle" (file Javascript).


Giusto per permettervi di inquadrare meglio questi tool nel vostro lavoro di tutti i giorni, ho preparato questa tabella di comparazione tra i tool da utilizzare con lo SharePoint Framework e gli strumenti che state utilizzando oggi per lo sviluppo di personalizzazioni SharePoint.


Posso capire che il primo impatto può essere un pò difficile, ma io ritengo che questo sia un grande aggiornamento da parte di Microsoft per noi sviluppatori SharePoint. In questo modo possiamo imparare le tecnologie su cui si sta basando lo sviluppo web di questo periodo e del futuro, senza rimanere troppo indietro come invece è successo negli ultimi anni a questa parte.