Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有两个客户端版本的Express应用程序_Javascript_Angularjs_Node.js_Express - Fatal编程技术网

Javascript 带有两个客户端版本的Express应用程序

Javascript 带有两个客户端版本的Express应用程序,javascript,angularjs,node.js,express,Javascript,Angularjs,Node.js,Express,我实现了一个带有服务器模块和客户端模块的express应用程序项目。我有两个版本的客户端-一个用于桌面,另一个用于移动设备。唯一的区别在于使用Angular ui router完成的布局和内部路由。通过使用express的express.staticmiddleware,两个版本的登录页相同 app.use(express.static(__dirname + "/client")); 我的服务器脚本正在端口9000上运行,如server.js中所述: var port = process.e

我实现了一个带有服务器模块和客户端模块的express应用程序项目。我有两个版本的客户端-一个用于桌面,另一个用于移动设备。唯一的区别在于使用Angular ui router完成的布局和内部路由。通过使用express的
express.static
middleware,两个版本的登录页相同

app.use(express.static(__dirname + "/client"));
我的服务器脚本正在端口9000上运行,如
server.js
中所述:

var port = process.env.PORT || 9000;
var server = require('http').createServer(app);
server.listen(port, function () {....}
我通过以下方式启动服务器:

node server.js
并通过以下方式启动我的主页:

http://localhost:9000
目前,我只能启动在
express.static(\uu dirname+“/client”)
中传递的参数中定义的客户端的一个版本。如何从两个不同的设备启动两个不同版本的客户端?我应该如何托管我的express应用程序,以根据不同的设备获取客户端的不同根目录
\u dirname
? 请帮助,我是Node.js的初学者

快速回答

app.use('/desktop', express.static("path/to/desktop/site"));
app.use('/mobile', express.static("path/to/mobile/site"));
但在您的描述中,听起来移动和桌面站点将使用同一个网站,您只需要一个不同的url参数。在这种情况下,您可以执行以下操作:

app.use('/desktop', express.static("path/to/website"));
app.use('/mobile', express.static("path/to/website"));
现在,
/desktop
/mobile
端点都将呈现相同的网站。但是现在您可以捕获用户用来访问网站的端点

快速回答

app.use('/desktop', express.static("path/to/desktop/site"));
app.use('/mobile', express.static("path/to/mobile/site"));
但在您的描述中,听起来移动和桌面站点将使用同一个网站,您只需要一个不同的url参数。在这种情况下,您可以执行以下操作:

app.use('/desktop', express.static("path/to/website"));
app.use('/mobile', express.static("path/to/website"));

现在,
/desktop
/mobile
端点都将呈现相同的网站。但是现在您可以捕获用户用来访问网站的端点

您可以在每个
GET/POST HTTP请求中发送
GET/POST
参数,例如: 在登录帖子中,在手机中发送
data+req.body.device==“mobile”
,在另一端,在网络中发送
data+req.body.device==“web”
, 这样,您只需验证(在服务器代码ofc中)发送HTTP请求的设备类型,例如:

app.post("/login",function(req,res){
if(req.body.device == 'web'){
res.render('views1');
}else if(req.body.device == 'mobile'){
res.render('views2');
}
});

您可以对每个
GET/POST HTTP请求发送
GET/POST
参数,例如: 在登录帖子中,在手机中发送
data+req.body.device==“mobile”
,在另一端,在网络中发送
data+req.body.device==“web”
, 这样,您只需验证(在服务器代码ofc中)发送HTTP请求的设备类型,例如:

app.post("/login",function(req,res){
if(req.body.device == 'web'){
res.render('views1');
}else if(req.body.device == 'mobile'){
res.render('views2');
}
});

如何以及在何处检测到客户端是台式机还是移动机?实际上,这两个版本的主页是相同的,即登录页。但在使用移动版应用程序登录后,它会重定向到view-1。在使用桌面版本登录后,它应该重定向到view-2。它都是使用角度路由在各自的应用逻辑中配置的。因此,如果我单独运行这两个版本,而不改变服务器代码,那么这两个版本都运行得非常好。因为我明确地告诉服务器关于使用express.static中间件的客户机。但现在我想分别使用这两个版本,由同一台服务器提供服务。我不确定如何配置express Server如何以及在何处检测到客户端是台式机还是移动机?实际上,这两个版本的主页是相同的,即登录页。但在使用移动版应用程序登录后,它会重定向到view-1。在使用桌面版本登录后,它应该重定向到view-2。它都是使用角度路由在各自的应用逻辑中配置的。因此,如果我单独运行这两个版本,而不改变服务器代码,那么这两个版本都运行得非常好。因为我明确地告诉服务器关于使用express.static中间件的客户机。但现在我想分别使用这两个版本,由同一台服务器提供服务。我不确定如何配置express server