javascript - 使用node.js通过外部脚本更新HTML?

标签 javascript html node.js

我正在尝试设置一个 Node.js 应用程序,该应用程序将在 ping IP 时在前端提供 HTML 页面。最终结果有望是一个静态网页,显示正在 ping 的 IP 的状态。

我使用 Express 使 HTML 页面运行得很好。它基本上只是一个带有单个 <a> 的静态文件。其文本和颜色由外部脚本更改。暂时,我有一个按钮可以切换显示状态,到目前为止看起来还不错。

问题是,如何根据 Pinger 获得的结果更新 HTML (下面解释)?

我有两个 Node.js 源文件。显然,主要的是server.js :

var express = require("express"),
app     = express(),
Pinger  = require("./pinger");

app.use(express.static(__dirname));
console.log("Using static files at /");
app.use("/styles", express.static(__dirname + '/styles'));
console.log("Using stylesheets at /styles");
app.use("/res", express.static(__dirname + '/res'));
console.log("Using resources at /res");

app.listen(3000);
console.log("Listening on port 3000");

var pinger = new Pinger('google.com'); /* how the instance would be created */

还有Pinger模块:

var ping  = require('ping');

var Pinger = function() {

    this.host = arguments.length > 0 ? arguments[0] : 'google.com'; 
    this.isOnline = false;

    this.pingAll = function pingAll() {

        console.log(">>PING: " + host);
        ping.sys.probe(host, function(isAlive) {
            if (isAlive) console.log(">>PONG: " + host);
            else console.log("Unable to reach " + host);
        });

        // somehow return isAlive

    };

};

module.exports = Pinger;

显然,现在 pinger 的 isOnline只能是 false,因为它从未更新。

顺便说一句,我如何能够从 ping.sys.probe 内部更新 isOnline打回来?我知道不同的范围,并且我很确定只需使用 this.isOnline = isAlive毫无用处,因为 this会引用回调(除非我一开始就错了并且想得太多)。

最佳答案

您需要切换到模板引擎并使页面动态化。您回调可以使用已完成的模板调用 res.send/res.end 函数,该模板将被推送回客户端。检查jade或coffeekup,如果它简单的话只需在函数中构建html而不是使用外部模板。

关于javascript - 使用node.js通过外部脚本更新HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15212569/

相关文章:

javascript - JQuery:替换div中的字符串

java - J汤 |获取部分 HTML

node.js - 如何在不继续的情况下完全结束 Node Mocha 中的测试

javascript - NodeJs 将文件从请求流式传输到文件系统而不是内存

javascript - 命令未使用 yarg npm 包添加

javascript - 带刷新和不带刷新的 Angularjs 表单

javascript - 动态应用 JQuery 掩码

html - 如何在中心创建 2 列和 6 行?

javascript - 分析和可用性软件如何做到这一点?

javascript - ReactJS 中的 PayFast 支付集成