【问题标题】:pass value from node.js to javascript将值从 node.js 传递给 javascript
【发布时间】:2018-12-29 20:10:07
【问题描述】:

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

有些人说“只使用全局变量,即使它们‘不好’。 在 app.js 你:

global.myStringGlobal = myString

在 myScript 中你:

var myStringLocal = myStringGlobal;

不起作用:myStringGlobal 未定义。

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

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

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

其他人说“不,这会将 myString 发送到 html 渲染器;而不是发送到 myString。 他们是正确的。

我不会通过告诉你我徒劳的其他方法来拖延这个。

这个问题已经被多次以各种方式提出和回答, 但没有一个答案有效——不再了吗?或者谁知道为什么?

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

【问题讨论】:

  • 作为替代方案,也许您可​​以通过 ajax 传递它。
  • 这个问题的标题就像“将值从clang传递到c++”。或者“将值从 Rails 传递给 Ruby”。

标签: javascript node.js


【解决方案1】:

这里是解释。

您必须知道您参与了不同的应用程序。您的 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!" );
    });
});

【讨论】:

  • 是的。您确实是从服务器端传递到客户端。您能否更具体地了解如何编写 ajax 代码?
【解决方案2】:

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

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

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

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

previous question

【讨论】:

  • 这种方法对我不起作用。 app.js 代码:'res.render(page, {authTok: authTok});'。 Album.ejs 代码:''。 album.js 代码:'var tok = authorizeToken' 产生未定义。
  • 渲染中设置的变量是 authTok。您需要在 中使用该变量名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 2014-01-17
  • 2017-09-03
  • 1970-01-01
相关资源
最近更新 更多