express-handlebars访问在客户端javascript中声明的变量

时间:2018-02-07 22:03:46

标签: node.js express handlebars.js express-handlebars

我正在学习在我的网站中使用把手作为模板。

我正在使用node.js所以我使用了express-handlebars模块,因为它看起来很受欢迎并且有很多支持。

我设置了一些基本配置..

var exphbs = require('express-handlebars');
app.set('views', path.join(__dirname, 'views'));
app.engine('handlebars', exphbs({
    defaultLayout: 'layout',
}));
app.set('view engine', 'handlebars');

我的理解是我在把手(即我的内容页面)中的视图是手柄中的模板,我认为这些模板正在代表我编译,以便我可以集中精力使用它们。

现在,我可以从我的node express路由器将数据传递到模板,然后使用把手符号{{variable}}访问和呈现模板中的数据。

那很好。但是....我想使用javascript在客户端声明变量,可能是因为从我想要输入的Ajax调用中获取一些数据。不幸的是,这似乎永远不会奏效我无法弄清楚如何在模板中访问局部变量。肯定有办法做到这一点?

#with块助手看起来很有希望但不幸的是它并没有达到我的预期。

以下是我的一个内容页面的片段,其中有几次尝试在本地声明数据并呈现其值。

<div>
  <script>let test = {
          text: 'this is my example text'
          };
  </script>

                <div>
                    {{#with test}}
                        {{text}}
                    {{/with}}
                </div>
                
                <div>
                    {{test.text}}
                </div>

</div>

我阅读了很多文章并观看过很多视频,但我找不到有人使用'express-handlebars'模块然后渲染本地数据的地方。

我可能错过了一些显而易见的东西,但我现在已经挣扎了一段时间。

有人知道我怎么能这样做吗?

提前感谢。

2 个答案:

答案 0 :(得分:0)

好的......看起来客户端模板必须使用webpack单独配置。我认为这是有道理的,因为快速手柄编译模板(它只是解析为普通的javascript,它采用我想要呈现的变量并包含在所需的html中)并且我无法通过我的客户端找到任何模板浏览器中的检查员。我还没机会尝试,但看起来很有希望:http://initialdigital.com/sharing-handlebars-templates-on-both-server-client-in-node-js-express-with-webpack/

答案 1 :(得分:0)

一直关注你的主题,并使用api路径请求创建了一个非常类似于你发布的工作示例。

https://github.com/kroneman/client-and-server-handlebars

希望这会有所帮助。