8
votes

Le moteur de rasoir et ember.js peut-il travailler ensemble?

Je travaille sur un projet où un autre développeur a développé une UI en tant que solution de type client autonome à l'aide du cadre Ember.js.

On m'a demandé de déplacer ce travail sur un projet ASP.NET MVC3.

Problème est, Ember.js utilise des accolades et des doubles bretelles dans la syntaxe, ce qui semble interférer avec le moteur de rasoir utilisé par MVC3.

Ai-je raison de penser que les 2 technologies (ASP MVC3 et Ember.JS) ne peuvent pas travailler ensemble?


3 commentaires

Pourquoi avez-vous été invité à le déplacer dans ASP.NET MVC? Y a-t-il un problème avec l'application comme il existe aujourd'hui?


C'est une exigence du client. Ils sont une entreprise utilisant principalement .NET / .NET MVC. L'interface utilisateur a été faite par un développeur avec un fond principalement PHP.


+1 pour contrer le -1 donné sans commentaire.


4 Réponses :


-1
votes

Vous devriez pouvoir utiliser les blocs détaillés dans http://weblogs.asp.net/scotgu/archive/2010/12/15/asp-net-mvc-3-razor-s- et-lt-text-gt-syntax.aspx pour envelopper vos modèles Ember afin qu'ils soient disponibles correctement.

Cela dit que vous ne remplissez pas vraiment les exigences de vos clients en faisant cela. Un développeur ASP.NET MVC normal devra toujours apprendre Ember.js pour travailler avec cette base de code. Ce que vous devriez vraiment faire, c'est la réécrire d'utiliser des concepts ASP.NET MVC, comme la création de pages à partir de modèles, de vues partielles, etc.


2 commentaires

Pas vraiment. Vous ne pouvez pas réécrire le même comportement avec ASP.NET MVC car il s'agit d'un cadre côté serveur que, seulement reçoit uniquement des demandes HTTP comme entrée. Ember.js D'autre part est un cadre côté client qui reçoit des événements de navigateur et peut ainsi réagir plus sophistiqué pour l'interaction des utilisateurs. Pour une belle comparaison entre le côté client et le côté serveur MVC, voir: lien


Il y a des raisons d'utiliser ASP.NET MVC et des raisons d'utiliser Ember. Écrire des choses "Utilisation de concepts ASP.NET MVC" peut ne pas être ce que son client veut. Juste parce qu'ils sont tenus d'utiliser ASP.NET MVC lorsque la technologie côté serveur ne signifie pas qu'il ne peut plus tirer parti d'un cadre côté client et à utiliser Ember n'empêche pas nécessairement «l'exécution des exigences du client».



1
votes

Réponse courte: Oui, une bibliothèque JS peut fonctionner avec ASP.NET MVC

Cependant, si vous obtenez certains problèmes de syntaxe , puis le moteur de rendu de visualisation spécifique (rasoir, formulaires Web, étincelle, etc.) Syntaxe doit être analysé en parallèle avec la bibliothèque JS < / fort>.

Par exemple, JQuery utilise $ signe comme alias, qui peut être remplacé. Regardez ces références - Remplacer "$" (signe dollar) avec "jQuery"

Cependant, si cela ne fonctionne pas, vous pouvez probablement retenir votre moteur de vue.


0 commentaires

3
votes

Une approche comporterait les modèles de guidon dans un fichier de ressource (RESX) et les ajoutez à Ember dans une fonction anonyme similaire à celle-ci: xxx

Cela devrait se produire avant < / em> Vous appelez la méthode initialisée de votre application

Le fichier de ressources est également une bonne idée lorsque vous avez une assistance multilingue


1 commentaires

Pour prendre en charge des modèles précompilés sur le côté serveur, je vous recommande d'utiliser la bibliothèque CSharp-Ember-Hardsbars (Installer via Nuget) afin de ne pas avoir de conflit avec Razor, Haml, ASPX ou tout moteur de vue. Voici le projet de GitHub Github.com/myslik/cshaparp-ember-handlebars avec un Exemple de tempalte de l'API Web (WIP)



1
votes

Je travaille sur ASP.NET MVC 4 Application qui utilise fortement Ember et n'a aucun problème.

Le cas avec double bretelles a une solution de contournement très facile: il suffit d'utiliser @: code>. Tout après @: code> est interprété comme texte brut. Donc, ce marquage de rasoir avec expression de guidon sera valide:

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


0 commentaires