SlideShare a Scribd company logo
1 of 34
May 20th, 2017
SharePoint Saturday
Madrid
SPFX - JS Patterns Applied to a Real World
Example
Ángel-Rubén Yui - Javier Segura
Angel-Rubén Yui
Senior Consultant SharePoint/Office365
angelrubenyui
Consultor senior de Office365 / SharePoint.
Trabaja en Altran España, consultora Gold Partner Microsoft.
Miembro de la junta directiva de SUG.CAT.
ALTRAN
Javier Segura
SharePoint Applications Architect
@xavi_segcri
Office365 / SharePoint consultant working for PlanB GmbH, a
German Gold Partner consultancy company.
SharePoint Applications Architect at KPMG in Berlin.
Member of SUG.CAT.
Plan-B Gmbh
Gold sponsors ______________
Silver sponsors
Bronze sponsors
Collaborate
Platinum sponsor
Please, fill your SPS Madrid
passport if you want to
participate.
You can win one of these gifts:
Raffle
10
9
8
Odor Odor@winterfell.com
Índice
1. Introducción SPFx
2. Lo más importante a saber de las SPFx Toolchain
3. ¿Qué es TypeScript?
4. Patrones TypeScript
5. Demo Real world
6. Q & A
¿Qué es?
FX
Nuevo modelo de
desarrollo que nos
permite crear
componentes del lado
cliente
Características :
Personalizaciones ejecutadas en el contexto
de la página actual, no en un contexto de
Iframe como los Add-Ins.
Empaquetar y desplegar código cliente igual
que las versiones previas (WSP y Add-Ins).
Experiencia de desarrollo: herramientas web
actuales. Yeoman , Gulp, NodeJS, NPM, VS
Code / Sublime.
Presente y futuro
Webparts compatibles solo con las
Modern Pages. Classic WebPart
Pages y Publishing Pages en el
roadmap. Es decir, van a cuidar el
Legacy.
MS usa el mismo modelo que
nosotros, SPFx, para desarrollar
nuevas funcionalidades en
SharePoint.
Roadmap
4 Mayo
Early Adopoters updates
May Ago Nov Ene Feb Jun JulAbr May Ago Sep Oct Nov Dic
Anuncio SPFx
Agosto - Noviembre
Release candidate
9 Enero
Generally available
Client side webparts
23 febrero
Roadmap
•
•
•
•
•Modelo de ejecución del
lado cliente.
•Se renderiza y ejecuta en
el contexto de la página
actual.
•Es la única forma
(soportada por MS) para
customizar modern pages.
•Herramientas Open Source
& Cross Plattform.
•Responsive, accessible &
mobile friendly.
•Scoped to tenant (las
customizaciones estan
disponibles en todos los
sitios dentro de un tenant).
•Limitado a Client side web
parts.
•Usan API lado cliente
(CSOM, REST).
•El contexto de ejecución
está externalizado de SP
(en un IFRAME).
•Normalmente se desarrolla
con VS en Windows,
aunque existe la
posibilidad de usar
diferentes teconologías en
diferentes plataformas.
•El scope máximo es tenant
y site collection.
•Permite desarrollar
webparts, WF y mas.
•Modelo de ejecución lado
cliente.
•API lado cliente.
•Te permite desarrollar con
cualquier entorno /
herramientas.
•El scope máximo es una
página SharePoint.
•Desarrollado manualmente
y sin tener deployment
automático.
Características SPFx vs Modelo de desarrollo en
SharePoint
•Modelo de ejecución del
lado servidor.
•API completamente server
side.
•Solamente soportadas en
entornos onpremise.
•Desarrolladas con Visual
Studio en Windows.
•La solucion tiene un scope
máximo de Farm.
•Permite desarrollar
webparts, timerjobs, event
receivers, feature receivers,
etc.
Introducción SPFx
Lo mas importante
de la Toolchain SPFx
NodeJS
• Es un runtime que permite la ejecución de
Server-side JS.
• Esta basado en el V8 JSVM Chromium Proyecto
Open Source.
• Provee una API para acceder a las típicas
funcionalidades de lado servidor (acceso a la
maquina local, file input / output,
funcionalidades de red, etc.).
Nota : Importante instalarse la versión LTS (Long
Term Support): La mayor parte de empresas la usa y
MS también la recomienda por su estabilidad
NPM – Package
Manager para NodeJS
Permite adquirir y gestionar las dependencias de
paquetes en los proyectos. Permitiendo instalar
herramientas basadas en Nodejs. Ejemplos:
Instalar Yeoman
• npm install -g yo
Instalar Gulp
• npm install -g gulp
Instalar TypeScript
• npm install –g typescript
Nota : Es importante verificar que estamos
utilizando la versión de npm 3 o superior.
Yeoman - THE WEB'S
SCAFFOLDING TOOL
FOR MODERN
WEBAPPS
Es una herramienta que permite crear plantillas de
proyectos para generar la estructura de los
proyectos. En Microsoft han creado una serie de
plantillas para lo que consideran que son las
mejores prácticas para iniciar un componente de
SPFx, por lo que no tienes que preocuparte por la
configuración de carpetas, y las estructuras de
nombres.
Para crear un nueva solución de webparts de SharePoint se deberá ejecutar el
siguiente comando :
yo @microsoft/sharepoint
Gulp
Gulp es un conjunto de herramientas que ayudan a
automatizar diversas tareas que consumen mucho
tiempo en el flujo de trabajo de desarrollo. Es una
plataforma agnóstica, las integraciones están
integradas en todos los IDE principales .NET,
Node.js, Java y otras plataformas.
Gulp
SPFx utiliza Gulp para ejecutar los
siguientes procesos :
• Bundle and minify JavaScript and CSS
files.
• Run tools to call the bundling and
minification tasks before each build.
• Compile LESS or SASS files to CSS.
• Compile TypeScript files to JavaScript.
Siempre tendremos que tener las
siguientes tareas de SPFx
• gulp clean
• gulp build
• gulp bundle –ship
• gulp dev-deploy
• gulp deploy-azure-storage
• gulp package-solution --ship
• gulp deploy-azure-storage
• gulp serve
• gulp trust-dev-cert
Demo SPFx
¿Qué es TypeScript?
Proyecto Open Source
mantenido por Microsoft
que está basado y sigue
la sintaxis de ES6.
Características :
Mas fácil organizar el código base para
aplicaciones a gran escala gracias a los
módulos, namespaces y soporte OOP.
Static typing, código escrito mas predecible y
generalmente mas fácil de debugar.
Paso de compilación a JavaScript: maneja
todos los posibles errores antes que
alcancen runtime y genere errores por
definición de variables, por ejemplo.
El FW Angular 2 esta escrito en TypeScript,
recomendando también usar el lenguaje en los
proyectos que lo usen.
Tipos de Datos
DatosBásicos
• String
• Number
• Boolean
• Any
• Array
• Enum
Objetos
• Clases
• Constructor
• Interfaces
• Shapes
• Decorators
• Generic
Demo TypeScript
¿Qué son los Patrones?
Facade
Organiza subsistemas y provee una interfaz unificada a
alto nivel.
En JS (y por supuesto en TypeScript), tenemos que usar
módulos para organizar el código, ya que, entre otros:
• Hace que los proyectos sean mantenibles.
• Clean Code: ayuda a identificar interconexiones
entre funcionalidades.
• Escalabilidad e Interdependencia: Si el proyecto
crece o es referenciado por otros, es necesario
tener una “API” a alto nivel que exponga solo
ciertos métodos (los que importan para la
funcionalidad que referencia).
Factory
El patrón Factory se usa normalmente cuando una
determinada clase no puede prever exactamente que
objetos crear, o algunas subclases necesitan extender
versiones de estos objetos.
Un Factory method es un método que crea objetos, y
puede depender de otros métodos Factory para
instanciar un determinado objeto.
Provee cierta flexibilidad aportando una complejidad
razonable. Permite ser extendido mediante el override
de Factory methods específicos.
Observer
Patrón en el cual un objeto, llamémoslo “server”,
mantiene una lista de observadores, llamémosles
“clients”, y es capaz de automáticamente notificarles un
cambio en cualquier estado, normalmente mediante
una llamada a uno de sus métodos.
Es usado en la mayoría de arquitecturas MV*.
Normalmente hace un decouple de la vista / UI y la
lógica de negocio : un cambio en la lógica puede ser
notificado a múltiples vistas.
Singleton
Existen ciertos escenarios donde debe existir una sola
instancia de una determinada clase.
Algunos lo consideran un anty-pattern, otros dicen que
es mejor usarlo como reemplazo de las clases static, las
cuales pueden tener problemas de dependencias. Para
MS, es un patrón .
Ejemplos: Elecciones, cola de reservas, …
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example

