Nodejs 在路由里面怎么用到app里面的全局变量?
Nodejs 在路由里面怎么用到app里面的全局变量?
app.js
path = require('path');
user = require('./routes/user')
app.post('/job', user.postarticle);
routers\user.js
exports.postarticle=function(req,res){
这里怎么用path ?
除了重新require一次path
要在Node.js中将app.js
中的全局变量传递给路由文件(如routers/user.js
),可以通过几种不同的方式来实现。以下是其中一种常用的方法,即通过模块导出一个函数来接收app
实例,从而可以在路由处理程序中使用全局变量。
示例代码
app.js
const express = require('express');
const path = require('path');
const userRouter = require('./routers/user');
const app = express();
// 假设这是你的全局变量
app.set('globalPath', path);
// 将app实例传递给路由
app.use('/job', userRouter(app));
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
routers/user.js
module.exports = function(app) {
const path = app.get('globalPath');
return (req, res) => {
// 现在你可以使用全局的 `path` 变量了
console.log(path);
// 处理POST请求的逻辑
res.send('Article posted!');
};
};
解释
-
app.js 中,我们首先定义了一个全局变量
globalPath
并将其设置为path
模块。然后,我们将这个模块导出给用户路由处理程序。这通过将路由注册部分稍微修改实现,即app.use('/job', userRouter(app));
。 -
routers/user.js 中,我们定义了一个函数,该函数接受
app
实例作为参数,并从中获取全局变量globalPath
。这样,你就可以在路由处理程序中使用这个全局变量了。
这种方法避免了在每个路由文件中重复导入相同的模块,同时保持了代码的清晰性和可维护性。
这样可以吗?app.js
app.use(user(path));
user.js
module.exprots = function(path){
//do it
};
req,resp 呢
要在Node.js中在一个路由文件中使用在app.js
中定义的全局变量,可以通过将这些全局变量作为参数传递给路由处理函数。以下是一个具体的示例,展示了如何在路由文件中使用app.js
中的全局变量。
app.js
const express = require('express');
const path = require('path');
const userRouter = require('./routers/user');
const app = express();
// 定义一个全局变量
const globalVar = "这是一个全局变量";
// 使用路由时传递全局变量
app.post('/job', (req, res) => {
userRouter.postarticle(req, res, globalVar);
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
routers/user.js
module.exports.postarticle = function(req, res, globalVar) {
// 现在你可以直接使用全局变量
console.log(globalVar);
// 处理你的请求逻辑
res.send("成功接收到POST请求,并且全局变量已传递");
};
在这个例子中,我们首先在app.js
中定义了一个全局变量globalVar
。然后,在处理/job
路径的POST请求时,我们将这个全局变量作为额外的参数传递给userRouter.postarticle
函数。这样,你就可以在路由文件user.js
中的postarticle
函数中使用这个全局变量了。
这种方法避免了重复require
同一个模块,同时也允许你在路由处理函数中访问应用级别的全局变量。注意,传递全局变量的方式取决于具体的应用场景和需求。如果你有很多全局变量需要传递,可以考虑使用其他方法,如将这些变量封装到一个对象中,然后作为一个整体传递。