Bir uygulama yapısı Nasıl ExpressJS?
NodeJS için ExpressJS web çerçeve kullanıyorum.
İnsanlar ExpressJS kullanarak kendi ortamlarında (üretim, test ... geliştirme), ... app.js kendi rotalarını indir. Büyük bir uygulama var, app.js çok büyük olduğu için güzel bir yol değil bence !
Bu yapı dizinleri istiyorum :
| my-application
| -- app.js
| -- config/
| -- environment.js
| -- routes.js
Burada benim kod :
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);
config/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());
});
};
config/routes.js
module.exports = function(app) {
app.get('/', function(req, res) {
res.send('Hello world !');
});
};
Benim kod iyi çalışıyor ve dizin yapısını, güzel olduğunu düşünüyorum. Bununla birlikte, kodu adapte olmalı ve iyi/güzel olduğundan emin değilim.
Dizin yapısı kullanın ve kod uyum ya da sadece birini kullanmak daha iyi (app.js) dosya mı ?
Önerileriniz için teşekkürler !
CEVAP
GÜNCELLEME (2013-10-29)Lütfen benim diğer cevap yerine yoğun talep gibi klişe bir github repo ve kapsamlı bir README bu konuda benim son öneriler ayrıntılı JavaScript, CoffeeScript vardır. iyi bakın
Config
Ne yaptığını gayet iyi. Böyle iç içe geçmiş bir ad ile kendi config benim ad üst düzey config.coffee
bir dosya oluşturmasını istiyorum.
#Set the current environment to true in the env object
currentEnv = process.env.NODE_ENV or '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 not in ['production', '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}"
Bu sysadmin düzenleme için dostudur. DB bağlantı bilgileri gibi bir şeye ihtiyacım var sonra
require('./config').db.URL
Yolları/Denetleyicileri
Benim denetleyicileri ile yollar ayrılıp app/controllers
bir alt onları organize etmek gibi. Sonra doldur ve onlara neye ihtiyaçları varsa eklemek izin verebilirim.
app/server.coffee
coffeescript dosyamda yapıyorum:
[
'api'
'authorization'
'authentication'
'domains'
'users'
'stylesheets'
'javascripts'
'tests'
'sales'
].map (controllerName) ->
controller = require './controllers/' controllerName
controller.setup app
Gibi dosyalar var:
app/controllers/api.coffee
app/controllers/authorization.coffee
app/controllers/authentication.coffee
app/controllers/domains.coffee
Ve benim örnek etki alanı denetleyicisi için, bu gibi setup
bir işlevi var.
exports.setup = (app) ->
controller = new exports.DomainController
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, exports.delete
app.get route, controller.loadDomain, (req, res) ->
res.sendJSON req.domain, status.OK
Manzarası
app/views
koyarak manzarası ortak yer haline geliyor. Bu şekilde yatıyordum.
app/views/layout.jade
app/views/about.jade
app/views/user/EditUser.jade
app/views/domain/EditDomain.jade
Statik Dosyaları
public
bir alt dizinine gidin.
Github/Semver/etmesinin önünü
Bir README koyun.md github için git repo kök dosya bir fiyat indirimi.
Bir paket koymak.git repo semantic version bir sayı ile json dosyası etmesinin önünü kök.
Nasıl node.js uygulama hata ayıklama...
Nasıl Android Uygulama bellek kullanım...
Nasıl Android bir URL açmak'benim...
Nasıl "Varolan Madde" Ekleyin...
Uygulama nasıl olsun'in yolu s ed...