2012-04-03 3 views
14

Gestern habe ich mit der Entwicklung meiner ersten Metro-App mit JavaScript begonnen. Ich habe eine dieser Vorlagen in Visual Studio 2011 verwendet. Diese Projektvorlage enthält eine Menge generierten Code, der stark von WinJS abhängt. Die gesamte Struktur erinnert mit ihren Views und entsprechenden Code Behind-Dateien an ASP.NET. Es gibt auch eine navigator.js-Datei, die für die Navigation zwischen den Ansichten zuständig ist. Die gesamten Daten befinden sich in der Datei data.js und können mit verschiedenen Funktionen abgerufen werden.Metro Style Apps: WinJS ein Muss?

Ich arbeitete mit backbone.js und ich fand seine Konzepte wie MVC-Struktur und Routing ziemlich cool. Meine Frage ist im Grunde, wenn Sie eine solche Metro-Stil-App mit backbone.js implementieren können? Kann ich WinJS eliminieren und einfach von vorne anfangen? Sollte ich versuchen, backbone.js in die aktuelle Struktur zu integrieren? Wie würde es dann aussehen? Gibt es Einschränkungen für die Verwendung von JavaScript-Frameworks von Drittanbietern? Soll ich die generierte Struktur so lassen wie sie ist?

Welche Best Practices und Patterns entwickeln Metro Style Apps mit JavaScript?

Dank

Antwort

9

Sie können jeden beliebigen JavaScript-Framework verwenden Sie innerhalb einer Metro-Style-JavaScript-Anwendung mögen. Sehen Sie diese ähnliche Frage zu jQuery:

jQuery and Windows 8 JavaScript Metro Style Apps

Der WinJS Rahmen führt ein paar Funktionen, die erste ist eine Reihe von Nicht-UI-APIs für die Verwaltung und Bearbeitung von Daten, Service-Anfragen machen etc ... Dies sind leicht durch andere JavaScript-Frameworks ersetzt werden. Die zweite ist die UI-Ebene, hier könnten Sie ein wenig kämpfen. Die WinJS-Benutzeroberfläche wurde entworfen, um der Metro Design Language zu folgen. Wenn Sie es durch Ihre eigene UI-Ebene ersetzen (z. B. mit jQuery UI), wird Ihre Anwendung einfach nicht richtig aussehen.

Persönlich würde ich WinJS für die UI-Schicht und mit der Laufzeit integrieren (Zustand persistance, App Switching etc ...), aber verwenden Sie eine Standard-JavaScript-Bibliothek, wie Backbone oder Knockout für den Großteil meines Codes um die Portabilität zu gewährleisten.

+0

Danke ColinE für die guten Ideen! Ich bemühe mich immer noch, eine solche Architektur zu visualisieren. Würde ich die Logik in der navigator.js durch das Backbone-Stil-Routing ersetzen? Gibt es einen Bedarf für Backbone.View oder würde ich mich mit den Vorlagen und Bindungen an die WinJS-Benutzeroberfläche halten? Oder sollte ich den WinJS UI-Code in einem Backbone.View umbrechen? Es gibt noch einige Ereignisse, die den Lebenszyklus der Anwendung steuern, wie das Ereignis 'ready', wenn die Ansicht gerendert wird. Wo würde ich mit diesen umgehen? Es ist schön zu erkennen, dass es möglich ist, andere Frameworks zu verwenden, aber ihre Integration verursacht Kopfschmerzen – Helikaon

+3

WinJS besteht aus drei Teilen: dem Stylesheet, dem base.js und dem ui.js. Wenn Sie die Abhängigkeit vom Stylesheet übernehmen, werden Sie kein Problem damit haben, "richtig auszusehen". –

+1

Ich möchte wirklich wissen, ob es irgendwelche massiven Leistungszuwächse durch die Verwendung von WinJS für Dinge wie Bindungen gibt, hat jemand irgendwelche Informationen dazu? –

0

Ich benutze Knockout js und Require js für MVVM. Für visuelle Effekte verwende ich jQuery.

Meine Daten-main sieht aus wie ein bisschen dieses:

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

Wenn Sie Backbone anstelle bevorzugen, ich denke das Setup ähnlich wäre.

Verwandte Themen