SlideShare una empresa de Scribd logo
1 de 41
JavaScript para Desarrolladores SharePoint 
Adrián Díaz Cervera
15% de descuento en el curso de SharePoint y los libros de 
SharePoint 2013 de principio a fin y Todo sobre Aplicaciones para SharePoint, Office y Office 365 
(en todos los formatos). 
Sólo hasta el 31de Diciembre de 2014. 
Introduce el cupón SUGES2014 al realizar tu compra 
en nuestra tienda online. 
www.campusmvp.es 
Síguenos y descubrirás los mejores trucos y recursos: 
facebook.com/campusmvp twitter.com/campusmvp
00 
¿Quiénes somos?
Adrián Díaz Cervera 
MVP SharePoint Server 
SharePoint Architect en ENCAMINA 
http://blogs.encamina.com/desarrollandosobresharepoint 
http://geeks.ms/blogs/adiazcervera 
adiaz@encamina.com 
addiacer@gmail.com 
@AdrianDiaz81
01 
Un poco de historia
Más de una década de evolución
JavaScript cada vez más presente 
• SharePoint cada vez se adapta a los estándares 
Web. 
• Mejoras en CSOM. 
• API REST en casi cualquier artefacto
¿Por qué no nos gusta JavaScript?
Motivos 
Nombre: No tiene nada que ver con JAVA 
Lenguaje débilmente tipado 
Desconocimiento de JavaScript como POO 
Muchos Framework y gran cantidad de 
cambios
Beneficios
JavaScript: El lenguaje de programación
Ámbitos de las variables 
– C# 
• A nivel de bloque (for, if..) 
• A nivel de función 
• A nivel de clase 
– JavaScript 
• A nivel de función 
http://jsfiddle.net/AdrianDiaz/u2mbnu9o/
Tipos de Variables 
• Todos los objetos son Object (pero se pueden saber de que tipo son) 
• Undefined == Null en .NET 
• Null es una variable sin valor 
• Una variable puede ser integer, boolean y string según nos interese 
• Al ser un lenguaje dinámico podemos ir creando propiedades o variables dependiendo de las 
necesidades 
• Todas las funciones devuelven algo aunque no pongamos un return 
http://jsfiddle.net/AdrianDiaz/sbmqbwya/1/
Clausura 
• Una línea de nuestro código solo puede acceder a variables que tengan un ámbito mayor o superior 
al suyo propio. 
• Concepto +Importante 
http://jsfiddle.net/AdrianDiaz/rvb003fg/1/ http://jsfiddle.net/AdrianDiaz/wxcgah8v/
Clases y prototipos 
• Clases como tal no existen pero … 
http://jsfiddle.net/AdrianDiaz/pjtjtn9q/ 
• Prototipo: 
– Propiedad especial en las funciones constructoras. 
– Contiene métodos y propiedades que van a estar disponibles en todas las instancias de la “clase” 
http://jsfiddle.net/AdrianDiaz/sbmqbwya/
Asíncrono 
• Cambio de pensamiento en nuestros desarrollos 
– Esperamos que termine un método para continuar con la lógica 
– No esperamos que se ejecuten varias funciones a la vez 
• Provoca código “spaghetti”, poco legible e inmantenible 
• Se puede solucionar… PROMISE !!
Iteración en los bucles 
• Diferencias respecto a C# 
http://jsfiddle.net/AdrianDiaz/4hbv7bm5/1/ 
• Porque? Una propiedad en JS es lo mismo que un elemento de un array 
Que tiene SharePoint OOB
Javascript Object Model SharePoint 
• En la versión 2010 fue una de las grandes novedades 
• Casi mismas operaciones SSOM = + Acciones 
http://msdn.microsoft.com/es-es/library/office/jj193034(v=office.15).aspx 
– Social 
– Taxonomy 
– Search 
– Flujos de Trabajo 
– Datos empresariales 
• No mucha documentación 
• PRINCIPAL FALLO: Asegurar que están las librerías JS cargadas 
– Versión 2010 : 
http://msdn.microsoft.com/en-us/library/office/jj245759.aspx 
ExecuteOrDelayUntilScriptLoaded(myInitMethod, "sp.js"); 
– Version 2013 
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
Javascript Object Model SharePoint (Example)
API Rest 
• Importante: 
– Accesible desde cualquier plataforma (Android, IOS, W8) => EveryWhere 
• Casi cualquier endpoint tiene un acceso Rest 
– Search 
– Social 
– List 
– Web 
• Algunos aspectos “curiosos” 
– Acceso a datos persona, taxonomía 
– No tiene todos los tipos de campos 
• En Office 365 mejoras 
– Tamaño del JSON dependiendo de necesidades
API Rest 
• Pero no estábamos hablando de JavaScript? 
– Casi todos los FrameWorks JS están diseñados para tener una capa de Servicios
JSLINK 
• Una “nueva” propiedad que permite inyectar JS en los formularios de listas 
• Beneficios: 
– Personalización más simple de Formularios 
– Adaptar la interfaz a los estándares web 
• Contras: 
– Dificil unir dos listas => Problemas de rendimiento => SP no Relacional
Ventanas Modales
Variables del Contexto (_spPageContextInfo) 
• Nos proporciona información muy valiosa: 
– ID de usuario 
– Url del sitio 
– Url del Web 
– Lenguage dl sitio 
• Evita realizar llamadas extra como por ejemplo usuario que estal ogado 
– http://blogs.encamina.com/desarrollandosobresharepoint/2014/01/28/sharepoint-datos-del-contexto- 
haciendo-uso-de-csom-de-javascript/
Frameworks JavaScript
Frameworks 
• Hay multitud de FrameWorks/ librerías de diferentes proveedores 
• ¿Qué debemos de mirar en el FrameWork? 
– Nuestras necesidades 
• ¿Vamos a utilizar todo lo que nos proporciona? 
– Bindings 
• Mapeo de los datos que se muestran en la Vista contra nuestros modelo de datos 
– Templates 
• Tener plantilla para poder renderizar nuestros datos 
– Route 
• En Aplicaciones SPA indicar que pagina/contenido se va a mostrar 
• SharePoint es una SPA (Minimal Download Strategy)  
– Unit Testing 
• Mocha, Jasmine, etc…
• Librería + Popular 
• Abstracción del DOM 
• Se puede utilizar en la gran mayoría de casos 
• OJO!! Cuidado el Acceso al DOM 
– Ralentizar tu Aplicación 
– Cuelgue del Navegador 
– Bugs 
• Principales problemas 
– UI depende del código 
– Código Espagueti + Boloñesa 
– Aplicaciones sin Estructura 
– Poca Escalabilidad
• Soluciones 
– Generar Namespaces 
– Orden del código 
– Combinarlo con alguna librería 
• Templates: 
– Mustache 
– Knockout 
– Utilizar algún framework más completo 
• Obliga un cierto patrón/ logica
• Solo sirve para generar plantillas 
• Casi un estándar => muchos frameworks lo utilizan 
• Funcionamiento muy simple 
– Separa lógica de aplicación de UI 
– Reutilizable 
• DisplayTemplates ?
• Generador de Formularios 
• Tiene IDE propio Sencha Architect 
• Posibilidad de desarrollo móvil. 
• Inconvenientes: 
– Difícil maquetación 
– Curva de aprendizaje alta
• ¿Por qué es el FrameWork de Moda? 
– Renderizado más rápido 
– Clara separación entre las partes MVC 
– Extendiendo el HTML => Incluso de forma intrusa 
– Inconveniente 
• Amplio conocimiento sobre el Frameworks 
• Desarrollado por Google
Hay Multitud….
TypeScript
• Pretende ayudar a los equipos de programación a definir interfaces entre componentes de software 
• Reducir los conflictos de nomenclatura mediante la organización del código en módulos que se 
pueden cargar de forma dinámica 
• TypeScript es un proyecto Open Source http://typescript.codeplex.com/ 
– Creado por Anders Hejlsberg, Turbo Pascal, C# y Delphi 
• Genera JavaScript 
• Beneficios: 
- Código más homogéneo y mantenible 
- Comprobación estática de tipos 
- Interfaces 
- Módulos
Herramientas
Herramientas 
• Visual Studio 2013 
– WebEssentials => JSHINT (validador de JavaScript, minimizar js) 
• WebStorm o Brackets http://brackets.io/ 
• Bower (Actualización de las librerías JS) 
• Grunt (puede estar integrado con Visual Studio) 
– Quita Console.log, debugger 
– Verificación sintaxis JavaScript, CSS y HTML 
• Herramientas de desarrollo 
– Internet Explorer 
– Chrome + Apps (Rest Console) 
– Mozilla + Firebug
¿Preguntas?

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Modern Admin Center de SharePoint Online o como gobernar sabiamente tus Colec...
Modern Admin Center de SharePoint Online o como gobernar sabiamente tus Colec...Modern Admin Center de SharePoint Online o como gobernar sabiamente tus Colec...
Modern Admin Center de SharePoint Online o como gobernar sabiamente tus Colec...
 
