2

マルチページ Web アプリ プロジェクトでは、サーバー部分は Node.js と Express で実行されます。Marko は、サーバー側レンダリングのテンプレート エンジンとして使用されます。例 :

<h1>${ out.global.__('user.title') } </h1>

<form action="" method="POST">
  <input type="text" name="firstname" value=(out.global.req.body.firstname || '')>
  <if(out.global.err.firstname)>
    <span class="error">$!{ out.global.err.firstname}</span>
  </if>
</form>

JavaScript 対話型クライアント側を追加する必要があります (現時点では JS はありません)。クライアント側の JS は、複数ページのフォームを維持することで追加する必要があります。つまり、単一ページのアプリではありません。

目標は、Marko を使用してサーバー側でビューをコンパイルおよび生成し、それをブラウザーに送信して、Vue が HTML を「ハイドレート」して対話性を追加することです。そのサーバー側の書き方がわかりません。

(Vue.jsまたはMarkoを同形/ユニバーサルWebアプリ(サーバー側レンダリングとクライアント側レンダリングの両方で「同じ」コード/ライブラリ)として使用できることは知っていますが、それは問題ではありません)

html-elements.jsonVue コンポーネントのタグを Marko で許可するために、既に を追加しました。しかし、それでも、2 つのテンプレート エンジンの構文がどのように連携し、「衝突」しないのかわかりません。私が行った場合 :

<h1>${ out.global.__('user.title') } </h1>

<form action="" method="POST">
  <input v-model="firstname" :type="type" name="firstname" value=(out.global.req.body.firstname || '')>
  <if(out.global.err.firstname)>
    <span class="error">$!{ out.global.err.firstname}</span>
  </if>
</form>

v-model動作しますが、:typeショートカットは Marko コンパイラをクラッシュさせます。これは一例ですが、たくさんあると思います。Marko ファイルに Vue.js 構文を記述することは解決策ではないようです。

marko をサーバー側に保持することで、Vue.js をプロジェクトのクライアント側に追加できるかどうかを知りたいです。

これが明確であることを願っています。ご協力いただきありがとうございます。

4

0 に答える 0