例如:
app.js:
var express = require('express');
var app = express();
var routesTemp=require('./routes/temp');
var routesTempExport=require('./routes/temp_export');
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'mustache');
app.engine('mustache', require('hogan-middleware').__express);
app.use('/',routesTemp);
app.use('/',routesTempExport);
module.exports = app;
/routes/temp.js:
var express = require('express');
var router = express.Router();
router.get('/temp',function(req, res, next){
//how to set a object,function...etc in there to module.exports
res.end();
});
// or there to set
module.exports = router;
/routes/temp_export.js:
var express = require('express');
var router = express.Router();
var getParameters = require('./temp');
router.get('/temp_export',function(req, res, next){
//and how to use getParameters to get multiple;
res.end()
});
module.exports = router;
我尝试更改module.exports格式 例如:
module.exports = {router:router,obj1:obj1};
module.exports = [router,obj1];
module.exports = router,obj1;
但没有成功,并且会导致router
无法识别
答案 0 :(得分:2)
如果您在模块中设置此项:
// in myModule.js
module.exports = {router:router,obj1:obj1};
然后,您可以在导入时访问这两个变量:
const myModule = require('myModule.js');
console.log(myModule.router);
console.log(myModule.obj1);
您必须确保在导出时已设置两个导出的属性。如果将来通过某些异步操作设置它们,那么当您想要使用它们时,您不知道它们是否会被正确设置。
在查看代码中的注释时,您似乎尝试使用temp.js
中路径中计算的值,位于temp_export.js
中的单独路径中。您基本上不能直接这样做,因为路由来自各种用户,因此您无法在服务器上的任何类型的全局中存储来自一条路由的状态,并期望其他路由访问该状态(嗯,您可以,但是它大部分时间都无法正常工作。)
相反,您通常会以某种方式存储该状态,并以特定客户端明确标识。然后,当该特定客户端发出下一个请求并且该路由获得请求时,该路由处理程序可以检查特定于客户端的存储以查看是否存在某些状态。请注意,首先创建此状态违反了REST设计的一些原则,因此您的第一个设计理念应该是如何避免这样做。最好将状态放入从第一个路由返回的网页中,然后当它发出下一个Web请求时,它可以在查询参数中包含该状态。
您可以存储客户特定状态的常用位置是:
通过将其放入返回的网页(这样客户端就可以选择该状态以便通过下一个请求发送它 - 通常作为查询参数或在表单帖子中发送)。
将状态放入cookie中。然后,cookie值将在下次请求时提供给服务器。
将其存储在与该浏览器/用户唯一关联的服务器端会话中。服务器在下次请求时也可以使用特定用户的服务器端会话状态。
请记住,服务器越是无状态(通常)。因此,如果存在与特定用户相关的临时状态,您希望将其存储在浏览器中并使用下一个请求呈现给服务器,而不是让服务器尝试在请求之间跟踪它。