Question

J'ai écrit une application Web de galerie vidéo il y a quelques mois dans CodeIgniter et j'essaie de déplacer le back-end vers le nœud, en utilisant Express + Jade pour produire le contenu. La version PHP envoie JSON à l'avant, y compris souvent un morceau substantiel de HTML.

J'aimerais rendre le bit HTML avec Jade (car c'est pour cela qu'il est là), mais évidemment je veux le sortir au format JSON et pas directement au navigateur. Il peut être douloureusement évident de faire cela, mais je ne peux pas le comprendre pour le moment ... toute aide très appréciée.

Php original

ob_start();

for ($i = $start; $i < $end; $i++)
{
    $v = $videos[$i];
    echo '<a id="video-' . $v->url . (isset($v->otherid) ? '-' . $v->otherid : '') . '" href="#!' . Settings::$pretty_link . '/' . $v->url . (isset($v->otherid) ? '/' . $v->otherid : '') . '" class="Box' . ($i == $start ? " Batch" : "") . '" title="Click to view the ' . $v->name . '"><img src="' . site_url('images/thumb/' . $v->image) . '" alt="The ' . $v->name . '" /><span>' . $v->name . '</span></a>';
}

$data[$html] = ob_get_clean();

// Add some other things to $data

echo json_encode($data);

Nouveau jade brillant

- var v
- for (var i = view.start; i < view.end; i++) {
-   v = view.videos[i]
    a(id="#{v.url + (v.otherid === null ? "" : "-" + v.otherid)}", 
        href="#!#{settings.prettyLink + "/" + v.url + (v.otherid === null ? "" : "/" + v.otherid)}/",
        class="Box #{i == view.start ? "Batch" : ""}",
        title="Click to view the #{v.name}"
    )
        img(src="#{settings.siteUrl}images/thumb/#{v.image}", alt="The #{v.name}")
        span #{v.name}
- }

Comment faire le $data[$html] = ob_get_clean(); ligne? (Et peut-être aussi le json_encode Un, bien que j'ai actuellement de grands espoirs pour JSON.stringify. :)

Éditer Comme @Loganfsmyth l'a demandé, le code a utilisé pour rendre le fichier Jade (fondamentalement comme les exemples express).

res.render("search", { view: view, settings: vgSettings.app });

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top