2016-04-10 4 views
7

私はサーバー側のテンプレート用のエクスプレスハンドルバーを使用してアプリケーションを構築しています。クライアント側では、vue.jsを使用したいただし、両者は同じ二重ブレス表記{{ variable }}を共有しています。現在のところ、私のハンドルバーのテンプレートがそれをオーバーライドしているため、私のvue.js変数が表示されません。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' 
}); 

メッセージ表示されます。

要約すると、サーバー側のテンプレートにexpress-handlebarsを使用している間にクライアント側のテンプレートにvue.jsを使用できる方法はありますか?

ありがとうございます!

答えて

12

あなたは例えば、Vueのはsomething elseにdemlimiters変更することができます。:

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

書かれたように、これは私のために動作しませんでした、私は現在、私が作成するそれぞれの新しいVewで区切り文字を設定する必要があります:http://stackoverflow.com/questions/41523427/cant-use-vue-config-delimiters-can-only-set-delimiters-on-new-vue – ripper234

+2

私の答えはVuに適用されたe Vue 2では、コンポーネントごとに区切り文字を設定する必要があります。 –

+0

バマー。しかし、知って良い。 – ripper234

10

これはあなたのハンドルバーテンプレートの最初のブレースをエスケープすることによって解決することができます。

あなたが raw block helperを使用してハンドルバーにVueの区切り文字を "エスケープ" することができます
<div id="app"> 
    \{{message}} //this will not be replaced by handlebars 
</div> 
+0

ハンドルバーでは扱えませんが、VueJsでは(これは疑問のようです) –

+0

しかし、それは私のために働く – spikeyang

1

:ハンドルバーテンプレートで

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

使用法:

{{{{vue-js}}}} 
<div id="app"> 
    {{message}} 
</div> 
{{{{/vue-js}}}} 
関連する問題