我有两个javascript文件。为简单起见,我创建了路由器,我想维护一个变量并在所有文件中更改其值,类似于java的静态字段。但我想初始化的变量没有初始化。
就像在server.js文件中我有Vmessages变量我想使它类似于java的satic变量,所以我可以在另一个文件中更改它的值并访问server.js文件中的更改。这是server.js文件,
//server.js file
var Vmessages = [{text: 'some text', owner: 'Tim'},{text: 'other message', owner: 'Jane'}];
app.get('/messages', (req, res) => {
res.json(Vmessages);
});
module.exports.variableName = Vmessages;
app.use(require('./routes/messages'));
所以我导入了server.js文件Vmessages变量并在messages.js文件中更改了它的值。正如您在下面的代码片段中看到的,我可以访问server.js文件的变量并进行更改。即使我打印它,它也会显示变化。但是当我访问server.js文件中的Vmessages时,它的值没有改变,它的初始值也是。
//messages.js file
var sourceFile = require('../server.js');
var messages = sourceFile.variableName;
router.post('/messages', (req, res) => {
console.log(sourceFile.variableName); //[{text: 'some text', owner: 'Tim'}]
messages.push({text: 'other message', owner: 'Jane'});
console.log(sourceFile.variableName); //[{text: 'some text', owner: 'Tim'},{text: 'other message', owner: 'Jane'}]
res.json(req.body);
})
module.exports = router;
哪里弄错了?
答案 0 :(得分:1)
@ M.Ramzan使用此代码。我对路由代码做了一些更改。这符合您的要求。这里是server.js
个文件
var express = require('express');
var app = express();
var variableName;
var Vmessages = [{text: 'some text', owner: 'Tim'},{text: 'other message', owner: 'Jane'}];
app.get('/messages', (req, res) => {
res.json(Vmessages);
});
exports.variableName = Vmessages;
app.use(require('./routes/messages'));
app.listen(3000,function(){
console.log("Server listening on 3000");
});
这是messages.js
档案
//messages.js file
var express = require('express');
var bodyParser = require('body-parser');
var sourceFile = require('../server.js');
var app = express();
var messages = sourceFile.variableName;
var router = express.Router();
router.use(bodyParser.json());
router.post('/messages', (req, res) => {
console.log(sourceFile.variableName);
messages.push(req.body);
res.json(messages);
});
module.exports = router;
将serevr作为node server.js
运行。您可以使用http://localhost:3000/messages
方法将Vmessages中的数据作为get
获取。您可以使用http://localhost:3000/messages
方法使用post
向Vmessages添加数据。您可以使用请求正文添加数据。希望这会有所帮助.....