Este documento presenta una agenda para un taller sobre el desarrollo de aplicaciones para SharePoint utilizando SharePoint Framework (SPFx) y React. La agenda incluye introducciones a SPFx, el entorno de desarrollo, desarrollando web parts con SPFx y React, conectándose a datos de SharePoint, pruebas y despliegue. El taller también cubrirá el desarrollo de extensiones de SPFx como application customizers y list view command sets.
4. WiFi Keys for Attendees
Connect to the wireless network MSFT_GUEST
Login details for the wireless network:
Guest Username O365Sat@outlook.com
Guest Password: 0195
5. Track 1: SALA SANTIAGO DEXEUS
09:00- 10:30 ReactJS para SharePoint Developers
Speakers: Olga Marti /Mario Cortes
11:00-12:30 Como utilizar Graph y no morir en el intento:
Speakers Ruben Ramos /Rober Bermejo
12:30- 14:00 ALM y SPFX un ciclo completo
Speakser : Luis Mañez / Adrián Díaz
6. Agenda – Aquí se viene a programar
Me voy descargando el toolset
Introducción a SPFx
Entorno de desarrollo
Desarrollando WebParts con SPFx + React
SPFx Extensions
Obtener datos de SharePoint
Testeando nuestra aplicación
Despliegue
7. Office 365
NodeJS + npm
npm install -g yo gulp
VS Code
npm install -g @microsoft/generator-
sharepoint@latest
Entorno de desarrollo
8. Actualiza el toolset
npm i npm
npm install @microsoft/generator-sharepoint –global
npm update
11. Classic Sites Vs Modern Sites
Classic sites Modern sites
• Funcionalidades legacy
• Mayor nivel de personalización
• Más usable y simple
• Adapatada a diferentes dispositivos
• Contendrá todas las novedades
12. ¿Qué es SharePoint Framework?
• Client-side.
• Se ejecuta en el contexto del usuario.
• Puede utilizarse en páginas modernas y en páginas clásicas.
• SharePoint Online y SharePoint 2016 con FP2 en adelante.
14. Componente visuales SPFx
Extender la interfaz y
añadir scripts.
Botones customizados
en los menús de listas
Modifica el
renderizado de una
columna
Crear controles/bloques que aparecerán
dentro de una página de SharePoint.
21. Desarrollo basado en componentes web con React
• Dividir la interfaz en componentes
atómicos.
• Cada componente es responsable de
implementar una funcionalidad.
• No conoce los componentes superiores
que lo encapsulan.
• Solo conoce los controles hijos.
HeaderListItems
22. Componentes
• Un componente equivaldría al concepto de función.
• Recibe una entrada y genera una salida como elemento de React.
23. Composición de componentes
• Un componente puede contener a su
vez otros componentes.
• Crearemos una jerarquía de
componentes.
24. Interfaz basada en JSX
• Expresión que describe cómo se pintara la interfaz.
• Manejos de estos objetos mediante programación.
25. Render
• Genera el DOM del componente.
• Los elementos son inmutables, una vez que has creado un elemento no puedes modificarlo.
• Podemos bindear a objetos.
28. Propiedades (props)
• Las entradas de datos de un componente se realiza mediante
“propiedades”.
• this.props
• Las propiedades son de solo lectura.
29. Estado(state)
• Son como propiedades privadas al componente.
• Cada componente mantiene sus propio estado.
• State es de lectura/escritura.
30. Actualizar el state
• Solo se puede actualizar el estado de 2 formas:
• En el constructor
• Mediante el método setState()
• setState es asíncrono
• El flujo de información siempre es de
arriba hacia abajo en la jerarquía de
componentes.
• Un componente puede pasar su estado a
un hijo mediante propiedades.
41. PnP JavaScript Core
• Librearía con utilidades para conectar con SharePoint de una forma más natural.
• No necesitamos conocer la estructura de REST de SharePoint.
npm install sp-pnp-js --save
42. MSGraphClient
• Cliente que permite realizar peticiones REST de la Graph API en el contexto del usuario.
• MSGraphClient maneja la autenticación por ti.
npm install @microsoft/microsoft-graph-types –save-dev
43. AadHttpClient
• Cliente que permite consumir API’s
securizadas por Azure AD.
• Utiliza ADAL.JS
• OAuth implicit flow.
• Debemos garantizar el acceso
previamente
npm install @microsoft/microsoft-graph-types –save-dev
45. Environment.type
Permite detectar en qué entorno nos encontramos (EnvironmentType):
• Test: el código se ejecuta desde un test unitario.
• Local: nos encontramos en un equipo de desarrollo donde estamos probando nuestro desarrollo.
• SharePoint: el framework se ha cargado en una página de SharePoint.
• ClassicSharePoint: el framework se ha cargado en una página basada en el modelo clásico de páginas de
SharePoint.
46. Dynamic Data
Conecta tus WebParts de SPFx y Extensions para intercambiar información entre ellos.
49. Debugger for Chrome
Con Visual Studio Code y la
extensión de Chrome “Debugger
for Chrome” podemos
engancharnos al proceso de
Chrome. De esta manera nos
permite depurar directamente
desde Visual Studio Code
mientras utilizamos el Workbench
desde Chrome.
Disponemos de dos modelos de experiencia de usuario que viene marcada por la plantilla de sitios que utilicemos: los Classic sites y los modern sites.
Los sitios de SharePoint basado en “modern sites” será la avolución por la que Microsoft apuesta para el uso de funcionalidades de gestión documental y de publicación de contenidos.
Entre las ventajas que disponemos con los modern sites:
Más user friendly, se simplifican las acciones y la estructura de navegación.
Estructura más simples y ligera.
Vista responsive y adaptada a aplicaicones.
A nivel de página
Extiende placehodlers: Bottom y Top
Ejemplo:
?loadSPFX=true&debugManifestsFile=https://localhost:4321/temp/manifests.js&customActions={"3516fbe2-9f01-4cfc-bc4e-c86833b18773":{"location":"ClientSideExtension.ApplicationCustomizer","properties":{"TopMessage":"PlaceHolder de cabecera", "BottomMessage":"PlaceHolder de Footer"}}}
ClientSideExtension.ListViewCommandSet.CommandBar: barra de herramientas de la lista o biblioteca
ClientSideExtension.ListViewCommandSet.ContextMenu: menú contextual para los elementos de la lista o biblioteca
ClientSideExtension.ListViewCommandSet
?loadSpfx=true&debugManifestsFile=https://localhost:4321/temp/manifests.js&customActions={"3d9a08ae-07a7-471c-87b2-8ea672a48848":{"location":"ClientSideExtension.ListViewCommandSet.CommandBar","properties":{"sampleTextOne":"One item is selected in the list.","sampleTextTwo":"This command is always visible."}}}
?loadSpfx=true&debugManifestsFile=https://localhost:4321/temp/manifests.js&customActions={"3d9a08ae-07a7-471c-87b2-8ea672a48848":{"location":"ClientSideExtension.ListViewCommandSet","properties":{"sampleTextOne":"One item is selected in the list.","sampleTextTwo":"This command is always visible."}}}