我可以将变量传递给所需的文件吗?

时间:2016-01-28 14:00:36

标签: node.js express

在express中,我正在尝试将我的缩小移动到一个需要的文件:

app.js:

var app = express();
var minify = require("./minify.js");

在该文件中,我尝试设置模板引擎。

minify.js:

var app = express();
app.engine('html', mustacheExpress());

稍后当我尝试在app.js中使用渲染引擎时,我得到的错误是没有设置模板引擎。如果我在同一个文件中运行它,它可以工作。我认为问题是我声明了两次app变量。如何将app变量传递给minify.js?

2 个答案:

答案 0 :(得分:6)

问题在于您定义了 app变量,并且您当前通过调用express来实例化全新的express()实例。

你需要做的是开始使用函数,以便你可以传递params(还有其他方法,但这是一个适合你的方法):

// app.js
var app = express();
var minify = require('./minify'); // don't include .js!
minify(app); // CALL the function that minify.js exports, passing params

// minify.js
module.exports = function(app) {
    // because app comes as a parameter, it's the very same you've created in app.js
    app.engine('html', mustacheExpress());
}

同样,有许多不同的方法和可能的方法,取决于你想做什么,但这将在你的情况下完成工作。阅读有关NodeJS的更多信息,它需要系统。

答案 1 :(得分:3)

你可以通过应用程序'从 app.js 到你的缩小,使用你的模块中的函数,如Andrey说。你可以这样做,例如:

minify.js

module.exports = {
    setAppEngine : function(app) {
        app.engine( [...] );
    }
}

并在 app.js 中调用它:

app.js

var app = express();
var minify = require("./minify.js").setAppEngine(app);

此解决方案非常有用,因为您可以在 minify.js 中设置和调用其他方法。例如,您可以使用 minify.js 中的相同代码:

app.js

var app = express();
var minify = require("./minify.js");

minify.setAppEngine(app);