Html5 telefonica-curso
Html5 telefonica-cursoHtml5 telefonica-curso
Html5 telefonica-curso
 
HTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas SemanticasHTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas Semanticas
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
 
Asp.net 4
Asp.net 4Asp.net 4
Asp.net 4
 
HTML5 y CSS3
HTML5 y CSS3HTML5 y CSS3
HTML5 y CSS3
 
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
Joomla! en 10 minutos  - JoomlaDay Sevilla 2015Joomla! en 10 minutos  - JoomlaDay Sevilla 2015
Joomla! en 10 minutos - JoomlaDay Sevilla 2015
 
Elementos de html5 y css3
Elementos de html5 y css3Elementos de html5 y css3
Elementos de html5 y css3
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
 
JavaScript desde Cero
JavaScript desde CeroJavaScript desde Cero
JavaScript desde Cero
 
Tutorial de dreamweaver
Tutorial de dreamweaverTutorial de dreamweaver
Tutorial de dreamweaver
 
Html+css 2013
Html+css 2013Html+css 2013
Html+css 2013
 
Curso html5-v1
Curso html5-v1Curso html5-v1
Curso html5-v1
 
DotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.FormsDotNet 2019: Optimizando Apps con Xamarin.Forms
DotNet 2019: Optimizando Apps con Xamarin.Forms
 
