Пространства имён в WinJS

Для создания Windows Runtime приложений с помощью JavaScript, HTML, CSS библиотека WinJS предоставляет следующие возможности: namespaces, modules, promises, и query selectors. 

Использование namespaces и modules вместо добавления всего в глобальное пространство имен позволяет облегчить поддержку приложения.

Namespaces группировать и организовывать общие функциональности. Языки C#, VB.NET, Java также предоставляют пространства имен. Для объявления пространства имен можно использовать метод WinJS.Namespace.define. Этот метод принимает два параметра:
  • Name: Имя нового пространства имён.
  • Members: Опциональный параметр. Этот параметр представляет собой список объектов, которые должны быть добавлены к определяемому пространству имен.

Добавим в проект новый .js файл со следующим содержанием:


// Define the Namespace Developerpublish
WinJS.Namespace.define("DeveloperPublish");
// Utilities created in the DeveloperPublish Namespace
DeveloperPublish.Utilities = {
    DisplayMessage: function () {
        return "Message from DeveloperPublish Namespace";
    }
};

// Define the Namespace Apress and create the Utilities under it.
WinJS.Namespace.define("Apress",
 {
     Utilities: {
         DisplayMessage: function () {
             return "Message from Apress Namespace";
         }
     }
 });

console.log(DeveloperPublish.Utilities.DisplayMessage());
console.log(Apress.Utilities.DisplayMessage());

Далее нужно подключить этот файл в index.html, например так:
<script src="js/WinJSFundamentals.js"></script>

После запуска в консоли должен появиться лог сообщений:


Следующие объекты и функции являются частью WinJS.Namespace:
  • promise: This object provides the mechanism to implement asynchronous programming in your JavaScript code.
  • validation: This property can be set to display the results of the validation.
  • define: This function defines a new namespace with the specified name.
  • defineWithParent: This function defines a namespace with a specified name under a specified parent namespace.
  • log: This function writes the output to the JavaScript console window in Visual Studio 2015.
  • xhr: This function wraps the calls made to the XMLHttpRequest in a promise.

Метод WinJS.Namespace.defineWithParent позволяет добавить одно пространство имен к другому.

WinJS.Namespace.define("Apress");
WinJS.Namespace.defineWithParent(Apress, "Books",
 {
     Utilities:
     {
         DisplayMessage: function () {
             return "Message from Apress.Books Namespace";
         }
     }
 }
);
console.log(Apress.Books.Utilities.DisplayMessage());