Для создания 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());