More Related Content

What's hot

NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017Diego Bersano
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)Senior Dev
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)wildtango
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerErnesto Cardenas Cangahuala
 
Webinar: Introducción a Angular
Webinar: Introducción a AngularWebinar: Introducción a Angular
Webinar: Introducción a AngularArsys
 
Analitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móvilesAnalitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móvilesPlain Concepts
 
Introduccion a Python para la web
Introduccion a Python para la webIntroduccion a Python para la web
Introduccion a Python para la webArsys
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .NetGlobant
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7Luis Ruiz Pavón
 
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEBMEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEBdaliacarolinaastocah
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 Micael Gallego
 
TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2Micael Gallego
 

What's hot (20)

NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017NetRaf 2017 - La plataforma .NET en el 2017
NetRaf 2017 - La plataforma .NET en el 2017
 
MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)MVC & ASP.NET (Spanish)
MVC & ASP.NET (Spanish)
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
ASP.NET MVC (2011)
ASP.NET MVC (2011)ASP.NET MVC (2011)
ASP.NET MVC (2011)
 
Integración Continua usando Team Foundation Server
Integración Continua usando Team Foundation ServerIntegración Continua usando Team Foundation Server
Integración Continua usando Team Foundation Server
 
Webinar: Introducción a Angular
Webinar: Introducción a AngularWebinar: Introducción a Angular
Webinar: Introducción a Angular
 
Analitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móvilesAnalitics: Monitoriza tus aplicaciones móviles
Analitics: Monitoriza tus aplicaciones móviles
 
Introduccion a Python para la web
Introduccion a Python para la webIntroduccion a Python para la web
Introduccion a Python para la web
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net.NET Core General - Globant Tech Insiders .Net
.NET Core General - Globant Tech Insiders .Net
 
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7ReConnect 2015  - ASP.NET 5: MVC 6 y EF 7
ReConnect 2015 - ASP.NET 5: MVC 6 y EF 7
 
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEBMEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
 
01 Introducción a Flash Catalyst
01 Introducción a Flash Catalyst01 Introducción a Flash Catalyst
01 Introducción a Flash Catalyst
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep Dive
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
 
Angular 6
Angular 6Angular 6
Angular 6
 
Introducción a Visual Studio .net
Introducción a Visual Studio .netIntroducción a Visual Studio .net
Introducción a Visual Studio .net
 
TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2TypeScript - Angular 2 - ionic 2
TypeScript - Angular 2 - ionic 2
 

Similar to JS Patterns Applied to a Real World Example

Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Ianpierr Miranda
 
Desarrollo de aplicaciones .net
Desarrollo de aplicaciones .netDesarrollo de aplicaciones .net
Desarrollo de aplicaciones .netJefersonGuevara1
 
Desarrollo de aplicaciones .net
Desarrollo de aplicaciones .netDesarrollo de aplicaciones .net
Desarrollo de aplicaciones .netJefersonGuevara1
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...Adrian Diaz Cervera
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePointAdrian Diaz Cervera
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event managerIvan Ortega
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidadRaelyx Cordero
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions SpanishCDS
 
SharePoint Framework, paso a paso
SharePoint Framework, paso a pasoSharePoint Framework, paso a paso
SharePoint Framework, paso a pasoHaaron Gonzalez
 
Futuro de Desarrollo en SharePoint
Futuro de Desarrollo en SharePointFuturo de Desarrollo en SharePoint
Futuro de Desarrollo en SharePointHaaron Gonzalez
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015 Keopx
 

Similar to JS Patterns Applied to a Real World Example (20)

Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
Proyecto de Aplicación-Implementación de una INTRANET = Colegio Sagrado Coraz...
 
Desarrollo de aplicaciones .net
Desarrollo de aplicaciones .netDesarrollo de aplicaciones .net
Desarrollo de aplicaciones .net
 
Desarrollo de aplicaciones .net
Desarrollo de aplicaciones .netDesarrollo de aplicaciones .net
Desarrollo de aplicaciones .net
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
SharePoint Saturday Barcelona. La importancia de JavaScript en nuestros desar...
 
Framework
FrameworkFramework
Framework
 
Java script para desarrolladores SharePoint
Java script para desarrolladores SharePointJava script para desarrolladores SharePoint
Java script para desarrolladores SharePoint
 
IDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizadosIDEs y Frameworks mas utilizados
IDEs y Frameworks mas utilizados
 
Proyect Evenge. Event manager
Proyect Evenge. Event managerProyect Evenge. Event manager
Proyect Evenge. Event manager
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 
Salesforce III developer day bbva innovation center Madrid by @almazanjl
Salesforce III developer day bbva innovation center Madrid by @almazanjlSalesforce III developer day bbva innovation center Madrid by @almazanjl
Salesforce III developer day bbva innovation center Madrid by @almazanjl
 
Software en la actualidad
Software en la actualidadSoftware en la actualidad
Software en la actualidad
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
SharePoint Framework, paso a paso
SharePoint Framework, paso a pasoSharePoint Framework, paso a paso
SharePoint Framework, paso a paso
 
Futuro de Desarrollo en SharePoint
Futuro de Desarrollo en SharePointFuturo de Desarrollo en SharePoint
Futuro de Desarrollo en SharePoint
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 

More from SUGES (SharePoint Users Group España)

Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...SUGES (SharePoint Users Group España)
 
How to execute SharePoint 2016 upgrade strategy and ensure business continuity
How to execute SharePoint 2016 upgrade strategy and ensure business continuityHow to execute SharePoint 2016 upgrade strategy and ensure business continuity
How to execute SharePoint 2016 upgrade strategy and ensure business continuitySUGES (SharePoint Users Group España)
 

More from SUGES (SharePoint Users Group España) (19)

SharePoint Saturday Madrid 2017 - KeyNote
SharePoint Saturday Madrid 2017 - KeyNoteSharePoint Saturday Madrid 2017 - KeyNote
SharePoint Saturday Madrid 2017 - KeyNote
 
How to use SharePoint PnP assets in real world use cases
How to use SharePoint PnP assets in real world use casesHow to use SharePoint PnP assets in real world use cases
How to use SharePoint PnP assets in real world use cases
 
Domotica #Skype4 b #IoT #Azure #Windows10IoTCore
Domotica #Skype4 b #IoT #Azure #Windows10IoTCoreDomotica #Skype4 b #IoT #Azure #Windows10IoTCore
Domotica #Skype4 b #IoT #Azure #Windows10IoTCore
 
Beyond cards: How to get the most out of Delve
Beyond cards: How to get the most out of DelveBeyond cards: How to get the most out of Delve
Beyond cards: How to get the most out of Delve
 
CDNs para el SharePoint Framework (SPFx)
CDNs para el SharePoint Framework (SPFx)CDNs para el SharePoint Framework (SPFx)
CDNs para el SharePoint Framework (SPFx)
 
