Inserção de JavaScript no SharePoint
Você pode usar namespaces para evitar conflitos entre suas personalizações JavaScript e personalizações Padrão do SharePoint JavaScript ou JavaScript implantadas por outros desenvolvedores.
Os exemplos e soluções do OfficeDev/PnP geralmente incluem código JavaScript. Para facilitar a compreensão das técnicas, esses exemplos geralmente são simples e não usam namespaces ao inserir código JavaScript no SharePoint. É importante garantir que você siga as etapas simples descritas neste artigo ao incorporar amostras PnP em suas soluções.
Por que usar namespaces é importante
JavaScript é uma linguagem vagamente tipada. Se você definir uma variável ou função e uma variável ou função com o mesmo nome já existir no contexto atual, o novo valor ou implementação substituirá o existente. Como resultado, ao inserir o código JavaScript no SharePoint, é fácil substituir o código JavaScript padrão do SharePoint ou personalizações implantadas por outros desenvolvedores. Isso pode criar conflitos que podem ser difíceis de identificar e depurar.
Para evitar isso, recomendamos que você use namespaces personalizados para seu código JavaScript.
Como usar namespaces
O exemplo a seguir mostra um padrão simples usado para organizar o código JavaScript em namespaces e classes.
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;
}
};
})();
As funções definidas na interface pública podem ser invocadas como:
MySolution.MyClass1.myFunction1();
MySolution.MyClass1.myFunction2();
Como todo o código usa o namespace mySolution personalizado, você pode evitar conflitos de nomenclatura.
Namespaces e MDS (Estratégia mínima de download)
Com o recurso de estratégia de download mínimo habilitado, namespaces globais e variáveis são desmarcados na navegação MDS.
Para manter o Namespace, declare-o como:
Type.registerNamespace('MySolution');
O Namespace de Tipo é específico do SharePoint para um uso genérico da biblioteca JavaScript:
if (window.hasOwnProperty('Type')) {
Type.registerNamespace('MySolution');
} else {
window.MySolution = window.MySolution || {};
}
Namespaces, MDS e CSR (Renderização lateral do cliente)
A RegisterModuleInit
função declara um Namespace adequado Type
.
Os arquivos anexados ao JSLink não são executados novamente na navegação MDS, usam as funções AsyncDeltaManager para isso.