Videl som to,
chunk = chunk.write("<li>").render(bodies.block, context.push(items[i])).write("</li>n");
Predtým, ako som videl tento kód, render
ako niečo podobné flush
, a write
ako niečo podobné ako "napísať do vyrovnávacej pamäte", prirodzene vedie k kódu, ako je uvedené nižšie.
for loop
chunk.write("something")
end for loop
chunck.render();
Ale ako vidíte v prvom kóde, render sa dostáva medzi zápisy. Môže niekto vysvetliť rozdiel medzi týmito dvoma funkciami.
@JAiro:
Po prečítaní odpovede som skúsil nižšie uvedený kód:
temaplate: You have {render} {write}
dáta:
{
"name": "Mick",
"render": function(c,ct,b){
chunk.render("Rendered {~n}");
},
write:function(c,ct,b){
chunk.write("Written {~n}")
}
}
Očakávaný výkon:
you have Rendered
Written {~n}
Upozorňujeme, že {~n}
po interpretácii slova "Rendered", ale {~ n} po "Písomné" nie je interpretované.
Ale skutočný výstup nie je rovnaký ako očakávanývýkon. Mohol by ste poslať jsfiddle, ktorý mi pomôže pochopiť. Skutočný výstup je prázdny reťazec, ktorý tiež naznačuje, že by mohlo dôjsť k chybe v kóde.
odpovede:
1 pre odpoveď č. 1Na chunk.write
Metóda píše reťazce priamo do medzipamäte.
Na druhej strane, chunk.render
rieši premenné obsiahnuté v argumentu a potom píše výsledný reťazec do medzipamäte.
Don "t musieť prepísať napísať a render funkcie v kontexte.
Dovoľte mi ukázať vám, ako to funguje.
šablóna
Hello {name}!, how are you?
Prach zostavuje šablóne previesť v JavaScriptu. Po zostavení šablóny budete získať niečo ako:
return chk.write("Hello ").reference(ctx.get("name"), ctx, "h").write("! how are you?");
Ako môžete vidieť na "Ahoj" a "ako sa máš?", prachu používa chunk.write
pretože vie, čo by malo tlačiť. Však prach Copak "t vedieť hodnotu {name}
kým sa dostane kontexte (JSON).
Z toho dôvodu sa používa chunk.reference
, pretože to bude mať v budúcnosti vyriešiť hodnotu názov premennej.Prach sa chystá získať Hodnota name z JSON údajov.
Môžete si prečítať viac o dust.js tu:
http://linkedin.github.com/dustjs/wiki
A môžete vidieť pracovné príklady a vy skúste tu:
http://linkedin.github.com/dustjs/test/test.html