Introducción al SharePoint Framework SPFx
Introducción al SharePoint Framework SPFxIntroducción al SharePoint Framework SPFx
Introducción al SharePoint Framework SPFx
 
Probots: Azure Bots y Project Online
Probots: Azure Bots y Project OnlineProbots: Azure Bots y Project Online
Probots: Azure Bots y Project Online
 
Cómo gestionar el ciclo de vida de soluciones SPFx
Cómo gestionar el ciclo de vida de soluciones SPFxCómo gestionar el ciclo de vida de soluciones SPFx
Cómo gestionar el ciclo de vida de soluciones SPFx
 
Extending Microsoft Teams
Extending Microsoft TeamsExtending Microsoft Teams
Extending Microsoft Teams
 
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
Transforming your full-trust solutions to the Add-in model / SharePoint Frame...
 
How to execute SharePoint 2016 upgrade strategy and ensure business continuity
How to execute SharePoint 2016 upgrade strategy and ensure business continuityHow to execute SharePoint 2016 upgrade strategy and ensure business continuity
How to execute SharePoint 2016 upgrade strategy and ensure business continuity
 
Bots & Teams: el poder de Grayskull
Bots & Teams: el poder de GrayskullBots & Teams: el poder de Grayskull
Bots & Teams: el poder de Grayskull
 
Análisis de sentimiento con Flow y Text Analytics
Análisis de sentimiento con Flow y Text AnalyticsAnálisis de sentimiento con Flow y Text Analytics
Análisis de sentimiento con Flow y Text Analytics
 
Text Analytics y Machine Learning como sistema de catalogación
Text Analytics y Machine Learning como sistema de catalogaciónText Analytics y Machine Learning como sistema de catalogación
Text Analytics y Machine Learning como sistema de catalogación
 
Proyecto 360: Combinar lo mejor de Azure y Office 365
Proyecto 360: Combinar lo mejor de Azure y Office 365Proyecto 360: Combinar lo mejor de Azure y Office 365
Proyecto 360: Combinar lo mejor de Azure y Office 365
 
Empowering SharePoint with search capabilities
Empowering SharePoint with search capabilitiesEmpowering SharePoint with search capabilities
Empowering SharePoint with search capabilities
 
SharePoint Framework y React
SharePoint Framework y ReactSharePoint Framework y React
SharePoint Framework y React
 
PowerApps, Flow y Power BI: Gestiona tus procesos corporativos.
PowerApps, Flow y Power BI: Gestiona tus procesos corporativos.PowerApps, Flow y Power BI: Gestiona tus procesos corporativos.
PowerApps, Flow y Power BI: Gestiona tus procesos corporativos.
 
Aprovisionamiento remoto de SharePoint con Azure Functions
Aprovisionamiento remoto de SharePoint con Azure FunctionsAprovisionamiento remoto de SharePoint con Azure Functions
Aprovisionamiento remoto de SharePoint con Azure Functions
 

Recently uploaded

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfvladimiroflores1
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfAnnimoUno1
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 

