Поделиться через


Внедрение JavaScript в SharePoint

Пространства имен можно использовать, чтобы избежать конфликтов между настройками JavaScript и стандартными настройками SharePoint JavaScript или JavaScript, развернутыми другими разработчиками.

Примеры и решения OfficeDev/PnP часто включают код JavaScript. Чтобы упростить понимание методов, эти примеры обычно просты и не используют пространства имен при внедрении кода JavaScript в SharePoint. При включении примеров PnP в решения важно выполнить простые действия, описанные в этой статье.

Почему важно использовать пространства имен

JavaScript — это слабо типизированный язык. Если вы определяете переменную или функцию, а переменная или функция с тем же именем уже существует в текущем контексте, новое значение или реализация заменит существующее. В результате при внедрении кода JavaScript в SharePoint можно легко переопределить стандартный код JavaScript sharePoint или настройки, развернутые другими разработчиками. Это может привести к возникновению конфликтов, которые может быть трудно идентифицировать и отлаживать.

Чтобы избежать этого, рекомендуется использовать пользовательские пространства имен для кода JavaScript.

Использование пространств имен

В следующем примере показан простой шаблон, используемый для организации кода JavaScript в пространствах имен и классах.

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;
        }
    };
})();

Функции, определенные в общедоступном интерфейсе, можно вызывать следующим образом:

MySolution.MyClass1.myFunction1();

MySolution.MyClass1.myFunction2();

Так как весь код использует пользовательское пространство имен MySolution , можно избежать конфликтов имен.

Пространства имен и стратегия минимального скачивания (MDS)

Если включена функция стратегии минимального скачивания , глобальные пространства имен и переменные очищаются в навигации MDS.
Чтобы сохранить пространство имен, объявите его как:

    Type.registerNamespace('MySolution');

Пространство имен Type предназначено только для SharePoint, для использования универсальной библиотеки JavaScript:

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

Пространства имен, MDS и CSR (отрисовка на стороне клиента)

Функция RegisterModuleInit объявляет правильное Type пространство имен.
Файлы, присоединенные с помощью JSLink, не выполняются повторно при навигации MDS. Для этого используйте функции AsyncDeltaManager.

См. также: