通过Express将动态内容集成到Node.JS上的静态服务页面的最简单方法

simplest way to integrate dynamic content into statically served page on Node.JS via Express

本文关键字:静态 服务 方法 最简单 JS Node 动态 Express 集成 通过      更新时间:2023-09-26

我正在通过Express webserver从Node.JS提供静态网页:

app.use('/', express.static('public'));
什么是最简约的方式来集成一些动态内容,例如从数据库中检索到的项目列表到这样一个页面?我看到了在服务器上"伪造"一个.js文件的可能性,该文件实际上是动态创建的,然后加载到服务器上public文件夹内的index.html中:
app.get('/myScript.js', (req, res) => {
  data = getDataFromDatabase();
  res.send('var data1 = ' + data[0] + '; var data2 = ' + data[1]);
});

这看起来非常粗糙,我想知道最好的极简方法是什么。

你也可以在get路由中返回一个回调的响应。我这样做:

端点:

router.get('/people', (req, res) => {
    People.list((error, response) => {
        if (error) return res.end();
        return res.send(response);
    });
});

模型:

module.exports = {
    connect: (callback) => {
        r.connect({
            host: config.db.host,
            port: config.db.port,
            db: config.db.name
        })
        .then((connection) => {
            return callback(null, connection);
        })
        .error((err) => {
            return callback(err);
        });
    },
    list: function (callback) {
        this.connect((err, connection) => {
            if (err) return callback(err);
            r.db(config.db.name).table(config.db.tables.people)
            .run(connection)
            .then((cursor) => {
                return cursor.toArray();
            })
            .then((users) => {
                return callback(null, users);
            })
            .error((err) => {
                return callback(err);
            });
        });
    },
    ...

有了这个,然后我得到响应对象打印到我的屏幕。模型代码是rethinkdb代码,但是您可以用您正在使用的任何代码替换它。如果这不是你想要的,我很抱歉。祝你好运=)