我已將server.js作爲我的nodejs-expressjs應用程序中的主要文件。在客戶端,我使用角度js模板(不使用服務器端的JADE/EJS)。我想在服務器上模塊化這個server.js文件,因爲如果我的應用程序增長,它可能不太好。如何模塊化nodejs + expressjs代碼
var express = require('express');
var app = express();
var fs = require("fs");
/**
* Session
*/
var session = require('express-session');
app.use(session({secret: '!23',resave: false,saveUninitialized:false}));
var bodyParser = require('body-parser');
var mysql = require('mysql');
var async = require('async');
/**
* Connect to MySQL
*/
var config = require("./config");
var db = config.database;
var connection = mysql.createPool(db);
app.use(bodyParser.json());
// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false });
/**
* Provide web directory
*/
app.use(express.static('public'));
app.post('/abc', function (req, res) {
//code
});
app.post('/xyz', function (req, res) {
//code
});
app.post('/test', function (req, res) {
//code
});
var server = app.listen(config.port);
假設我想在單獨的文件中添加以下方法讓我們說test.js。我會怎麼做?
app.post('/test', function (req, res) {
//code
});
當我在主server.js文件中使用app.use它拋出s TypeError:app.use()需要中間件函數 – John
app.use必須具有require('yourroutemodule')作爲參數,而yourroutemodule必須具有'''var express = require('express');'''var router = new express.Router();''' '''module.exports = router;'''你的錯誤意味着你不能將模塊傳遞給你的app.use –
是的,解決了問題謝謝,但如果我連接到SQL和在每個模塊中使用查詢,那麼爲什麼我需要在每個模塊中添加mysql連接代碼?不能我在server.ja有共同的代碼? – John