答不知雨
我喜欢将自己的配置名称空间设置在顶层config.js文件中,并使用这样的嵌套名称空间。
// Set the current environment to true in the env object
var currentEnv = process.env.NODE_ENV || 'development';
exports.appName = "MyApp";
exports.env = {
production: false,
staging: false,
test: false,
development: false
};
exports.env[currentEnv] = true;
exports.log = {
path: __dirname + "/var/log/app_#{currentEnv}.log"
};
exports.server = {
port: 9600,
// In staging and production, listen loopback. nginx listens on the network.
ip: '127.0.0.1'
};
if (currentEnv != 'production' && currentEnv != 'staging') {
exports.enableTests = true;
// Listen on all IPs in dev/test (for testing from other machines)
exports.server.ip = '0.0.0.0';
};
exports.db {
URL: "mongodb://localhost:27017/#{exports.appName.toLowerCase()}_#{currentEnv}"
};
这对于系统管理员编辑是很友好的。然后当我需要的东西,如数据库连接信息,这是
require('./config').db.URL
路线/控制器
我喜欢用我的控制器离开我的路线,并将其组织在一个app/controllers子目录中。然后,我可以加载它们,让他们添加他们需要的任何路线。
在我的app/server.jsJavaScript文件中,我这样做:
[
'api',
'authorization',
'authentication',
'domains',
'users',
'stylesheets',
'javascripts',
'tests',
'sales'
].map(function(controllerName){
var controller = require('./controllers/' + controllerName);
controller.setup(app);
});
所以我有这样的文件:
app/controllers/api.js
app/controllers/authorization.js
app/controllers/authentication.js
app/controllers/domains.js
例如在我的域控制器,我有这样的setup功能。
exports.setup = function(app) {
var controller = new exports.DomainController();
var route = '/domains';
app.post(route, controller.create);
app.put(route, api.needId);
app.delete(route, api.needId);
route = '/domains/:id';
app.put(route, controller.loadDomain, controller.update);
app.del(route, controller.loadDomain, function(req, res){
res.sendJSON(req.domain, status.OK);
});
}
查看
观点app/views正在成为习惯的地方。我这样摆出来。
app/views/layout.jade
app/views/about.jade
app/views/user/EditUser.jade
app/views/domain/EditDomain.jade
静态文件
进入一个public子目录。
Github上/ Semver / NPM
把一个README.md markdown文件放到git的git仓库中。
把一个包含语义版本号的package.json文件放在你的git仓库中,用于NPM。