我有一个运行node.js和express.js的基本站点。我按照tutorial来完成它。
Express实现看起来像这样。我有一个网络界面的玉文件。
// app.js
var express = require('express'),
routes = require('./routes'),
user = require('./routes/user'),
http = require('http'),
path = require('path');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(require('stylus').middleware(__dirname + '/public'));
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function(){
app.use(express.errorHandler());
});
app.get('/', function(req, res){
res.render('index', {
title: 'Home'
});
});
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});

# index.jade
html
head
title iDesk
style.
.available{
background: #3db72f;
}
.occupied{
background: red;
}
body
table(width='40%')
caption Table #01
tr
td#sec_01.available
br

我还有另一个从蓝牙中取值的javascript。它有一个无限的while循环,应该在node.js中连续运行。使用它获取的值,我想动态地更改Web界面的样式。例如,当从蓝牙获取的值为1
时,我想更改类样式。即。 document.getElementById("set_01").className = "occupied";
我怎样才能将这两个功能结合起来?它们应该单独运行并找到一些方法来相互传输数据吗?或者bluetooth.js可以包含在express.js中并在节点中一起运行吗?我是express和node js的新手......非常感谢你的帮助......谢谢!
答案 0 :(得分:1)
如果你已经有一个与蓝牙通信的javascript,那么将任何信息动态传输到web-client的方法是在客户端使用webscockets。
点击答案 1 :(得分:0)
Node.js是服务器端技术。当您的客户端(例如浏览器)向您的节点服务器发出请求时,它会完全处理请求,向您发送结果,然后与您的客户端进行通信(除非您的客户端打开新连接)。当您的服务器更新时,通常无法将某些东西推送到客户端(因为这将是一个巨大的安全漏洞)。相反,您的客户端必须尝试提取新数据。这通常通过客户端javascript中的AJAX调用来完成。
我没有完整的上下文,你在这里尝试做什么,但从我所知道的,你想在node.js文件中包含bluetooth.js,但你也想添加一个客户端javascript文件将在某些事件(可能是某个时间或按下按钮)产生对bluetooth.js文件的ajax调用,然后根据该调用的结果,更新网站上的html。据推测,bluetooth.js需要访问连接到服务器的硬件,因此您无法直接将其加载到客户端。
希望这能回答你的问题:)