从Express中的客户端JavaScript文件获取变量

时间:2019-05-28 15:49:08

标签: javascript html node.js express socket.io

我正在尝试将变量从客户端JavaScript文件发送到服务器端app.js文件。我知道您可以使用以下方法(使用Express)从诸如表单输入字段之类的值中获取值:

var express = require('express');
var app = express();
var path = require('path');

let cityResponse;

app.post('/city', function(req,res) {
  cityResponse = {
    user_name: req.body.userName
  }
  res.sendFile(path.join(__dirname, '/client/city/index.html'));
});

但是我不想直接从HTML中获取值,而是从HTML附加到的JavaScript文件中获取值。


除此之外,我目前正在使用Socket.io将数据从服务器发送到客户端,反之亦然,并使用window.onload来让服务器知道页面何时准备就绪:

index.js

window.onload = function() {
  socket.emit('cityPageReady');
  console.log("city page ready");
};

socket.on('cityPageInfo', function(cityResponse) {
  console.log('city page info received');
  console.log(cityResponse);
  console.log(cityResponse.user_name);
  userName = cityResponse.user_name;
  document.getElementById("name").innerHTML = userName;
});

app.js

var city = io.of('/city').on('connection', (socket) => {
  console.log('A user has connected!');
  socket.on('cityPageReady', function() {
    socket.emit('cityPageInfo', cityResponse);
    console.log('city page ready recieved');
  });
});

这行得通,但是很多人都说这是过大的杀伤力,或者像一个人所说的那样,“用锤子杀死蜜蜂”。理想情况下,我想使用最佳方法。我确实知道模板引擎可以实现这一目标,但是我不想为了能够将单个变量发送到服务器而重写所有HTML。


重申一下,我的问题是:

  • 如何从客户端JavaScript文件(而不是HTML)中获取变量?
  • 将这些变量发送回客户端的最佳方法是什么?

任何帮助将不胜感激。

0 个答案:

没有答案