如何在页面刷新时执行NodeJSfunction

我从一个例子中编写了一个小型的NodeJS应用程序。 下面是我的代码的一部分。

server.js:

var app = express(); var helper = require('./helpers.something.js'); helper.calculate(function(result) { app.set('something', result); }); var router = express.Router(); var home = require(./controllers/home.js); router.get('/', home.index); 

home.js

 exports.index = (function(req, res) { res.locals.calculations = req.app.get('something'); res.render('home', { data: req.app.get('something'); }); }; 

我现在试图解决的问题是helper.calculate函数仅在服务器启动时调用,而不是在每次页面刷新时调用。 任何人都可以告诉我,如果我想在home.js和server.js文件中使用结果,每当页面刷新的时候我怎样才能调用helper.calculate,因为我在express.js文档中很遗憾。

您可以创build一个中间件,每次访问此路由时都会运行该function。

你可能会改变这个:

 helper.calculate(function(result) { app.set('something', result); }); var router = express.Router(); var home = require(./controllers/home.js); router.get('/', home.index); 

像这样的东西:

 var router = express.Router(); var home = require(./controllers/home.js); const calculate = (req, res, next) => { helper.calculate(function(result) { app.set('something', result); }); next(); }; router.get('/', calculate, home.index); 

要么:

 var router = express.Router(); var home = require(./controllers/home.js); const calculate = (req, res, next) => { helper.calculate(function(result) { app.set('something', result); next(); }); }; router.get('/', calculate, home.index); 

取决于是否要等待运行控制器,直到helper.calculate()完成。

另一个select是把这个添加到home.js中的控制器代码中,但我认为你不想这样做,因为你会一个接一个地使用app.set()app.get() ,所以我猜你要分开设置variables和使用它的行为。