将值从node.js传递到javascript

时间:2018-07-21 22:59:29

标签: javascript node.js

我正在尝试使用Google的示例代码:PhotoFrame。 它是使用node.js,expressjs,jQuery等构建的。 我需要传递一个变量-我们将其称为myString-从app.js传递至.js文件之一-我们将其称为myScript.js。 我已经尝试了至少12种在StackOverflow和其他地方发现的方法。没有一个起作用。

有些人说“即使使用'BAD',也要使用全局性。 在app.js中,您:

global.myStringGlobal = myString

在myScript中,您:

var myStringLocal = myStringGlobal;

不起作用:未定义myStringGlobal。

有些人说:在app.js中编码一个小对象,然后将其导出。 他们在myScript中需要它。不起作用:require在myScript中未定义。 实际上,由于myScript和myOtherScripts在浏览器中运行,因此需要 根本不可用。

有些人说在app.js中编写代码:

res.render(page, {myString: myString});

其他人则说:“不,这会将myString发送到html渲染器;而不发送给myString。 没错

我不会通过告诉我我徒劳尝试的其他方式来将其删除。

这个问题已经以各种方式多次提出和回答, 但所有答案都无效-不再吗?还是谁知道为什么?

所以我再问一次:有谁知道如何从node.js传递变量 将app.js脚本添加到某些myScript.js文件中?

2 个答案:

答案 0 :(得分:0)

这是解释。

您必须知道自己已经参与了其他应用程序。您的express应用是服务器端应用,而另一个将是客户端应用。因此,主要的问题是,如何将数据从服务器传递到客户端?

如果您正在考虑ajax,那么您是对的。我不再使用jQuery,但我认为您可以使用类似$.get(..)的东西。

服务器

const express = require('express');
const app = express();
const port = 8080;

// Data can be requested via GET method
app.get('/sample-api', (req, res) => {
    res.json({ text: 'Lorem Ipsum' });
}

// You can render page here...

app.listen(port, () => console.log(`Listening on port ${port}`);

客户

$(function() {
    var msgFromServer;
    $.get( "/sample-api", function( data ) {
        msgFromServer = data.text;
        alert( "Received data from server!" );
    });
});

答案 1 :(得分:0)

在Expressjs中,您可以将变量与页面when you render it一起传递。在render调用中,您可以命名要尝试渲染的视图,并且可以将变量与之一起传递:

app.render('email', { name: 'Tobi' }, function(err, html){
  // ...
});

这会将名为“ name”的变量传递给电子邮件视图,其值为“ Tobi”。然后,您可以在HTML中使用该变量

<script>var name = "<%= name %>";</script>

请参见previous question