[英]Split the long NodeJs webserver File
我的NodeApplication有一個長的webserver.js文件,基本上它是做什么的,它有一個用於顯示靜態頁面的Express模塊,還有一些處理GET和POST Request的功能。
這些GET和POST請求將在內部調用某些REST服務以獲取數據並將RESULT傳遞給瀏覽器,因此REST API不會公開。
var express = require('express');
var request = require('request');
var compression = require('compression');
var bodyParser = require('body-parser');
var app = express();
var util = require("util");
async = require("async");
app.use(compression());
app.use(bodyParser.json({}));
app.use(bodyParser.urlencoded({ extended: true }));
require('./node_scripts/session.js')(app);
var Url = require('./node_scripts/ServiceUrls.js');
//REDIRECT TO PUBLIC DIRECTORY
app.use('/', express.static(__dirname + '/public'));
//GET TEMPLATES FOR FORM
app.get('/Templates', function(req, res) {
var MyJsonData = {
AccessToken: req.session.AccessToken || 0
};
console.log(MyJsonData);
request({
url: Url.UserService + 'GetTemplates', //URL to hit
method: 'POST',
json: MyJsonData
}, function(error, response, body) {
if (error) {
res.send("dummytext");
res.end();
console.log("/Templates (send dummy data) ->" + error);
} else {
console.log("/Templates REST Response");
console.log(response.statusCode, body);
res.send(body);
res.end();
}
})
});
app.get('/AnotherRequest', function(req, res) {
});
..
..
..
app.get('/AnotherNthRequest', function(req, res) {
});
因此,我如何分割文件,以便可以將某些請求分為單獨的js文件,並且開發起來會更容易
我對NodejS完全陌生。 是的,但我有經驗是PHP,在這種情況下不會幫助我
您可以為此使用快速路由器 。
下面的代碼簡單演示了如何修改您的代碼。
您的主文件分為三部分
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json({}));
app.use(bodyParser.urlencoded({
extended: true
}));
//REDIRECT TO PUBLIC DIRECTORY
app.use('/', express.static(__dirname + '/public'));
// Send request to the routes
var router = require('./routes')(app, express);
// Append the router
app.use('/', router);
將您的路線處理放在這里。
var myController = require('./controller');
module.exports = function (app, express) {
// Create route handlers
var router = express.Router();
router.route('/Templates')
//GET TEMPLATES FOR FORM
.get(function (req, res) {
myController.myFunction(req,res);
});
router.route('/AnotherRequest')
.get(function (req, res) {});
..
..
..
router.route('/AnotherNthRequest')
.get(function (req, res) {});
return router;
};
將您的邏輯放在這里。
var request = require('request');
var Url = require('./node_scripts/ServiceUrls.js');
exports.myFunction = function (req, res) {
var MyJsonData = {
AccessToken: req.session.AccessToken || 0
};
console.log(MyJsonData);
request({
url: Url.UserService + 'GetTemplates', //URL to hit
method: 'POST',
json: MyJsonData
}, function (error, response, body) {
if (error) {
res.send("dummytext");
res.end();
console.log("/Templates (send dummy data) ->" + error);
} else {
console.log("/Templates REST Response");
console.log(response.statusCode, body);
res.send(body);
res.end();
}
})
};
我們可以利用express實例(var應用程序),請記住express支持以下與HTTP方法相對應的路由方法:get,post,put,head,delete等。這意味着我們可以將express實例作為為我們處理路由的函數的參數。
我們還可以通過將回調方法與HTTP方法分開來進一步提高概念(記住路由的格式為app.VERB('path',callback)),因此我們也將回調方法存放在單獨的文件中。
我們可以使用出口。 CALLBACKNAME公開單個回調,而module.exports公開整個路由文件到服務器模塊。 因此:
//templates.controller.js (this is the file name for example)
exports.tempHandler = function(req, res) {
var MyJsonData = {
AccessToken: req.session.AccessToken || 0
};
console.log(MyJsonData);
request({
url: Url.UserService + 'GetTemplates', //URL to hit
method: 'POST',
json: MyJsonData
}, function(error, response, body) {
if (error) {
res.send("dummytext");
res.end();
console.log("/Templates (send dummy data) ->" + error);
} else {
console.log("/Templates REST Response");
console.log(response.statusCode, body);
res.send(body);
res.end();
}
})
};
template.router.js
// we first export the file which houses our callbacks
var templates = require('../controllers/template.controller.js');
// the app parameter represents the express instance (var app)
// we provide it as a parameter and manipulate it in the file
module.exports = function(app) {
// Here you go, short and clean
app.get('/Templates', templates.tempHandler);
// and your other routes
};
然后在webserver.js中,只需添加以下行代替路由即可:
require('./app/routes/template.router')(app);
這只是一個基本示例,希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.