2012-07-04 14 views
8

Ich arbeite an einem Projekt, bei dem ein anderer Entwickler eine Benutzeroberfläche als eigenständige clientseitige Lösung mit dem Framework ember.js entwickelt hat.Können Razor engine und ember.js zusammenarbeiten?

Ich wurde gebeten, diese Arbeit in ein ASP.NET MVC3-Projekt zu verschieben.

Problem ist, ember.js verwendet geschweifte Klammern und doppelte Klammern in der Syntax, und dies scheint die Rasiermaschinen-Engine von MVC3 stören.

Bin ich richtig im Denken, dass die 2 Technologien (ASP MVC3 und ember.js) nicht zusammen funktionieren können?

+0

migrieren Warum wurden Sie gebeten, es in ASP.Net MVC zu verschieben? Gibt es ein Problem mit der App, so wie sie heute existiert? –

+0

Es ist eine Anforderung des Kunden. Sie sind ein Unternehmen, das hauptsächlich .NET/.NET MVC verwendet. Die Benutzeroberfläche wurde von einem Entwickler mit hauptsächlich PHP-Hintergrund erstellt. –

+0

+1 zu kontern die -1 ohne Kommentar gegeben. –

Antwort

-1

Sie sollten die in http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx aufgeführten Blöcke verwenden können, um Ihre Ember-Vorlagen so zu verpacken, dass sie korrekt verfügbar sind.

Das heißt, Sie erfüllen nicht wirklich die Anforderungen Ihrer Kunden, indem Sie dies tun. Ein normaler ASP.Net MVC-Entwickler muss ember.js noch lernen, um mit dieser Codebasis zu arbeiten. Was sollten Sie wirklich tun, ist es Umschreiben ASP.Net MVC Konzepte wie Erstellen von Seiten von Modellen, Teilansichten usw.

+0

Nicht wirklich.Sie können dasselbe Verhalten nicht mit ASP.NET MVC neu schreiben, da es sich um ein serverseitiges Framework handelt, das nur HTTP-Anforderungen als Eingabe empfängt. Ember.js dagegen ist ein clientseitiges Framework, das Browser-Ereignisse empfängt und somit auf Benutzerinteraktionen differenzierter reagieren kann. Für einen guten Vergleich zwischen clientseitigen und serverseitigen mvc siehe: [link] (http://emberjs.com/guides/ember_mvc/) –

+0

Es gibt Gründe, ASP.NET MVC zu verwenden und Gründe, Ember zu verwenden. Dinge zu schreiben, die "ASP.NET MVC-Konzepte" verwenden, ist möglicherweise nicht das, was sein Kunde möchte. Nur weil sie ASP.NET MVC als serverseitige Technologie verwenden müssen, bedeutet das nicht, dass sie nicht länger ein clientseitiges Framework nutzen kann und die Verwendung von Ember nicht unbedingt die "Erfüllung der Kundenanforderungen" verhindert. –

1

Kurze Antwort: Ja, jede js Bibliothek kann mit asp.net MVC arbeitet

Wenn Sie jedoch einige Syntaxprobleme bekommen, dann muss spezifische Ansicht-Rendering-Engine (Razor, Web-Formulare, Spark, etc.) Syntax parallel mit js Bibliothek analysiert werden.

Zum Beispiel verwendet jQuery $ sign als Alias, das ersetzt werden kann. Sehen Sie sich diese Referenzen an - Replace “$”(dollar Sign) with “JQuery”

Wenn es jedoch nicht funktioniert, dann können Sie Ihre View-Engine wahrscheinlich erneut in Betracht ziehen.

3

Ein Ansatz wäre, den Lenker Vorlagen mit in einer Ressourcendatei (resx) und fügen Sie sie zu Ember in einer anonymen Funktion ähnlich wie diese:

<script type="text/javascript" src="path/to/ember.js"> 
<script type="text/javascript" src="path/to/your/app.js"> 
<script type="text/javascript"> 
    (function() { 
     Ember.TEMPLATES["your template name"] = Ember.Handlebars.compile('<%= template as string from the resource file goes here %>'); 
    })(); 

    App.initialize(); 
</script> 

Dieses passieren sollte, bevor Sie initialize Ihrer Anwendung aufrufen

Methode

Die Ressourcendatei ist auch eine gute Idee, wenn Sie mehrsprachige Unterstützung

+1

Um vorkompilierte Templates auf der Serverseite zu unterstützen, empfehle ich die Verwendung der csharp-ember-lenker-Bibliothek (über NuGet installieren), so dass Sie keine Konflikte mehr mit Razor, haml, aspx oder einer View-Engine haben. Hier ist das Projekt in github https://github.com/Myslik/csharp-ember-handlebars mit einer Beispiel-Web-API tempalte (WIP) – MilkyWayJoe

1

habe ich arbeite ASP.NET MVC 4-Anwendung, die E verwendet mber schwer und habe keine Probleme.

Der Fall mit doppelten Klammern hat sehr einfache Abhilfe: Verwenden Sie einfach @:. Alles nach @: wird als Klartext interpretiert. So wird dieser Rasierer Markup mit Lenker Ausdruck gültig sein:

<ul> 
@if (Model.SomeCondition) 
{ 
    @:{{#each product in products}} 
    <li>{{product.name}}</li> 
    @:{{/each}} 
} 
</ul> 

Update: Derzeit bin ich mit Ember 1,6-1,9 Version und Ember Daten 1.0.0-beta-8 - 1.0.0-beta-12-Version mit ASP.NET MVC 5.2 - funktioniert super. Bald werden alle Projekte auf den neuesten Ember 1.9, Ember Data und Lenker 2.0