Express,如何将变量从路由传递到客户端的JS文件

时间:2016-08-17 16:13:44

标签: javascript node.js express

我有一个Express项目,它在一个生成图形的单独文件中有客户端javascript。我试图将变量从快速路由传递到此javascript文件,以便绘制图形。 我已经尝试了下面的代码,但我收到了以下错误。

  

错误:找不到模块'js'

app.get('/users', function(req, res) {
  res.render(path.join(__dirname, '../views/js/users_chart.js'), {
    'users': users
  });
});

2 个答案:

答案 0 :(得分:0)

我认为您查看res.renderserving static files

的Express文档会对您有所帮助

您无法呈现JS文件。

您似乎希望使用

提供静态user_chart.js
/* server.js */
app.set('view engine', 'ejs');
app.register('.html', require('ejs'));
// serve your js statically
app.use('/js', path.join(__dirname, '../views/js/users_chart.js')
app.get('/users', function(req, res) {
    // pass variable to html page
    res.render('users.html', {
        'users': users
    });
});

// in users.html
<script type="text/javascript" src="/js/users_chart.js">

This post也可能有用

答案 1 :(得分:0)

在得到很大帮助后,找到了解决方案。

为了在客户端有一个javascript文件,它将从路由接收变量,我必须将JSON中的变量从routes文件发送到客户端的javascript文件。我使用XMLHttpRequest以便在客户端的javascript文件中接收JSON。

Bellow是users_graph.js的代码,它是客户端javascript文件。

var xmlhttp = new XMLHttpRequest();
var url = "/users";
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var users = JSON.parse(xmlhttp.responseText).users;   
        // do something with the users variable that was passed by the routes

    }
};

xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader('Accept', 'application/json');
xmlhttp.send();