Arquitectura, buenas prácticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016

[SharePoint] Datos del Contexto haciendo uso de CSOM de JavaScript

A la hora de desarrollar cuando estamos trabajando con el modelo de objetos de Servidor, ya hemos visto cómo podemos utilizar el objeto SPContext de una forma eficiente para obtener ciertos parámetros relativos a la conexión que estamos haciendo, como por ejemplo, el usuario que está conectado, la url relativa y ciertos valores que ya tenemos cargados y, por lo tanto, no tenemos que consultar. Podéis visualizar todos los métodos y propiedades en este link de Technet

Ahora bien, cada vez JavaScript está más presente dentro de la forma en la que desarrollamos para SharePoint y, por lo tanto, hay aspectos que tenemos que conocer y utilizar. Una mala practica que solemos hacer, es, por ejemplo, cómo obtenemos el usuario del Contexto. Es más: por ejemplo, si creamos un Proyecto de una APP de tipo SharePoint Hosted ya nos deja indicado cómo podemos consultar el usuario del contexto. El ejemplo muestra el siguiente código:


var context = SP.ClientContext.get_current();

var user = context.get_web().get_currentUser();

// Este código se ejecuta cuando el DOM está preparado y crea un objeto de contexto necesario para poder usar el modelo de objetos de SharePoint

$(document).ready(function () {

    getUserName();

});

// Esta función prepara, carga y ejecuta una consulta de SharePoint para obtener información del usuario actual

function getUserName() {

    context.load(user);

    context.executeQueryAsync(onGetUserNameSuccess, onGetUserNameFail);

}

// Esta función se ejecuta si la llamada anterior se realiza correctamente

// Reemplaza el contenido del elemento 'message' con el nombre de usuario

function onGetUserNameSuccess() {

    $('#message').text('Hello ' + user.get_title());

}

// Esta función se ejecuta si se produce un error en la llamada anterior

function onGetUserNameFail(sender, args) {

    alert('Failed to get user name. Error:' + args.get_message());

}

Esto es una opción para obtener los datos del usuario, pero para ello, tenemos que realizar un petición al modelo de objetos de cliente. Yo no considero esta practica la mejor porque, por un lado, ésta información ya la tenemos disponible en una variable y, por lo tanto, la podemos utilizar sin ningún problema y sin realizar ninguna operación.

¿Donde está ésta variable?
Pues la respuesta es fácil: si abrimos la ventana de depuración del navegador haciendo uso de las herramientas de depuración de cualquier navegador moderno, podemos obtener esta información. Personalmente, me gustan mucho las herramientas de depuración que tiene Chrome: podemos poner cualquier punto de interrupción, depurar las llamadas realizadas, mirar tiempos de carga, analizar el rendimiento del JavaScript y muchas cosas más. IE en su versión 11 ha evolucionado mucho respecto a otras versiones, pero me falta algo más sencillo como hacemos con Visual Studio. Para obtener estos datos pulsamos F12 en el navegador vamos a la pestaña de Console e introducimos este objeto _spPageContextInfo y se visualiza esta información:
DetalleChrome
Este objeto tiene mucha información desde el Usuario como podemos observar viendo el userId, hasta la página que estamos visualizando, la URL del servidor, el pagelayout que está utilizando, el lenguaje de la web, el idioma, etc. Es decir, muchos de los valores que consultamos implícitamente haciendo uso del modelo de objetos en algunas ocasiones no hace falta que lo consultemos, ya que disponemos la información en el contexto y por lo tanto, hacer la consulta solamente penaliza el rendimiento.

mm

Sobre Adrián Díaz

Adrián Díaz es Ingeniero Informático por la Universidad Politécnica de Valencia. Es MVP de Microsoft en la categoría Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnologías Microsoft más de 10 años y desde hace 3 años está centrado en el desarrollo sobre SharePoint. Actualmente es Software & Cloud Architect Lead en ENCAMINA.
Esta entrada ha sido publicada en buenas practicas, sharepoint 2013 y etiquetada como , . Enlace permanente .
Suscríbete a Desarrollando sobre SharePoint

Suscríbete a Desarrollando sobre SharePoint

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores