动态更改在EXPRESS js和NODE js中运行的站点的样式

时间:2015-04-20 19:03:51

标签: javascript jquery node.js express

我有一个运行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的新手......非常感谢你的帮助......谢谢!

2 个答案:

答案 0 :(得分:1)

如果你已经有一个与蓝牙通信的javascript,那么将任何信息动态传输到web-client的方法是在客户端使用webscockets。

Socket.io

点击

答案 1 :(得分:0)

Node.js是服务器端技术。当您的客户端(例如浏览器)向您的节点服务器发出请求时,它会完全处理请求,向您发送结果,然后与您的客户端进行通信(除非您的客户端打开新连接)。当您的服务器更新时,通常无法将某些东西推送到客户端(因为这将是一个巨大的安全漏洞)。相反,您的客户端必须尝试提取新数据。这通常通过客户端javascript中的AJAX调用来完成。

我没有完整的上下文,你在这里尝试做什么,但从我所知道的,你想在node.js文件中包含bluetooth.js,但你也想添加一个客户端javascript文件将在某些事件(可能是某个时间或按下按钮)产生对bluetooth.js文件的ajax调用,然后根据该调用的结果,更新网站上的html。据推测,bluetooth.js需要访问连接到服务器的硬件,因此您无法直接将其加载到客户端。

希望这能回答你的问题:)