Hola RoR
Hola RoRHola RoR
Hola RoR
 
Programacion web
Programacion webProgramacion web
Programacion web
 
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
Joomla!Day 2013 España - Taller de Desarrollo de Plantillas Joomla! - Sergio ...
 
Html5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoyHtml5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoy
 
Html5, css3, java script
Html5, css3, java scriptHtml5, css3, java script
Html5, css3, java script
 
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
Joomla!Day 2011 España - Taller desarrollo de plantillas Joomla! - Sergio Igl...
 

Destacado

Desarrollador c,c++
Desarrollador c,c++Desarrollador c,c++
Desarrollador c,c++
202527
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
Juan C
 
JavaScript Avanzado
JavaScript AvanzadoJavaScript Avanzado
JavaScript Avanzado
Adolfo Sanz De Diego
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
Any Saula
 

Destacado (20)

Desarrollador c,c++
Desarrollador c,c++Desarrollador c,c++
Desarrollador c,c++
 
Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995Javascript: potenciando la web desde 1995
Javascript: potenciando la web desde 1995
 
Java script
Java scriptJava script
Java script
 
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
JavaScript para Javeros. ¿Cómo ser moderno y no morir en el intento?
 
JavaScript para Programadores Java
JavaScript para Programadores JavaJavaScript para Programadores Java
JavaScript para Programadores Java
 
Introducción a Javascript I
Introducción a Javascript IIntroducción a Javascript I
Introducción a Javascript I
 
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
 
