私はダストテストページ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 / ...> リンクで機能することに注意してください
そして私の質問は、なぜブラウザのダストでは私のパスをうまく解析するのに、ノードではうまくいかないのですか? または、「配列のような」キーアクセスを使用してオブジェクトをレンダリングする方法