在收到http请求后使用express.js执行函数?

时间:2016-11-07 18:20:07

标签: javascript angularjs node.js express

所以我有一个角度控制器,按下按钮后成功发出http请求。我有一个运行的node.js服务器获取请求,然后发送回YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!。我想在收到请求时执行一个函数,但该函数存在于./Source/Server/test.js中的文件夹内的文件中。

如何告诉我的server.js文件发送命令来运行函数???

server.js:

var express = require('express');
var app = express();
var fs = require('fs');
app.use(express.static(__dirname + '/Source/Client/Templates'));
app.use(express.static(__dirname + '/'));
app.get('/', function (req, res) {
    res.sendFile('/Source/Client/Templates/Home.html', {root: __dirname });
});
app.get('/ThisIsATest', function (req, res) {
  res.send('YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!')
})
app.listen(3000);
console.log("running at port 3000");

test.js:

var run = require('./quickstart.js');
run.runQuickstart();

控制器:

angular.module('DaycareApp').controller('WaitingListController', ['$scope', '$http', function($scope, $http){
    $scope.test = function() {
        $http.get('/ThisIsATest')
        .then(function(response) {
            alert(response.data);
        });
    };
}]);

4 个答案:

答案 0 :(得分:2)

在公开必要的功能后,您可以要求 test.js 作为文件,如下所示:

// test.js
// ========
var run = require('./quickstart.js');

module.exports = {
  run: function () {
    run.runQuickstart();
  }
};

server.js 中,请求:

var test = require('./Source/Server/test');

并将其与test.run()一起使用。

答案 1 :(得分:2)

在test.js中,您可以像这样导出模块

var run = require('./quickstart.js');

function mySpecialFunction() {
    return run.runQuickstart();
}

module.exports = {
    mySpecialFunction: mySpecialFunction
};

现在在您的server.js或控制器所在的任何地方,您都可以通过使用require在模块中包含test.js来调用该函数。

var test = require('./test.js');

app.get('/ThisIsATest', function (req, res) {
  res.send(test.mySpecialFunction());
});

答案 2 :(得分:2)

你可以这样做:

server.js

var express = require('express');
var app = express();
var fs = require('fs');
var run = require('./path/to/quickstart.js');

// ...

app.get('/ThisIsATest', function (req, res) {
  run.runQuickstart();
  res.send('YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!')
})

// ...

然后在test.js:

var run = require('./quickstart.js');

exports.runQuickstart = function() {
  run.runQuickstart();
};

答案 3 :(得分:2)

您可以要求提供文件

var outsideFunction  = require(__dirname + '/Source/Server/test.js');

然后将其添加到路线中。

app.get('/ThisIsATest', function (req, res) {
      outsideFunction(req, res);
      res.send('YOU HAVE SUCCEEDED! HTTP REQUEST RECEIVED!')
})