Lenguaje objective c
Lenguaje objective cLenguaje objective c
Lenguaje objective c
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
 
Javascript
JavascriptJavascript
Javascript
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 
Javascript para principiantes -Introducción
Javascript para principiantes -IntroducciónJavascript para principiantes -Introducción
Javascript para principiantes -Introducción
 
Lenguaje de programación java
Lenguaje de programación javaLenguaje de programación java
Lenguaje de programación java
 
manual java
manual javamanual java
manual java
 
Metaprogramación en JavaScript
Metaprogramación en JavaScriptMetaprogramación en JavaScript
Metaprogramación en JavaScript
 
Aprende JavaScript
Aprende JavaScriptAprende JavaScript
Aprende JavaScript
 
#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript#PlatziConf - El camino para ser un Pro en JavaScript
#PlatziConf - El camino para ser un Pro en JavaScript
 
Configuración de NetBeans para Java, C y C++
Configuración de NetBeans para Java, C y C++Configuración de NetBeans para Java, C y C++
Configuración de NetBeans para Java, C y C++
 
JavaScript Avanzado
JavaScript AvanzadoJavaScript Avanzado
JavaScript Avanzado
 
Java y sus caracteristicas
Java y sus caracteristicasJava y sus caracteristicas
Java y sus caracteristicas
 

Similar a Java script para desarrolladores SharePoint

Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3
Marc Rubiño
 
Soluciones de movilidad para nuevos entornos empresariales
Soluciones de movilidad para nuevos entornos empresarialesSoluciones de movilidad para nuevos entornos empresariales
Soluciones de movilidad para nuevos entornos empresariales
Adrian Diaz Cervera
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
Deivinson Tejeda
 

Similar a Java script para desarrolladores SharePoint (20)

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...
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3
 
Desarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones webDesarrollo modermo de aplicaciones web
Desarrollo modermo de aplicaciones web
 
Futuro de Desarrollo en SharePoint
Futuro de Desarrollo en SharePointFuturo de Desarrollo en SharePoint
Futuro de Desarrollo en SharePoint
 
Web matrix. armando nuestros sitios dinámicamente con html5, php y mysql
Web matrix.  armando nuestros sitios dinámicamente con html5, php y mysqlWeb matrix.  armando nuestros sitios dinámicamente con html5, php y mysql
Web matrix. armando nuestros sitios dinámicamente con html5, php y mysql
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
Presentacion cw2012
Presentacion cw2012Presentacion cw2012
Presentacion cw2012
 
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
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
 
Soluciones de movilidad para nuevos entornos empresariales
Soluciones de movilidad para nuevos entornos empresarialesSoluciones de movilidad para nuevos entornos empresariales
Soluciones de movilidad para nuevos entornos empresariales
 
Responsive Web Design con superpoderes
Responsive Web Design con superpoderesResponsive Web Design con superpoderes
Responsive Web Design con superpoderes
 
Kumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y FuturoKumbia PHP Framework - Inicios, Presente y Futuro
Kumbia PHP Framework - Inicios, Presente y Futuro
 
Curso SharePoint 2013 overview
Curso SharePoint 2013 overviewCurso SharePoint 2013 overview
Curso SharePoint 2013 overview
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)Desarrollo Móvil con Android (...y Firebase)
Desarrollo Móvil con Android (...y Firebase)
 
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nubeMsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
MsCodersCamp 2014 - SharePoint Online: desarrolla tus apps en la nube
 
¿Es posible extender a SharePoint 2013? Probablemente en m+as de una forma
¿Es posible extender a SharePoint 2013? Probablemente en m+as de una forma¿Es posible extender a SharePoint 2013? Probablemente en m+as de una forma
¿Es posible extender a SharePoint 2013? Probablemente en m+as de una forma
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 

Más de Adrian Diaz Cervera

Webcast Office365 Introducción a desarrollar con Yammer
Webcast Office365 Introducción a desarrollar con YammerWebcast Office365 Introducción a desarrollar con Yammer
Webcast Office365 Introducción a desarrollar con Yammer
Adrian Diaz Cervera
 

