【问题标题】:Can Razor engine and ember.js work together?Razor 引擎和 ember.js 可以一起工作吗?
【发布时间】:2012-07-04 10:56:52
【问题描述】:

我正在开发一个项目,其中另一位开发人员使用 ember.js 框架开发了一个 UI 作为独立的客户端解决方案。

我被要求将这项工作转移到 ASP.NET MVC3 项目中。

问题是,ember.js 在语法中使用了大括号和双大括号,这似乎干扰了 MVC3 使用的 razor 引擎。

我认为这两种技术(ASP MVC3 和 ember.js)不能一起工作是对的吗?

【问题讨论】:

  • 为什么要求您将其移入 ASP.Net MVC?现在的应用程序有问题吗?
  • 这是客户的要求。他们是一家主要使用 .NET / .NET MVC 的公司。 UI 是由主要是 php 背景的开发人员完成的。
  • +1 来对抗没有评论的 -1。

标签: asp.net-mvc-3 razor ember.js mustache handlebars.js


【解决方案1】:

一种方法是将车把模板放在资源文件 (resx) 中,然后在类似于以下的匿名函数中将它们添加到 Ember:

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

这应该发生在您调用应用程序的initialize 方法之前

当您有多语言支持时,资源文件也是一个好主意

【讨论】:

  • 为了支持服务器端的预编译模板,我建议使用 csharp-ember-handlebars 库(通过 NuGet 安装),这样您就不会与 razor、haml、aspx 或任何视图引擎发生任何冲突了。这是 github github.com/Myslik/csharp-ember-handlebars 中的项目,带有示例 Web API 模板 (WIP)
【解决方案2】:

简短回答:是的,任何 js 库都可以与 asp.net mvc 一起使用

但是,如果您遇到一些语法问题,则需要分析特定的视图渲染引擎(Razor、web-forms、Spark 等)的语法与 js 库并行 /strong>。

例如,jQuery 使用 $ 符号作为别名,可以替换。看看这个引用 - Replace “$”(dollar Sign) with “JQuery”

但是,如果它不起作用,那么您可能会重新考虑您的视图引擎。

【讨论】:

    【解决方案3】:

    我正在开发大量使用 Ember 并且没有任何问题的 ASP.NET MVC 4 应用程序。

    带有双括号的情况有非常简单的解决方法:只需使用@:@: 之后的所有内容都被解释为纯文本。所以,这个带有车把表达式的剃刀标记将是有效的:

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

    更新:目前我正在使用 Ember 1.6 - 1.9 版本和 Ember Data 1.0.0-beta-8 - 1.0.0-beta-12 版本和 ASP.NET MVC 5.2 - 效果很好。很快将在最新的 Ember 1.9、Ember Data 和 Handlebars 2.0 上迁移所有项目

    【讨论】:

      【解决方案4】:

      您应该能够使用http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx 中详述的块来包装您的 ember 模板,以便它们正确可用。

      也就是说,您这样做并没有真正满足客户的要求。一个普通的 ASP.Net MVC 开发人员仍然需要学习 ember.js 才能使用这个代码库。您真正应该做的是使用 ASP.Net MVC 概念重写它,例如从模型、部分视图等创建页面。

      【讨论】:

      • 并非如此。您不能使用 ASP.NET MVC 重写相同的行为,因为它是一个服务器端框架,因此只接收 http 请求作为输入。另一方面,Ember.js 是一个客户端框架,它接收浏览器事件,因此可以对用户交互做出更复杂的反应。有关客户端和服务器端 mvc 之间的一个很好的比较,请参阅:link
      • 有使用 ASP.NET MVC 的理由,也有使用 Ember 的理由。 “使用 ASP.NET MVC 概念”编写东西可能不是他的客户想要的。仅仅因为他们需要使用 ASP.NET MVC 作为服务器端技术并不意味着他不能再利用客户端框架,使用 Ember 也不一定会阻止“满足 [the] 客户的要求”。跨度>
      猜你喜欢
      • 2010-09-14
      • 1970-01-01
      • 2013-07-09
      • 2016-01-29
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多