Windows 8 Metro风格的应用程序:必须使用WinJS吗?

Windows 8 Metro风格的应用程序:必须使用WinJS吗?,windows-8,microsoft-metro,windows-runtime,winjs,Windows 8,Microsoft Metro,Windows Runtime,Winjs,昨天,我开始使用JavaScript开发我的第一个Metro风格的应用程序。 我在VisualStudio2011中使用了其中一个模板。此项目模板附带了大量生成的代码,这些代码严重依赖于WinJS。整个结构使人想起ASP.NET及其视图和相应的代码隐藏文件。还有一个navigator.js文件,负责视图之间的导航。整个数据驻留在data.js中,可以使用不同的函数进行检索 我使用了backbone.js,发现它的MVC结构和路由等概念非常酷。我的问题是,您是否可以使用backbone.js实现这

昨天,我开始使用JavaScript开发我的第一个Metro风格的应用程序。 我在VisualStudio2011中使用了其中一个模板。此项目模板附带了大量生成的代码,这些代码严重依赖于WinJS。整个结构使人想起ASP.NET及其视图和相应的代码隐藏文件。还有一个navigator.js文件,负责视图之间的导航。整个数据驻留在data.js中,可以使用不同的函数进行检索

我使用了backbone.js,发现它的MVC结构和路由等概念非常酷。我的问题是,您是否可以使用backbone.js实现这样一个Metro风格的应用程序? 我能消除WinJS,从头开始吗?我是否应该尝试将backbone.js集成到当前结构中?那会是什么样子?使用第三方JavaScript框架有任何限制吗?我应该让生成的结构保持原样吗

使用JavaScript开发Metro风格的应用程序的最佳实践和模式是什么


谢谢

您可以在Metro风格的JavaScript应用程序中使用任何您喜欢的JavaScript框架。请参阅关于jQuery的相关问题:

WinJS框架执行两个功能,第一个是一组用于管理和操作数据、发出服务请求等的非UI API。。。它们很容易被其他JavaScript框架取代。第二个是UI层,在这里您可能会有点挣扎。WinJSUI的设计遵循Metro设计语言。如果您将其替换为自己的UI层(例如使用jQuery UI),您的应用程序将看起来不太正常


就我个人而言,我会在UI层使用WinJS,并与运行时集成(状态持久性、应用程序切换等),但在我的大部分代码中使用更标准的JavaScript库,如主干或敲除,以确保可移植性。

我使用敲除js,MVVM需要使用js。对于视觉效果,我使用jQuery

我的data main看起来有点像这样:

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

如果您更喜欢主干网,我想设置也会类似。

谢谢ColinE的好主意!我仍在努力想象这样一个建筑。我会用主干式路由替换navigator.js中的逻辑吗?是否需要Backbone.View,还是使用WinJSUI及其模板和绑定?或者我应该将WinJS UI代码包装在Backbone.View中吗?仍有一些事件控制应用程序的生命周期,如呈现视图时的“就绪”事件。我在哪里处理这些?很高兴认识到可以使用其他框架,但它们的集成导致headacheWinJS由三部分组成:样式表、base.js和ui.js。如果你对样式表有依赖性,那么你将很容易使它看起来“正确”。我真的想知道,如果使用WinJS进行绑定之类的操作,是否会带来巨大的性能提升,有人对此有任何信息吗?