如何将变量从Express传递给Jade

时间:2015-12-05 22:05:57

标签: javascript node.js express pug ibm-cloud

我正在使用IBM Bluemix为学校项目提供Web服务。

我需要将.js中的一些变量传递给.jade文件,但是这样做很麻烦。

我知道我必须声明一个包含变量的对象,然后使用

#{Variable}

在Jade模板中,但我无法弄清楚为什么这种方法不适用于我的代码。

这个问题的原因是什么?如何解决它?

这是我的.js代码:



/*eslint-env node*/

//------------------------------------------------------------------------------
// node.js starter application for Bluemix
//------------------------------------------------------------------------------

// HTTP request - duas alternativas
var http = require('http');
var request = require('request');

// cfenv provides access to your Cloud Foundry environment
// for more info, see: https://www.npmjs.com/package/cfenv
var cfenv = require('cfenv');

//chama o express, que abre o servidor
var express = require('express');

// create a new express server 
var app = express();

// serve the files out of ./public as our main files
app.use(express.static(__dirname + '/public'));

// get the app environment from Cloud Foundry
var appEnv = cfenv.getAppEnv();

// start server on the specified port and binding host
app.listen(appEnv.port, '0.0.0.0', function() {
    // print a message when the server starts listening
    console.log("server starting on " + appEnv.url);
});


app.get('/home1', function (req,res) {
    http.get('http://developers.agenciaideias.com.br/cotacoes/json', function (res2) {
        var body = '';
        res2.on('data', function (chunk) {
            body += chunk;
        });
        res2.on('end', function () {
            var json = JSON.parse(body);
            var cotacao = json["bovespa"]["cotacao"];
            var UsdValue = json["dolar"]["cotacao"];
            var UsdVariation = json["dolar"]["variacao"];
            var CotacaoEuro = json["euro"]["cotacao"];
            var VariacaoEuro = json["euro"]["variacao"];
            var TimeOfUpdate = json["atualizacao"];
			
			res.render('cotacao_response.jade', {
                 'UsdValue':UsdValue,
				 'TimeOfUpdate':TimeOfUpdate,
				 'UsdVariation':UsdVariation
            });
        });
    });
});




这是我的.jade代码:



doctype html
html(lang="en")
  head
    title Cotação 
    link(rel='stylesheet',href='stylesheets/style.css')
  body
  h1 Your exchange rate is #{UsdValue}. 
  h1 The variation was #{UsdVariation}%.
  p The values were updated in !{TimeOfUpdate}.
  #container.col
  p 
  p.
        




1 个答案:

答案 0 :(得分:3)

你没有在开始时设置它。它使它更容易

app.set('view engine', 'jade');

渲染时:

res.render('cotacao_response', {
   'UsdValue':UsdValue,
   'TimeOfUpdate':TimeOfUpdate,
   'UsdVariation':UsdVariation
});

为了上帝的缘故。使用另一个模板引擎。由于压痕和1空间的东西,玉从我的观点来看非常令人不安。如果发生一些小错误,它会耗费大量时间,而且您必须再次从上到下进行此操作。谁喜欢那个?