我正在使用NodeJS的ExpressJS web框架。
使用ExpressJS的人把他们的环境(开发、生产、测试……),他们的路线等放在app.js上。我认为这不是一个美好的方式,因为当你有一个大的应用程序,app.js太大了!
我想要这样的目录结构:
| my-application
| -- app.js
| -- config/
| -- environment.js
| -- routes.js
这是我的代码:
app.js
var express = require('express');
var app = module.exports = express.createServer();
require('./config/environment.js')(app, express);
require('./config/routes.js')(app);
app.listen(3000);
配置/ environment.js
module.exports = function(app, express){
app.configure(function() {
app.use(express.logger());
});
app.configure('development', function() {
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
app.configure('production', function() {
app.use(express.errorHandler());
});
};
配置/ routes.js
module.exports = function(app) {
app.get('/', function(req, res) {
res.send('Hello world !');
});
};
我的代码工作得很好,我认为目录的结构很漂亮。然而,代码必须进行调整,我不确定它是否好/漂亮。
是更好地使用我的目录结构和调整代码或简单地使用一个文件(app.js)?
谢谢你的建议!
我最近把模块当成了独立的小应用。
|-- src
|--module1
|--module2
|--www
|--img
|--js
|--css
|--#.js
|--index.ejs
|--module3
|--www
|--bower_components
|--img
|--js
|--css
|--#.js
|--header.ejs
|--index.ejs
|--footer.ejs
现在对于任何模块路由(#.js),视图(*.ejs), js, css和资产都是相邻的。
子模块路由设置在父文件#.js中,有另外两行
router.use('/module2', opt_middleware_check, require('./module2/#'));
router.use(express.static(path.join(__dirname, 'www')));
这样甚至子模块也是可能的。
不要忘记将view设置为src目录
app.set('views', path.join(__dirname, 'src'));
1)你的Express项目文件系统可能是这样的:
/ ...
/lib
/node_modules
/public
/views
app.js
config.json
package.json
app.js -你的全局应用容器
2)模块主文件(lib/mymodule/index.js):
var express = require('express');
var app = module.exports = express();
// and load module dependencies ...
// this place to set module settings
app.set('view engine', 'jade');
app.set('views', __dirname + '/views');
// then do module staff
app.get('/mymodule/route/',function(req,res){ res.send('module works!') });
3)在main app.js中连接模块
...
var mymodule = require('mymodule');
app.use(mymodule);
4)样本逻辑
lib/login
lib/db
lib/config
lib/users
lib/verify
lib/
/api/
...
lib/
/admin/
/users/
/settings/
/groups/
...
最适合测试
最适合规模
分开取决于模块
按功能(或模块)分组路由
tj说/在Vimeo上展示有趣的想法如何模块化表达应用程序-
使用Node.js和Express的模块化web应用程序。强大而简单。