Hogan Js 和 AngularJs 与 Node Js

Posted

技术标签:

【中文标题】Hogan Js 和 AngularJs 与 Node Js【英文标题】:HoganJs and AngularJs with NodeJs 【发布时间】:2014-01-21 14:22:09 【问题描述】:

我们正在尝试将 NodeJs 与 HoganJs 一起用于服务器端模板。然而,我们也希望使用 AngularJs 来满足我们的客户端需求。

问题在于 HoganJs 和 AngularJs 都使用“”和“”来完全满足他们的编译器需求。由于霍根的工作方式,如果有角的“”,霍根就会去掉。

我的问题是,是否有一个开箱即用的解决方案允许我同时使用 Angular 和 Hogan,而不会相互冲突。

如果没有,有没有人知道什么/在哪里/如何调整其中之一以使他们彼此相爱并优雅地工作。

提前谢谢...

【问题讨论】:

【参考方案1】:

在不更改分隔符的情况下,在 Angular 1.x 上,您可以在使用 HoganJS、Mustache 或任何其他此类代码的元素中使用 ng-non-bindable 指令:

例子:

<div>
  angularjs_variable
  <div ng-non-bindable>hogan_variable</div>
</div>

如果元素包含看似 AngularJS 指令和绑定但应该被 AngularJS 忽略的内容,这很有用。 [...]

【讨论】:

【参考方案2】:

如果您使用的是 express,您可以像这样更改 hogan 的分隔符:

var app = express();
app.locals.delimiters = '<% %>';

把上面的放在前面:

app.set('view engine', 'hjs');

现在在您的 page.hjs 文件中,对于数据 template : "Template test" ,您可以这样做:

<p>This is a <% template %></p>

【讨论】:

【参考方案3】:

试试

Hogan.compile(text, delimiters: '<% %>');

这样您就可以更改分隔符 Hogan 通过向 compile 方法传递一个覆盖它们的选项来使用。

http://comments.gmane.org/gmane.comp.lang.javascript.express/1426

注意

imo 使用模板系统使用 angularjs 是没用的,因为 https://***.com/a/20270422/356380

【讨论】:

感谢您的回答...但是我应该在哪里嵌入此代码?我是否必须导入任何东西才能使用上面的 Hogan 变量?当我运行我的应用程序时,我得到一个无效的变量“Hogan”和“text”?有什么想法吗? @Whisher 因为有服务器创建的数据和逻辑,我(我会假设其他人)希望将其构建到 html 之前它被提供给客户端 = 为什么我同时使用 dot 和 Angular。但是,是的,大部分繁重的工作都是在 Angular 中完成的。 @MikeSmithDev 这样说我可以理解你的观点,顺便说一句,我发现 mean.io 我认为部署的一个很好的策略点,即使我倾向于 handlebarsjs.complain html,他们也使用模板(翡翠) @Whisher 我用了 Jade 大约 2 天然后跑掉了 ;) @MikeSmithDev 是的...我从不理解人们使用翡翠的冲动...我猜...对于少数人来说,基准比常识更重要...【参考方案4】:

如其他答案所示,可以替代更改 Hogan 分隔符...更改 Angular 的!我在使用 doT(也使用 )时这样做了,它工作正常:

假设你的布局 HTML 中有这个:

<html ng-app="cooApp">

添加此脚本以使用自定义分隔符调用 Angular(我还包括对 Angular 的引用,只是为了澄清):

<script src='//ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.min.js'></script>
<script>
    var cooApp = angular.module('cooApp', [], function($interpolateProvider) 
        $interpolateProvider.startSymbol('%');
        $interpolateProvider.endSymbol('%');
    );
</script>

现在只需将%% 用于Angular 的东西。

【讨论】:

以上是关于Hogan Js 和 AngularJs 与 Node Js的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 4 Blade 和 Hogan.js 语法

Hogan的安装和使用

客客NO.22活动预告 | AngularJS 控制器与视图 / model 数据绑定与事件绑定

AngularJS Eclipse——新手入门翻译+整理

如何将 REST 与 Node.js 和 AngularJS 一起使用在不同的端口上?

无法使AngularJS路由工作