Más de Adrian Diaz Cervera (20)

gRPC vs Rest La batalla final
gRPC vs Rest La batalla finalgRPC vs Rest La batalla final
gRPC vs Rest La batalla final
 
Autenticar y securizar API en .NET Core como un Avenger
Autenticar y securizar API en .NET Core como un AvengerAutenticar y securizar API en .NET Core como un Avenger
Autenticar y securizar API en .NET Core como un Avenger
 
Como desarrollar una api en .NET Core como un autentico Avenger
Como desarrollar una api en .NET Core como un autentico AvengerComo desarrollar una api en .NET Core como un autentico Avenger
Como desarrollar una api en .NET Core como un autentico Avenger
 
React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?React Hooks ¿Por donde empezar?
React Hooks ¿Por donde empezar?
 
Netcore Galica Como crear Apps multitenant en Azure
Netcore Galica Como crear Apps multitenant en AzureNetcore Galica Como crear Apps multitenant en Azure
Netcore Galica Como crear Apps multitenant en Azure
 
Global Azure Devops Bootcamp 2019 => Avengers EndGame
Global Azure Devops Bootcamp 2019 => Avengers EndGameGlobal Azure Devops Bootcamp 2019 => Avengers EndGame
Global Azure Devops Bootcamp 2019 => Avengers EndGame
 
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar AzureAzure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
 
Dockeriza tu SQL Server
Dockeriza tu SQL ServerDockeriza tu SQL Server
Dockeriza tu SQL Server
 
Desarrolla Add-Ins de Office 365 con Angular 2
Desarrolla Add-Ins de Office 365 con Angular 2Desarrolla Add-Ins de Office 365 con Angular 2
Desarrolla Add-Ins de Office 365 con Angular 2
 
Docker para desarrolladores .NET
Docker para desarrolladores .NETDocker para desarrolladores .NET
Docker para desarrolladores .NET
 
Helo10 Da inteligencia a tus Apps con el proyecto Oxford
Helo10 Da inteligencia a tus Apps con el proyecto OxfordHelo10 Da inteligencia a tus Apps con el proyecto Oxford
Helo10 Da inteligencia a tus Apps con el proyecto Oxford
 
Asp vNext Is Comming
Asp vNext Is CommingAsp vNext Is Comming
Asp vNext Is Comming
 
Gapand 2015 machine learning
Gapand 2015 machine learningGapand 2015 machine learning
Gapand 2015 machine learning
 
ALM y Office 365
ALM y Office 365 ALM y Office 365
ALM y Office 365
 
Machine learning utilizacion en redes sociales
Machine learning utilizacion en redes socialesMachine learning utilizacion en redes sociales
Machine learning utilizacion en redes sociales
 
Adrian diaz desarrollo multiplataforma en office 365
Adrian diaz desarrollo multiplataforma en office 365Adrian diaz desarrollo multiplataforma en office 365
Adrian diaz desarrollo multiplataforma en office 365
 
Extender office365
Extender office365 Extender office365
Extender office365
 
IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014IT Camps Apps Office 365 Valencia 2014
IT Camps Apps Office 365 Valencia 2014
 
Share point y los dispositivos moviles
Share point y los dispositivos movilesShare point y los dispositivos moviles
Share point y los dispositivos moviles
 
Webcast Office365 Introducción a desarrollar con Yammer
Webcast Office365 Introducción a desarrollar con YammerWebcast Office365 Introducción a desarrollar con Yammer
Webcast Office365 Introducción a desarrollar con Yammer
 

