Compartir a través de


Inserción de JavaScript en SharePoint

Puede usar espacios de nombres para evitar conflictos entre sus personalizaciones de JavaScript y JavaScript de SharePoint estándar o las personalizaciones de JavaScript implementadas por otros desarrolladores.

Los ejemplos y soluciones de OfficeDev/PnP suelen incluir código JavaScript. Para facilitar la comprensión de las técnicas, estos ejemplos suelen ser simples y no usan espacios de nombres al insertar código JavaScript en SharePoint. Es importante asegurarse de seguir los sencillos pasos descritos en este artículo al incorporar ejemplos de PnP en las soluciones.

¿Por qué es importante usar espacios de nombres?

JavaScript es un lenguaje con tipos flexibles. Si define una variable o función y ya existe una variable o función con el mismo nombre en el contexto actual, el nuevo valor o la implementación reemplazará al existente. Como resultado, al insertar código JavaScript en SharePoint, es fácil invalidar el código JavaScript estándar de SharePoint o las personalizaciones implementadas por otros desarrolladores. Esto puede crear conflictos que podrían ser difíciles de identificar y depurar.

Para evitarlo, se recomienda usar espacios de nombres personalizados para el código JavaScript.

Uso de espacios de nombres

En el ejemplo siguiente se muestra un patrón sencillo que se usa para organizar el código JavaScript en espacios de nombres y clases.

var MySolution = MySolution || {};

MySolution.MyClass1 = (function () {
    // private members
    var privateVar1 = 1;
    var privateVar2 = 2;
    
    function privateFunction1(){
      return "";
    }
    
    return {
        // public interface
        myFunction1: function() {
          return privateVar1;
        },
        myFunction2: function(){
          return privateVar2;
        }
    };
})();

Las funciones definidas en la interfaz pública se pueden invocar como:

MySolution.MyClass1.myFunction1();

MySolution.MyClass1.myFunction2();

Dado que todo el código usa el espacio de nombres MySolution personalizado, puede evitar conflictos de nomenclatura.

Espacios de nombres y una estrategia de descarga mínima (MDS)

Con la característica de estrategia de descarga mínima habilitada, los espacios de nombres globales y las variables se borran en la navegación de MDS.
Para conservar el espacio de nombres, declárelo como:

    Type.registerNamespace('MySolution');

El espacio de nombres de tipo es específico de SharePoint, para un uso genérico de la biblioteca de JavaScript:

if (window.hasOwnProperty('Type')) {
    Type.registerNamespace('MySolution');
} else {
    window.MySolution = window.MySolution || {};
}

Espacios de nombres, MDS y CSR (representación del lado cliente)

La RegisterModuleInit función declara un espacio de nombres adecuado Type .
Los archivos adjuntos a JSLink no se vuelven a ejecutar en la navegación de MDS, use las funciones AsyncDeltaManager para ello.

Vea también: