【问题标题】:Can I use Angular.js as templating engine?我可以使用 Angular.js 作为模板引擎吗?
【发布时间】:2016-10-16 15:44:01
【问题描述】:

我想为各种用例使用 Angular 1 指令生成静态 html。例如:

<div>
    Name: <span ng-bind="name"></span>
</div>
<div ng-if="phone">
    Phone: <span ng-bind="phone"></span>
</div>

给定{name: "John"} 作为$scope 应该生成以下html:

<div>
    Name: <span>John</span>
</div>

请注意没有 angular 指令和 angular ng-if cmets。 Angular 1 可以做到这样的事情吗?

更新:我想使用 Angular 的模板引擎来生成静态的、非交互式的 html。想想下划线模板或服务器端模板引擎。用例是生成用户可以带入自己的非角度应用程序的 html 片段。另一个用例是从 Angular 模板组装静态 html 电子邮件。所有这些都在没有服务器端的情况下完成。 Angular 已经让你这样做了,但是它把它的所有工件都留在了 html 中,这显然不是我的用例所需要的。这并不像一些评论者所说的那样效率低下,实际上能够在没有服务器端并利用已经强大的 Angular 模板引擎生成 html 时非常有效。

【问题讨论】:

  • @charlietfl 实际上,这是不正确的。他想做一些像服务器端渲染这样的事情,但那时你失去了 Angular 给你的好处,所以这看起来很傻。
  • angular 在浏览器中运行,所以真的不清楚你要做什么
  • 我正在尝试在不使用服务器的情况下在客户端生成静态 html。用例是用户填写表格,然后获取 html(想想嵌入代码),他可以复制,以可呈现的格式显示他的数据。没错,将其用作服务器端渲染引擎。我完全意识到我正在失去角度动态性质的好处,因此我说静态 html。但我正在利用 Angular 的强大指令来生成我需要的 html。
  • 是的,有可能。是的,这是非常低效的。而且你失去了其他模板引擎的宝贵功能,可以在客户端和服务器端呈现(并且不限于服务器端的 JS)。
  • 但这就是重点,Angular 不是一个模板引擎。它是一个数据绑定框架。移除所有的角度伪影会破坏框架的双向绑定特性。即使是“一次性绑定”也会跟踪角度,如果只是为了确保它们真的不会更新超过一次。这根本不是angular设计的东西。 可能您可以建议将其作为 Angular2 的增强功能,但目前不太可能针对此类功能重新设计 Angular1。

标签: angularjs


【解决方案1】:

没有。 Angular 是为在客户端工作而开发的。因此,您不能在服务器端使用它进行模板化。

相反,您可以尝试 ejs - embedded js 进行模板化。这要简单得多,并且可以用作模板引擎。

查看EJS Website

【讨论】:

    【解决方案2】:

    Angular 不是为此而设计的,因为它不是模板引擎,它远不止于此。

    没有内置的方法可以实现这一点。你最好的选择是去掉所有ng 属性、角度类和角度cmets,可能还有一些元素。我个人不会这样做。

    【讨论】:

      猜你喜欢
      • 2015-03-23
      • 2012-07-12
      • 1970-01-01
      • 2017-03-09
      • 2018-07-07
      • 2014-02-28
      • 2017-11-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多