Windows 8 应用程序:WinJS 是必需的吗?

14

昨天我开始使用JavaScript开发我的第一个Metro风格的应用程序。我在Visual Studio 2011中使用了其中一种模板。该项目模板带有大量依赖WinJS的生成代码。整个结构类似于具有视图和对应代码后台文件的ASP.NET。还有一个navigator.js文件负责视图之间的导航。整个数据存储在data.js中,可以使用不同的函数检索。

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

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

谢谢

2个回答

9

在Metro风格的JavaScript应用程序中,您可以使用任何喜欢的JavaScript框架。有关jQuery的信息,请参见此相关问题:

jQuery 和 Windows 8 JavaScript Metro 风格应用程序

WinJS框架执行了一些功能,第一个是一组非UI API,用于管理和操作数据,发出服务请求等。这些可以轻松地替换为其他JavaScript框架。第二个是UI层,这里可能会有点困难。 WinJS UI已经设计成遵循Metro设计语言。如果您用自己的UI层(例如使用jQuery UI)来替换它,则您的应用程序将看起来不太正常。

个人建议使用WinJS作为UI层并与运行时集成(状态持续性、应用程序切换等),但使用更标准的JavaScript库,如Backbone或Knockout,来编写大部分代码以确保可移植性。


感谢ColinE提供的好点子!我仍然在努力想象这样的架构。我应该用backbone风格的路由替换navigator.js中的逻辑吗?需要使用Backbone.View吗,还是应该沿用WinJS UI与其模板和绑定?或者,我应该将WinJS UI代码放在Backbone.View中?仍有一些事件来控制应用程序的生命周期,例如当View被呈现时触发的“ready”事件。我应该在哪里处理这些事件?能够使用其他框架很不错,但它们的集成也会引起头疼。 - Helikaon
3
WinJS由三个部分组成:样式表、base.js和ui.js。如果你依赖于样式表,那么你就不会有麻烦,可以使其“看起来正确”。 - Jeremy Foster
1
我真的很想知道在像绑定这样的事情上使用WinJS是否会带来巨大的性能提升,有人有相关信息吗? - Andrew Plummer

0
我使用 Knockout js 和 Require js 进行 MVVM 开发。 对于视觉效果,我使用 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();
})();

如果您更喜欢使用Backbone,我想设置方式应该是类似的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接