Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodeJS:从一个js向另一个js发送html数据_Javascript_Node.js - Fatal编程技术网

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
文件中的整个代码属于一个模块。导出?-@路易斯:这是最好的方法。如果你要将你的应用程序分成几个模块或文件,每个模块应该专门做一件事,所以你在文件和导出中所做的任何事情都应该与同一件事相关。