Recently uploaded (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 

JS Patterns Applied to a Real World Example

  • 1. May 20th, 2017 SharePoint Saturday Madrid SPFX - JS Patterns Applied to a Real World Example Ángel-Rubén Yui - Javier Segura
  • 2. Angel-Rubén Yui Senior Consultant SharePoint/Office365 angelrubenyui Consultor senior de Office365 / SharePoint. Trabaja en Altran España, consultora Gold Partner Microsoft. Miembro de la junta directiva de SUG.CAT. ALTRAN Javier Segura SharePoint Applications Architect @xavi_segcri Office365 / SharePoint consultant working for PlanB GmbH, a German Gold Partner consultancy company. SharePoint Applications Architect at KPMG in Berlin. Member of SUG.CAT. Plan-B Gmbh
  • 3. Gold sponsors ______________ Silver sponsors Bronze sponsors Collaborate Platinum sponsor
  • 4. Please, fill your SPS Madrid passport if you want to participate. You can win one of these gifts: Raffle 10 9 8 Odor Odor@winterfell.com
  • 5. Índice 1. Introducción SPFx 2. Lo más importante a saber de las SPFx Toolchain 3. ¿Qué es TypeScript? 4. Patrones TypeScript 5. Demo Real world 6. Q & A
  • 6.
  • 7. ¿Qué es? FX Nuevo modelo de desarrollo que nos permite crear componentes del lado cliente Características : Personalizaciones ejecutadas en el contexto de la página actual, no en un contexto de Iframe como los Add-Ins. Empaquetar y desplegar código cliente igual que las versiones previas (WSP y Add-Ins). Experiencia de desarrollo: herramientas web actuales. Yeoman , Gulp, NodeJS, NPM, VS Code / Sublime.
  • 8. Presente y futuro Webparts compatibles solo con las Modern Pages. Classic WebPart Pages y Publishing Pages en el roadmap. Es decir, van a cuidar el Legacy. MS usa el mismo modelo que nosotros, SPFx, para desarrollar nuevas funcionalidades en SharePoint.
  • 9. Roadmap 4 Mayo Early Adopoters updates May Ago Nov Ene Feb Jun JulAbr May Ago Sep Oct Nov Dic Anuncio SPFx Agosto - Noviembre Release candidate 9 Enero Generally available Client side webparts 23 febrero
  • 11. •Modelo de ejecución del lado cliente. •Se renderiza y ejecuta en el contexto de la página actual. •Es la única forma (soportada por MS) para customizar modern pages. •Herramientas Open Source & Cross Plattform. •Responsive, accessible & mobile friendly. •Scoped to tenant (las customizaciones estan disponibles en todos los sitios dentro de un tenant). •Limitado a Client side web parts. •Usan API lado cliente (CSOM, REST). •El contexto de ejecución está externalizado de SP (en un IFRAME). •Normalmente se desarrolla con VS en Windows, aunque existe la posibilidad de usar diferentes teconologías en diferentes plataformas. •El scope máximo es tenant y site collection. •Permite desarrollar webparts, WF y mas. •Modelo de ejecución lado cliente. •API lado cliente. •Te permite desarrollar con cualquier entorno / herramientas. •El scope máximo es una página SharePoint. •Desarrollado manualmente y sin tener deployment automático. Características SPFx vs Modelo de desarrollo en SharePoint •Modelo de ejecución del lado servidor. •API completamente server side. •Solamente soportadas en entornos onpremise. •Desarrolladas con Visual Studio en Windows. •La solucion tiene un scope máximo de Farm. •Permite desarrollar webparts, timerjobs, event receivers, feature receivers, etc.
  • 13.
  • 14. Lo mas importante de la Toolchain SPFx
  • 15. NodeJS • Es un runtime que permite la ejecución de Server-side JS. • Esta basado en el V8 JSVM Chromium Proyecto Open Source. • Provee una API para acceder a las típicas funcionalidades de lado servidor (acceso a la maquina local, file input / output, funcionalidades de red, etc.). Nota : Importante instalarse la versión LTS (Long Term Support): La mayor parte de empresas la usa y MS también la recomienda por su estabilidad
  • 16. NPM – Package Manager para NodeJS Permite adquirir y gestionar las dependencias de paquetes en los proyectos. Permitiendo instalar herramientas basadas en Nodejs. Ejemplos: Instalar Yeoman • npm install -g yo Instalar Gulp • npm install -g gulp Instalar TypeScript • npm install –g typescript Nota : Es importante verificar que estamos utilizando la versión de npm 3 o superior.
  • 17. Yeoman - THE WEB'S SCAFFOLDING TOOL FOR MODERN WEBAPPS Es una herramienta que permite crear plantillas de proyectos para generar la estructura de los proyectos. En Microsoft han creado una serie de plantillas para lo que consideran que son las mejores prácticas para iniciar un componente de SPFx, por lo que no tienes que preocuparte por la configuración de carpetas, y las estructuras de nombres.
  • 18. Para crear un nueva solución de webparts de SharePoint se deberá ejecutar el siguiente comando : yo @microsoft/sharepoint
  • 19. Gulp Gulp es un conjunto de herramientas que ayudan a automatizar diversas tareas que consumen mucho tiempo en el flujo de trabajo de desarrollo. Es una plataforma agnóstica, las integraciones están integradas en todos los IDE principales .NET, Node.js, Java y otras plataformas.
  • 20. Gulp SPFx utiliza Gulp para ejecutar los siguientes procesos : • Bundle and minify JavaScript and CSS files. • Run tools to call the bundling and minification tasks before each build. • Compile LESS or SASS files to CSS. • Compile TypeScript files to JavaScript. Siempre tendremos que tener las siguientes tareas de SPFx • gulp clean • gulp build • gulp bundle –ship • gulp dev-deploy • gulp deploy-azure-storage • gulp package-solution --ship • gulp deploy-azure-storage • gulp serve • gulp trust-dev-cert
  • 22.
  • 23. ¿Qué es TypeScript? Proyecto Open Source mantenido por Microsoft que está basado y sigue la sintaxis de ES6. Características : Mas fácil organizar el código base para aplicaciones a gran escala gracias a los módulos, namespaces y soporte OOP. Static typing, código escrito mas predecible y generalmente mas fácil de debugar. Paso de compilación a JavaScript: maneja todos los posibles errores antes que alcancen runtime y genere errores por definición de variables, por ejemplo. El FW Angular 2 esta escrito en TypeScript, recomendando también usar el lenguaje en los proyectos que lo usen.
  • 24. Tipos de Datos DatosBásicos • String • Number • Boolean • Any • Array • Enum Objetos • Clases • Constructor • Interfaces • Shapes • Decorators • Generic
  • 26.
  • 27. ¿Qué son los Patrones?
  • 28. Facade Organiza subsistemas y provee una interfaz unificada a alto nivel. En JS (y por supuesto en TypeScript), tenemos que usar módulos para organizar el código, ya que, entre otros: • Hace que los proyectos sean mantenibles. • Clean Code: ayuda a identificar interconexiones entre funcionalidades. • Escalabilidad e Interdependencia: Si el proyecto crece o es referenciado por otros, es necesario tener una “API” a alto nivel que exponga solo ciertos métodos (los que importan para la funcionalidad que referencia).
  • 29. Factory El patrón Factory se usa normalmente cuando una determinada clase no puede prever exactamente que objetos crear, o algunas subclases necesitan extender versiones de estos objetos. Un Factory method es un método que crea objetos, y puede depender de otros métodos Factory para instanciar un determinado objeto. Provee cierta flexibilidad aportando una complejidad razonable. Permite ser extendido mediante el override de Factory methods específicos.
  • 30. Observer Patrón en el cual un objeto, llamémoslo “server”, mantiene una lista de observadores, llamémosles “clients”, y es capaz de automáticamente notificarles un cambio en cualquier estado, normalmente mediante una llamada a uno de sus métodos. Es usado en la mayoría de arquitecturas MV*. Normalmente hace un decouple de la vista / UI y la lógica de negocio : un cambio en la lógica puede ser notificado a múltiples vistas.
  • 31. Singleton Existen ciertos escenarios donde debe existir una sola instancia de una determinada clase. Algunos lo consideran un anty-pattern, otros dicen que es mejor usarlo como reemplazo de las clases static, las cuales pueden tener problemas de dependencias. Para MS, es un patrón . Ejemplos: Elecciones, cola de reservas, …

Editor's Notes

  1. This slide is mandatory. Please do not remove.
  2. This slide is mandatory. Please do not remove and try to use it during Q&A at the end of your session. Thank you!