3

私はダストテストページhttp://linkedin.github.com/dustjs/test/test.htmlでダストの例を試しており、同時に node.js (0.8.15)、express.js(3.0.4) で遊んでいます)、consolidate(0.0.5)、dust-linkedin(1.1.1)。

ダスト テスト ページ (上部のリンクを参照) でテンプレートを実行すると、うまく機能します。

<a href="/en/subjects/subject-1-page-id">subject 1 title en</a>

サブジェクト 1 タイトル enをレンダリングします

node/express/consolidate/dust でテンプレートを実行すると、次のように表示されます。

<a href="/en/subjects/subject-2-page-id">{locale[lang].title}</a>

{locale[lang].title}をレンダリングします

ここに私のテンプレートがあります:

{#subjects lang=language}
<div>
    <img src="/files/subjects/{logo}" />
    <div>
        <a href="/{lang}/subjects/{pageId}">{locale[lang].title}</a>
    </div>
</div>
{~n}
{/subjects}

ここに私のJSONオブジェクトがあります:

{
    language: 'en',
    subjects: [
        { 
            logo: 'subject1.jpg', 
            pageId: 'subject-1-page-id', 
            locale: { 
                en: { title: 'subject 1 title en' }, 
                fr: { title: 'subject 1 title fr' },
            }
        }
    ]
}

ダストテストサイトからレンダリングされたテンプレートは次のとおりです。

<div>
    <img src="/files/subjects/subject1.jpg" />
    <div>
        <a href="/en/subjects/subject-1-page-id">subject 1 title en</a>
    </div>
</div>

これは node/express/consolidate/dust-linkedin からテンプレートをレンダリングしたものです

<div>
    <img src="/files/subjects/subject1.jpg" />
    <div >
        <a href="/en/subjects/subject-1-page-id">{locale[lang].title}</a>
    </div>
</div>

これは、ダストテストページからコンパイルされたテンプレートの一部です(上部のリンクを参照):

.write("\">").reference(ctx.getPath(false, ["locale", ctx.get("lang"), "title"]), ctx, "h").write("</a></div></div>\n");

これは、 {locale[lang].title}を使用しているときにサーバーでコンパイルされた部分です。

.write("\">{locale[lang].title}</a></div></div>\n");

{locale.en.title}を使用しているときにサーバーでコンパイルされた部分は次のとおりです

.write("\">").reference(ctx.getPath(false, ["locale", "en", "title"]), ctx, "h").write("</a></div></div>\n");

ノードで{locale.en.title}をレンダリングしようとすると、動作します。

lang変数は常に <a href='/ en / ...> リンクで機能することに注意してください

そして私の質問は、なぜブラウザのダストでは私のパスをうまく解析するのに、ノードではうまくいかないのですか? または、「配列のような」キーアクセスを使用してオブジェクトをレンダリングする方法

4

0 に答える 0