2012-07-04 14 views
8

Estoy trabajando en un proyecto en el que otro desarrollador ha desarrollado una interfaz de usuario como una solución independiente solo para el cliente que utiliza el marco ember.js.¿Pueden funcionar juntos el motor Razor y ember.js?

Me han pedido que traslade este trabajo a un proyecto ASP.NET MVC3.

El problema es que ember.js utiliza llaves y llaves dobles en la sintaxis, y esto parece interferir con el motor de afeitar utilizado por MVC3.

¿Estoy en lo cierto al pensar que las 2 tecnologías (ASP MVC3 y ember.js) no pueden funcionar juntas?

+0

¿Por qué se le solicitó moverlo a ASP.Net MVC? ¿Hay algún problema con la aplicación tal como existe hoy? –

+0

Es un requisito del cliente. Son una compañía que usa principalmente .NET/.NET MVC. La interfaz de usuario fue hecha por un desarrollador con antecedentes principalmente de php. –

+0

+1 para contrarrestar el -1 dado sin comentarios. –

Respuesta

-1

Debería poder usar los bloques detallados en http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx para envolver sus plantillas de brasas para que estén disponibles correctamente.

Dicho esto, en realidad no está cumpliendo con los requisitos de sus clientes. Un desarrollador ASP.Net MVC normal todavía tendrá que aprender ember.js para trabajar con esta base de código. Lo que realmente debe hacer es volver a escribir utilizando conceptos ASP.Net MVC como la creación de páginas de modelos, vistas parciales etc.

+0

No realmente.No puede volver a escribir el mismo comportamiento con ASP.NET MVC ya que es un marco del lado del servidor que, por lo tanto, solo recibe solicitudes HTTP como entrada. Ember.js por otro lado es un marco del lado del cliente que recibe eventos del navegador y por lo tanto puede reaccionar de manera más sofisticada a la interacción del usuario. Para una buena comparación entre mvc del lado del cliente y del lado del servidor, consulte: [link] (http://emberjs.com/guides/ember_mvc/) –

+0

Existen razones para usar ASP.NET MVC y razones para usar Ember. Escribir cosas "utilizando los conceptos ASP.NET MVC" puede no ser lo que su cliente desea. El hecho de que estén obligados a utilizar ASP.NET MVC como la tecnología del lado del servidor no significa que ya no pueda aprovechar un marco del lado del cliente y el uso de Ember no impide necesariamente "cumplir [los] requisitos del cliente". –

1

respuesta corta: Sí, cualquier biblioteca JS puede trabajar con asp.net mvc

Sin embargo, si obtiene algunos problemas de sintaxis entonces la sintaxis del motor de representación de vista específica (Navaja, formularios web, chispa, etc.) debe analizarse en paralelo con la biblioteca js.

Por ejemplo, jQuery usa $ signo como Alias, que puede ser reemplazado. Mire estas referencias: Replace “$”(dollar Sign) with “JQuery”

Sin embargo, si no funciona, probablemente deba volver a considerar su motor de visualización.

3

Un enfoque sería tener las plantillas manillar en un archivo de recursos (.resx) y añadirlos a Ember en una función anónima similar a esto:

<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> 

Esto debería ocurrir antes se llama de initialize su aplicación método

El archivo de recursos es también una buena idea cuando se tiene soporte multi-idioma

+1

Para admitir plantillas precompiladas en el lado del servidor, recomiendo usar la biblioteca csharp-ember-handlebars (instalar a través de NuGet) para que no haya ningún conflicto con razor, haml, aspx o cualquier motor de visualización. Aquí está el proyecto en github https://github.com/Myslik/csharp-ember-handlebars con un ejemplo de Web API tempalte (WIP) – MilkyWayJoe

1

estoy trabajando en ASP.NET MVC 4 aplicación que utiliza E mber pesadamente y no tiene ningún problema.

La caja con llaves dobles tiene una solución muy fácil: simplemente use @:. Todo después de @: se interpreta como texto sin formato. Por lo tanto, este margen de afeitar con la expresión manillar será válida:

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

Actualización: Actualmente estoy usando Ember 1.6 - Versión 1.9 y Ember datos 1.0.0-beta-8 - versión 1.0.0-beta-12 con ASP.NET MVC 5.2 - funciona muy bien. Pronto migrará todos los proyectos en el último Ember 1.9, Ember Data y Handlebars 2.0

Cuestiones relacionadas