我已将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