W mojej aplikacji potrzebuję API (coś takiego jak Google Maps javascript API), za pomocą którego mogę wysłać niestandardowy javascript (z pewnymi informacjami związanymi z sesją i żądaniami)) jako odpowiedź. Javascript jest następnie używany do wykreślania niektórych wykresów w interfejsie użytkownika. Używam Express with Jade jako mojego silnika szablonowego. Kod, który obecnie używam jest:Express/Node.js: Renderuj niestandardowy javascript jako odpowiedź
app.use('/graph',function(req, res){
//send out graph data
var var_name = req.session.var_name //fetch something from session
var graphData = fetchGraphData(req.query.graph); //function that fetches graph data
res.contentType("text/javascript");
res.render(__dirname + '/views/graph.jade', {
title: "Title", queryStr: JSON.stringify({var_name: var_name, graphData: graphData })
});
});
a plik jade:
| some_var_name = {
| initGraph : function(divId){
| //some code here
| var graphData = !{graphData}
| // do something
Jako obejście, zacząłem każdy wiersz pliku jade z |
, tak że jade analizuje tekst jako zwykły tekst i nie dodaje żadnych znaczników html! Działa dobrze, ale czy istnieje lepszy sposób na zrobienie tego? Rozwiązanie może lub nie może używać Jade!
Nie wiem, ile szablonu jest rzeczywiście wymagane, ale nadal możesz użyć 'res.send', aby wysłać dowolny ciąg znaków. – TheHippo
@TheHippo: Dzięki za odpowiedź! Ale chciałbym uporządkować dane odpowiedzi w plikach, ponieważ byłoby sporo takich działań, a plik też jest dość długi! –