簡體   English   中英

Node.js + Express傳遞對象

[英]Node.js + Express passing an object

我正在構建一個小型的node.js / express項目,並在configure.js中有一個功能可以在我的express應用程序中設置配置選項。 例如:

server.js

var express = require('express');
var server = ('./configure');

var app = express();
server.configure(app);

configure.js

exports.configure = function(app) {
  app.set('title', 'Server');
};

這是行不通的,但我希望它能解釋我正在嘗試做的事情。 我想對server.js中的應用程序實例進行更改。 我該怎么做呢?

編輯:

好吧,我想我可以使所有這些工作正常,如果我了解為什么這不起作用的話。 與回調的時間有關嗎? 第二個console.log()不被調用。

configure.js

var fs = require('fs');

var StringDecoder = require('string_decoder').StringDecoder;
var decoder = new StringDecoder('utf8');


function configure(app) {

  var config = module.exports = {};

    fs.readFile('config.txt', function (err, data) {
      if (err) throw err;

      config.title = decoder.write(data)
      console.log(config.title)

    });

    if(config.title) console.log(config.title);
    //app.set('title', config.title)
}

module.exports = function (app) {
  configure(app);
};

server.js

var express = require('express');
var cfg = require('./configure');
var fs = require('fs');

var app = express()

cfg(app)

(config.txt是echo'server'> config.txt)

您所擁有的應該真正起作用。

關於使用多個功能的問題,可以分別導出和調用每個函數。 當計時很重要時(例如,如果需要執行其他未在configure.js指定的設置步驟),這將很有用:

// configure.js

exports.configure = function (app) {
  // ...
};

exports.attachMiddlware = function (app) {
  // ...
};
// server.js

var express = require('express');
var server = require('./configure');

var app = express();
server.configure(app);
server.attachMiddlware(app);

您還可以將單個入口function定義為導出的對象 ,該函數調用configure.js所需的函數。 通過隔離configure.js的維護,這可以使server.js更加干凈:

function configure(app) {
  // ...
}

function attachMiddleware(app) {
  // ...
}

module.exports = function (app) {
  configure(app);
  attachMiddleware(app)
};
var express = require('express');
var configure = require('./configure');

var app = express();
configure(app);

我會避免這種情況,只做一個json對象:

app.js

var cfg = require('./config');
app.set('title', cfg.title);

config.js

var config = module.exports = {};
config.title = 'Server';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM