【问题标题】:Using express handlebars with vue js使用带有 vue js 的快速车把
【发布时间】:2016-07-31 12:42:23
【问题描述】:

我正在为服务器端模板构建一个使用快速车把的应用程序。在客户端,我想使用 vue.js。但是,它们都共享相同的双括号符号{{ variable }}。现在,我的 vue.js 变量没有显示,因为我的车把模板覆盖了它。例如:

home.html:

<div id="app">
   {{message}} //this will not show up
</div> 

home.js:

new Vue({
    el: '#app',
    data: {
        message: 'Hello Vue.js!'
    }
});

但是,如果我在服务器端控制器中定义 message

res.render('../views/home', {
    message: 'message from handlebars'
});

消息会显示出来。

总之,有没有一种方法我可以使用 vue.js 进行客户端模板,同时仍然使用 express-handlebars 进行服务器端模板?

提前致谢!

【问题讨论】:

    标签: node.js handlebars.js vue.js


    【解决方案1】:

    您可以使用raw block helper“转义”Handlebars 中的 Vue 分隔符:

    Handlebars.registerHelper('vue-js', function(options) {
      return options.fn();
    });
    

    Handlebars 模板中的用法:

    {{{{vue-js}}}}
    <div id="app">
      {{message}}
    </div>
    {{{{/vue-js}}}}
    

    【讨论】:

    • 这既简单又聪明,但是如果我想在助手中使用把手怎么办?以及由 3 个大括号定义的助手
    【解决方案2】:

    这可以通过转义车把模板中的第一个大括号来解决。

    <div id="app">
       \{{message}} //this will not be replaced by handlebars
    </div>
    

    【讨论】:

    • 它不会被车把处理......但也不会被 VueJs 处理(这似乎是个问题)
    【解决方案3】:

    您可以将 Vue 分隔符更改为 something else,例如:

    Vue.config.delimiters = ['${', '}']
    

    【讨论】:

    • 这对我来说不起作用,我目前必须在我创建的每个新 Vew 上设置分隔符:stackoverflow.com/questions/41523427/…
    • 我的回答适用于 Vue 1。在 Vue 2 中,您确实必须为每个组件设置分隔符。
    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 2014-12-19
    • 2022-12-20
    • 2018-06-07
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    相关资源
    最近更新 更多