SORU
10 NİSAN 2012, Salı


Farklı bir dosya yolları için uygulama-örneği geçirmek Nasıl?ifade:

Bir dosya bütün yolları ve diğer ilgili eylemleri içerir farklı dosyalar, benim yolları ayırmak istiyorum. Ben şu anda bunu başarmak için bir çözüm var, ancak eylemleri erişmek için muktedir uygulaması-örnek genel yapmak istiyorum. Benim şu anki Kur, bu gibi görünüyor:

app.js:

var express   = require('express');
var app       = express.createServer();
var routes    = require('./routes');

var controllers = require('./controllers');
routes.setup(app, controllers);

app.listen(3000, function() {
  console.log('Application is listening on port 3000');
});

routes.js:

exports.setup = function(app, controllers) {

  app.get('/', controllers.index);
  app.get('/posts', controllers.posts.index);
  app.get('/posts/:post', controllers.posts.show);
  // etc.

};

controllers/index.js:

exports.posts = require('./posts');

exports.index = function(req, res) {
  // code
};

controllers/posts.js:

exports.index = function(req, res) {
  // code
};

exports.show = function(req, res) {
  // code
};

Ancak, bu Kur büyük bir sorun vardır: eylemler (denetleyici/*.için geçmem gereken bir veritabanı - ve uygulama-örneği var js). Tek seçenek aklıma, her iki değişken gerçekten bir çözüm değil küresel hale getiriyor. Yolları bir sürü var çünkü eylemleri yolları ayırmak istiyorum ve merkezi bir yere sahip olacak.

Eylemler için değişkenleri geçmek ama yolları eylemleri ayırmak için en iyi yolu nedir?

CEVAP
13 Ocak 2014, PAZARTESİ


Node.js dairesel bağımlılıkları destekler.


app.js

var app = module.exports = express(); //now app.js can be required to bring app into any file

//some app/middleware setup, etc, including 
app.use(app.router);

require('./routes'); //module.exports must be defined before this line


routes/index.js

var app = require('../app');

app.get('/', function(req, res, next) {
  res.render('index');
});

//require in some other route files...each of which requires app independently
require('./user');
require('./blog');


-----04/2014 güncelleme-----http://expressjs.com/4x/api.html#router

Yeni jeneratör örnek:https://github.com/expressjs/generator/blob/master/templates/js/routes/index.js https://github.com/expressjs/generator/blob/master/templates/js/app.js#L24

Yine de diğer kaynaklardan app erişmek için usecases var, döngüsel bağımlılık hala geçerli bir çözüm.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DetroitBORG

    DetroitBORG

    29 Temmuz 2008
  • Eric Anthony

    Eric Anthony

    13 AĞUSTOS 2011
  • HER0R

    HER0R

    16 Aralık 2007