Приложения Metro Style: WinJS обязательно?

Вчера я начал разрабатывать свое первое приложение стиля Metro, используя JavaScript. Я использовал один из этих шаблонов в Visual Studio 2011. Этот шаблон проекта поставляется с кучей сгенерированного кода, который в значительной степени зависит от WinJS. Вся структура напоминает ASP.NET с ее представлениями и соответствующими файлами Code Behind. Существует также файл navigator.js, который отвечает за навигацию между представлениями. Все данные хранятся в data.js и могут быть получены с использованием различных функций.

Я работал с backbone.js, и я нашел свои концепции, такие как структура MVC и маршрутизация довольно крутой. Мой вопрос в основном, если вы можете реализовать такое приложение Metro style, используя backbone.js? Могу ли я удалить WinJS и начать с нуля? Должен ли я попытаться интегрировать backbone.js в текущую структуру? Как бы это выглядело тогда? Существуют ли какие-либо ограничения для использования сторонних JavaScript-фреймворков? Должен ли я оставить созданную структуру такой, какой она есть?

Каковы лучшие практики и шаблоны разработки приложений Metro Style с JavaScript?

Спасибо

Ответы

Ответ 1

Вы можете использовать любую инфраструктуру JavaScript, которая вам нравится в приложении JavaScript в стиле Metro. См. Этот связанный вопрос о jQuery:

jQuery и приложения для стилей JavaScript в стиле Windows 8

В среде WinJS реализована пара функций, первая из которых - это набор API-интерфейсов, отличных от UI, для управления и обработки данных, создания сервисных запросов и т.д. Они легко заменяются другими фреймворками JavaScript. Второй - слой пользовательского интерфейса, здесь вы можете немного поработать. Пользовательский интерфейс WinJS был разработан, чтобы следить за языком дизайна Metro. Если вы замените его собственным слоем пользовательского интерфейса (например, с помощью jQuery UI), ваше приложение будет выглядеть не так.

Лично я бы использовал WinJS для слоя пользовательского интерфейса и интегрировался со средой выполнения (state persistance, переключением приложений и т.д.), но используйте более стандартную библиотеку JavaScript, такую ​​как Backbone или Knockout, для большей части моего кода, чтобы обеспечить переносимость.

Ответ 2

Я использую Knockout js и требую js для MVVM. Для визуальных эффектов я использую jQuery.

Моя основная информация выглядит примерно так:

(function () {
    "use strict";

    var app = WinJS.Application;

    app.onactivated = function (eventObject) {
        require(["/scripts/knockout"], function(ko){
            // My knockout viewModel and data binding goes here
        });
    };

    app.start();
})();

Если вы предпочитаете Backbone вместо этого, я думаю, что настройка будет аналогичной.