Noa*_*ert 43 javascript node.js express handlebars.js angularjs
我目前正在建立一个网站,使用NodeJS作为服务器,Express Handlebars(Just Handlebars,但服务器端),并希望AngularJS用于某些客户端.
AngularJS和Handlebars使用相同的语法进行模板化
{{foo}}
这会导致首先由Express Handlebars解释AngularJS代码的问题,然后它将引发错误,因为它尝试拉取的数据仅存在于Angular而非Node中.
有没有办法让AngularJS和Express Handlebars一起工作?
ng在Express Handlebars中创建一个帮助器.
run*_*arm 71
你的第一个解决方案是可能的,AngularJS允许更改文本插值的开始/结束符号,如下所示:
appModule.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{[{');
$interpolateProvider.endSymbol('}]}');
});
Run Code Online (Sandbox Code Playgroud)
然后你可以在你的模板中使用它:
<div>{[{message}]}</div>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
Isa*_*ddo 14
为了保持AngularJS Style,你的第二个解决方案更好,在Express Handlebars中创建一个帮助器.
参考Handlebars网站:http://handlebarsjs.com/block_helpers.html,您可以注册一个帮手raw-helper
Handlebars.registerHelper('raw-helper', function(options) {
return options.fn();
});
Run Code Online (Sandbox Code Playgroud)
并将它放在一个四重存储中,在你的hbs模板中使用它 {{{{
{{{{raw-helper}}}}
<div class="container" ng-controller="AppCtrl">
Total Members: {{members.length}}
</div>
{{{{/raw-helper}}}}
Run Code Online (Sandbox Code Playgroud)
小智 11
有一种更好的方法:\ {{foo}}.车把内容可以通过两种方式之一进行转义:内联逃生或原始帮助.通过使用\前缀胡子块创建的内联转义.使用{{{{mustache braces.你可以看到这个http://handlebarsjs.com/expressions.html#helpers
我建议使用AngularJS的数据绑定语法(类似于Handlebars),让NodeJS服务器只提供静态AngularJS源代码.我更喜欢将模板卸载到客户端上,因此减轻了服务器的压力,更不用说AngularJS和其他MVC框架(我最喜欢的是EmberJS)非常适合动态构建网页.
我是Yeoman的粉丝,这里有一个用于构建NodeJS服务的Angular项目的生成器:https://github.com/yeoman/generator-angular
| 归档时间: |
|
| 查看次数: |
29789 次 |
| 最近记录: |