Java script para desarrolladores SharePoint

  • 1. JavaScript para Desarrolladores SharePoint Adrián Díaz Cervera
  • 2. 15% de descuento en el curso de SharePoint y los libros de SharePoint 2013 de principio a fin y Todo sobre Aplicaciones para SharePoint, Office y Office 365 (en todos los formatos). Sólo hasta el 31de Diciembre de 2014. Introduce el cupón SUGES2014 al realizar tu compra en nuestra tienda online. www.campusmvp.es Síguenos y descubrirás los mejores trucos y recursos: facebook.com/campusmvp twitter.com/campusmvp
  • 4. Adrián Díaz Cervera MVP SharePoint Server SharePoint Architect en ENCAMINA http://blogs.encamina.com/desarrollandosobresharepoint http://geeks.ms/blogs/adiazcervera adiaz@encamina.com addiacer@gmail.com @AdrianDiaz81
  • 5. 01 Un poco de historia
  • 6.
  • 7. Más de una década de evolución
  • 8. JavaScript cada vez más presente • SharePoint cada vez se adapta a los estándares Web. • Mejoras en CSOM. • API REST en casi cualquier artefacto
  • 9. ¿Por qué no nos gusta JavaScript?
  • 10. Motivos Nombre: No tiene nada que ver con JAVA Lenguaje débilmente tipado Desconocimiento de JavaScript como POO Muchos Framework y gran cantidad de cambios
  • 12. JavaScript: El lenguaje de programación
  • 13. Ámbitos de las variables – C# • A nivel de bloque (for, if..) • A nivel de función • A nivel de clase – JavaScript • A nivel de función http://jsfiddle.net/AdrianDiaz/u2mbnu9o/
  • 14. Tipos de Variables • Todos los objetos son Object (pero se pueden saber de que tipo son) • Undefined == Null en .NET • Null es una variable sin valor • Una variable puede ser integer, boolean y string según nos interese • Al ser un lenguaje dinámico podemos ir creando propiedades o variables dependiendo de las necesidades • Todas las funciones devuelven algo aunque no pongamos un return http://jsfiddle.net/AdrianDiaz/sbmqbwya/1/
  • 15. Clausura • Una línea de nuestro código solo puede acceder a variables que tengan un ámbito mayor o superior al suyo propio. • Concepto +Importante http://jsfiddle.net/AdrianDiaz/rvb003fg/1/ http://jsfiddle.net/AdrianDiaz/wxcgah8v/
  • 16. Clases y prototipos • Clases como tal no existen pero … http://jsfiddle.net/AdrianDiaz/pjtjtn9q/ • Prototipo: – Propiedad especial en las funciones constructoras. – Contiene métodos y propiedades que van a estar disponibles en todas las instancias de la “clase” http://jsfiddle.net/AdrianDiaz/sbmqbwya/
  • 17. Asíncrono • Cambio de pensamiento en nuestros desarrollos – Esperamos que termine un método para continuar con la lógica – No esperamos que se ejecuten varias funciones a la vez • Provoca código “spaghetti”, poco legible e inmantenible • Se puede solucionar… PROMISE !!
  • 18. Iteración en los bucles • Diferencias respecto a C# http://jsfiddle.net/AdrianDiaz/4hbv7bm5/1/ • Porque? Una propiedad en JS es lo mismo que un elemento de un array 
  • 19.
  • 21. Javascript Object Model SharePoint • En la versión 2010 fue una de las grandes novedades • Casi mismas operaciones SSOM = + Acciones http://msdn.microsoft.com/es-es/library/office/jj193034(v=office.15).aspx – Social – Taxonomy – Search – Flujos de Trabajo – Datos empresariales • No mucha documentación • PRINCIPAL FALLO: Asegurar que están las librerías JS cargadas – Versión 2010 : http://msdn.microsoft.com/en-us/library/office/jj245759.aspx ExecuteOrDelayUntilScriptLoaded(myInitMethod, "sp.js"); – Version 2013 SP.SOD.executeFunc('sp.js', 'SP.ClientContext', sharePointReady);
  • 22. Javascript Object Model SharePoint (Example)
  • 23. API Rest • Importante: – Accesible desde cualquier plataforma (Android, IOS, W8) => EveryWhere • Casi cualquier endpoint tiene un acceso Rest – Search – Social – List – Web • Algunos aspectos “curiosos” – Acceso a datos persona, taxonomía – No tiene todos los tipos de campos • En Office 365 mejoras – Tamaño del JSON dependiendo de necesidades
  • 24. API Rest • Pero no estábamos hablando de JavaScript? – Casi todos los FrameWorks JS están diseñados para tener una capa de Servicios
  • 25. JSLINK • Una “nueva” propiedad que permite inyectar JS en los formularios de listas • Beneficios: – Personalización más simple de Formularios – Adaptar la interfaz a los estándares web • Contras: – Dificil unir dos listas => Problemas de rendimiento => SP no Relacional
  • 27. Variables del Contexto (_spPageContextInfo) • Nos proporciona información muy valiosa: – ID de usuario – Url del sitio – Url del Web – Lenguage dl sitio • Evita realizar llamadas extra como por ejemplo usuario que estal ogado – http://blogs.encamina.com/desarrollandosobresharepoint/2014/01/28/sharepoint-datos-del-contexto- haciendo-uso-de-csom-de-javascript/
  • 29.
  • 30. Frameworks • Hay multitud de FrameWorks/ librerías de diferentes proveedores • ¿Qué debemos de mirar en el FrameWork? – Nuestras necesidades • ¿Vamos a utilizar todo lo que nos proporciona? – Bindings • Mapeo de los datos que se muestran en la Vista contra nuestros modelo de datos – Templates • Tener plantilla para poder renderizar nuestros datos – Route • En Aplicaciones SPA indicar que pagina/contenido se va a mostrar • SharePoint es una SPA (Minimal Download Strategy)  – Unit Testing • Mocha, Jasmine, etc…
  • 31. • Librería + Popular • Abstracción del DOM • Se puede utilizar en la gran mayoría de casos • OJO!! Cuidado el Acceso al DOM – Ralentizar tu Aplicación – Cuelgue del Navegador – Bugs • Principales problemas – UI depende del código – Código Espagueti + Boloñesa – Aplicaciones sin Estructura – Poca Escalabilidad
  • 32. • Soluciones – Generar Namespaces – Orden del código – Combinarlo con alguna librería • Templates: – Mustache – Knockout – Utilizar algún framework más completo • Obliga un cierto patrón/ logica
  • 33. • Solo sirve para generar plantillas • Casi un estándar => muchos frameworks lo utilizan • Funcionamiento muy simple – Separa lógica de aplicación de UI – Reutilizable • DisplayTemplates ?
  • 34. • Generador de Formularios • Tiene IDE propio Sencha Architect • Posibilidad de desarrollo móvil. • Inconvenientes: – Difícil maquetación – Curva de aprendizaje alta
  • 35. • ¿Por qué es el FrameWork de Moda? – Renderizado más rápido – Clara separación entre las partes MVC – Extendiendo el HTML => Incluso de forma intrusa – Inconveniente • Amplio conocimiento sobre el Frameworks • Desarrollado por Google
  • 38. • Pretende ayudar a los equipos de programación a definir interfaces entre componentes de software • Reducir los conflictos de nomenclatura mediante la organización del código en módulos que se pueden cargar de forma dinámica • TypeScript es un proyecto Open Source http://typescript.codeplex.com/ – Creado por Anders Hejlsberg, Turbo Pascal, C# y Delphi • Genera JavaScript • Beneficios: - Código más homogéneo y mantenible - Comprobación estática de tipos - Interfaces - Módulos
  • 40. Herramientas • Visual Studio 2013 – WebEssentials => JSHINT (validador de JavaScript, minimizar js) • WebStorm o Brackets http://brackets.io/ • Bower (Actualización de las librerías JS) • Grunt (puede estar integrado con Visual Studio) – Quita Console.log, debugger – Verificación sintaxis JavaScript, CSS y HTML • Herramientas de desarrollo – Internet Explorer – Chrome + Apps (Rest Console) – Mozilla + Firebug

Notas del editor

  1. Versión de portada para Ofertas. Si utilizas esta, elimina las otras tres.
  2. Si el documento lleva más de tres secciones, repite los bloques de color por el mismo orden: azul, verde, morado.