SORU
25 NİSAN 2011, PAZARTESİ


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
8 EYLÜL 2011, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EmperorTigerstar

    EmperorTiger

    14 EYLÜL 2009
  • We've moved!

    We've moved!

    7 Ocak 2008
  • Alexey - servant of Christ

    Alexey - ser

    15 EYLÜL 2007