2012-04-03 104 views
14

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

我与backbone.js一起工作,我发现它的概念,如MVC结构和路由很酷。我的问题基本上是如果你可以使用backbone.js来实现这样一个Metro风格的应用程序? 我可以消除WinJS,并从头开始?我应该尝试将backbone.js集成到当前结构中吗?那么它会是什么样子?使用第三方JavaScript框架有什么限制吗?我应该离开生成的结构吗?

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

谢谢

回答

9

您可以在Metro风格的JavaScript应用程序中使用您喜欢的任何JavaScript框架。看到j​​Query的此相关的问题:

jQuery and Windows 8 JavaScript Metro Style Apps

的WinJS框架进行了几个功能,首先是一组非UI API进行管理和操作数据,使得服务请求等......这些都是很容易被其他JavaScript框架取代。第二个是UI层,在这里你可能会困难一些。 WinJS用户界面的设计遵循Metro设计语言。如果你用自己的UI层替换它(例如使用jQuery UI),你的应用程序看起来就不太合适。

就我个人而言,我会使用WinJS作为用户界面层,并与运行时(状态持久性,应用切换等)集成在一起,但是对于我的大部分代码使用更加标准的JavaScript库,例如Backbone或Knockout以确保可移植性。

+0

感谢ColinE的好主意!我仍然在努力想象这样的架构。我会用主干风格路由替换navigator.js中的逻辑吗?是否需要Backbone.View或者我会使用它的模板和绑定来坚持WinJS UI?或者我应该将WinJS UI代码隐藏在Backbone.View中?当视图呈现时,仍有一些事件控制应用程序的生命周期,例如“就绪”事件。我会在哪里处理这些?很高兴认识到可以使用其他框架,但是它们的集成导致头痛。 – Helikaon 2012-04-03 07:54:26

+3

WinJS由三部分组成:样式表,base.js和ui.js.如果你依赖于样式表,那么你就不会有任何问题使它看起来很正确。 – 2012-07-12 04:57:59

+1

我真的很想知道,如果使用WinJS进行绑定等操作会带来巨大的性能提升,有没有人有任何关于此的信息? – 2012-09-02 12:30:14

0

我使用Knockout js和Require js for 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(); 
})(); 

如果您喜欢在代替骨干,我猜的设置是相似的。

相关问题