Javascript nodeJS:从一个js向另一个js发送html数据
下面的代码正在运行Javascript nodeJS:从一个js向另一个js发送html数据,javascript,node.js,Javascript,Node.js,下面的代码正在运行 var express = require('express') var app = express(); var fs = require('fs') var addUserToDB = require('./addUserToDB') app.use('addUserToDB', addUserToDB) app.get('/register.html', function(req,res){ res.sendFile(__dirname+ "/" + "r
var express = require('express')
var app = express();
var fs = require('fs')
var addUserToDB = require('./addUserToDB')
app.use('addUserToDB', addUserToDB)
app.get('/register.html', function(req,res){
res.sendFile(__dirname+ "/" + "register.html");
})
var server = app.listen(8087,function(){
console.log("Listening at 8087");
})
app.get('/addUserToDB',function(req,res){
firstname = req.query.firstname;
console.log(firstname)
})
app.get('/register.html', function(req,res){
res.sendFile(__dirname+ "/" + "register.html");
})
但是,当我尝试删除以下方法并将其放入另一个.js文件中时,我可以从该文件中获取名字。它不起作用了。addUserToDB.js中包含以下代码:
var addUserToDB = app.get('/addUserToDB',function(req,res){
firstname = req.query.firstname;
console.log(firstname)
})
module.exports = addUserToDB;
我已经尝试创建一个addUserToDB.js文件并添加了代码
var express = require('express')
var app = express();
app.get('addUserToDB',function(req,res){
firstname = req.query.firstname;
console.log(firstname)
})
但我似乎错过了一些东西,因为它不起作用。谢谢。这里有几件事。首先,需要从
server.js
执行require
的addUserToDB.js
(我假设这是主文件的名称),然后将其用作中间件。此外,您还需要从addUserToDB.js
导出应用程序
server.js:
var express = require('express')
var app = express();
var fs = require('fs')
var addUserToDB = require('./addUserToDB');
app.get('/register.html', function(req,res){
res.sendFile(__dirname+ "/" + "register.html");
})
var server = app.listen(8087,function(){
console.log("Listening at 8087");
})
app.use(addUserToDB);
addUserToDB.js:
var express = require('express')
var router = express.Router();
router.get('/addUserToDB',function(req,res){
firstname = req.query.firstname;
console.log(firstname)
})
module.exports = router;
您是否“需要”主服务器.js中的新文件?是的,我有:
module.exports=addUserToDB代码>在我的addUserToDB.js中,还有以下内容:var addUserToDB=require('./addUserToDB')应用程序。在server.js中使用('addUserToDB',addUserToDB)
,正在工作,谢谢。我想问一下:当你在做module.exports=app
什么,我的理解是否正确,您正在addUserToDB.js
中导入app
的所有用法?。。。还有,有没有一种方法可以导出整个文件,而不是文件的var或函数?是的,你可以这样说。您正在导出文件中函数的定义,在本例中是app
加上/addUserToDB
的路由。或者,您可以使用var router=express.router()代码>而不是var app=express()
(和router
而不是app
),您将获得相同的效果,但使用Express的路由器比使用app
要好,因为您只导出路由,而不是整个app。不,您只能导出一个变量。如果需要向addUserToDB.js
添加更多路由,可以在导出route
(或app
)之前调用定义更多路由,如router.get('/route')
)。或者在某些情况下,对于控制器,您可以只导出带有函数的对象,如module.exports={func1:function(){},func2:function(){}代码>。因此,它就像.js
文件中的整个代码属于一个模块。导出?-@路易斯:这是最好的方法。如果你要将你的应用程序分成几个模块或文件,每个模块应该专门做一件事,所以你在文件和导出中所做的任何事情都应该与同一件事相关。