Я пытаюсь отправить req.params во внешний интерфейс и использовать его с различными функциями js, но я не знаю, как получить к нему доступ на стороне клиента с помощью js.
В частности, я пытаюсь получить req.param
, называемый namespace
, который пользователь вводит с помощью
app.get('/:namespace', function(req,res){
res.render('chatLayout', { title: 'Welcome to the ' +
req.params.namespace +" room!"}), {namespace: req.params.namespace };
});
и затем установите переменную с именем room
в js-файле на стороне клиента:
var room= io.connect('http://localhost:3000/' +namespace);
Однако, поскольку я не знаю, как сделать req.params.namespace
доступным для js-файла на стороне клиента, пространство имен не определено.
Примечание: я использую мопса в качестве языка шаблонов
Я пробовал несколько вещей.
Попытка вызова req.params.namespace
или namespace
из файла js на стороне клиента, но оба выдают ошибку, сообщающую, что они не определены
Создание глобальной переменной в файле pug с использованием тега script перед вызовом файла js и установка var a=namespace
или var a=req.params.namespace
, но это не делает эту переменную доступной для файла js. Кажется, что он должен работать как в этом вопросе Могу ли я получить доступ к переменным из другого файла? , так что, возможно, этот метод может работать, но я просто не делаю это правильно
Backend
var express= require('express');
var socket= require('socket.io');
//App setup
var app= express();
app.set('view engine', 'pug');
var server= app.listen(3000, function(){
});
//Static files
app.get('/:namespace', function(req,res){
res.render('chatLayout', { title: 'Welcome to the ' +
req.params.namespace +" room!"}), {namespace: req.params.namespace };
});
Клиентская сторона js
var room= io.connect('http://localhost:3000/' +namespace);
Файл мопса
doctype html
html(lang='en')
head
title= title
meta(charset='utf-8')
meta(name='viewport', content='width=device-width, initial-scale=1')
<script
src='https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js'>
</script>
<script src="/gameChat.js"></script>
link(rel='stylesheet', href='/style.css')
body
<h1>#{title} </h1>
<div id= "chat">
<div id= "chat-window">
<div id= "output"></div>
<div id= "feedback"></div>
</div>
<form id ="form">
<input id= "handle" type= "text" placeholder="Handle"/>
<input id= "message" type = "text" placeholder="Message"/>
<button id= "send">Send</button>
</form>
</div>