javascript – 从node.js中的模块内调用app.js的函数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 从node.js中的模块内调用app.js的函数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1698字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 从node.js中的模块内调用app.js的函数?](/upload/InfoBanner/zyjiaocheng/731/f988a243393a49669fff6615b1461d3e.jpg)
假设我有以下app.js(显然非常简化):
var express = require('express'),
app = express.createServer();
// include routes
require('./lib/routes')(app);
// some random function
var foo = function() {
return 'bar';
};
// another random function
var foo2 = function() {
return 'bar2';
};
然后我有路由模块:
module.exports = function(app){
app.get('/some/route', function(req, res){
var fooBar = foo(),
fooBar2 = foo2();
res.end(fooBar + fooBar2);
});
};
这显然不起作用,因为foo和foo2没有在模块中定义.有没有办法让这个工作,或至少一个不同的模式,以更好地完成这个?
解决方法:
那么你可以把这两个函数放在一个对象中,并在routes.js初始化时传递它们.
var express = require('express'),
app = express.createServer();
// some random function
var foo = function() {
return 'bar';
};
// another random function
var foo2 = function() {
return 'bar2';
};
var fns = {foo : foo, foo2: foo2}
// include routes
require('./lib/routes')(app, fns);
在路线:
module.exports = function(app, fns){
app.get('/some/route', function(req, res){
var fooBar = fns.foo(),
fooBar2 = fns.foo2();
res.end(fooBar + fooBar2);
});
};
这是我怎么做的.您还可以将它们包含在app对象中.除了在init函数中传递它们之外,您还可以导出这两个函数并在routes.js中需要它们.
var express = require('express'),
app = express.createServer();
// some random function
var foo = function() {
return 'bar';
};
// another random function
var foo2 = function() {
return 'bar2';
};
module.exports = {foo : foo, foo2: foo2}
// include routes
require('./lib/routes')(app, fns);
在路线:
module.exports = function(app){
var fns = require('../app.js');
app.get('/some/route', function(req, res){
var fooBar = fns.foo(),
fooBar2 = fns.foo2();
res.end(fooBar + fooBar2);
});
};
但我不喜欢它的想法,因为它产生循环依赖.对他们没有任何好感.
内容总结
以上是互联网集市为您收集整理的javascript – 从node.js中的模块内调用app.js的函数?全部内容,希望文章能够帮你解决javascript – 从node.js中的模块内调用app.js的函数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。