Tro*_*dol 6 javascript node.js express
这让我发疯了.我是NodeJS的新手.到目前为止,我喜欢它,但有些事情让我失望.我向一个节点项目提出了一个非常基本的起点,我不确定如何搜索谷歌这个.
//myapp/server.js
var config = require('./config');
var app = express();
var api = require('./app/routes/api')(app, express); // <-- this?
app.use('/', api);
var server = app.listen(3000, function () {
console.log('\n============================');
console.log(' Server Running on Port 3000 ');
console.log('============================\n');
});
Run Code Online (Sandbox Code Playgroud)
然后是包含路由的api.js文件.
//myapp/app/routes/api.js
var config = require('../../config');
var mysql = require('mysql');
module.exports = function(app, express) {
var api = express.Router();
api.all('/', function(req, res) {...});
api.all('/route-two', function(req, res) {...});
api.all('/another-route', function(req, res) {...});
return api;
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想将这里发生的事情分解为一个更有组织的结构,但是,我想了解我正在做的事情.
令我困惑的主要是这条线
var api = require('./app/routes/api')(app, express);
Run Code Online (Sandbox Code Playgroud)
我没有意识到你可以在()()没有.加入它们的情况下彼此相邻.有人可以解释发生了什么吗?
还有什么意义(app, express)?看来,app和express越来越传递到api应用程序的一部分,所以它的范围可以达到?我离开了吗?
如果有一个更清洁的方法,我希望得到一些见解.我很感激任何想法.
谢谢!
编辑 为了确保我理解......
var api = require('require this file')(params available to this file);
Run Code Online (Sandbox Code Playgroud)
移动任何从需要api.js到server.js那么包括那些作为参数
var api = require('./app/routes/api')(config, app, express, mysql);
Run Code Online (Sandbox Code Playgroud)
编辑
之后来自@AhmadAssaf @Gurbakhshish Singh和@guy mograbi的更多有用的反馈
我想在另一个文件中使用的模块require()应该通过第二组传入()
//.server.js
var config = require('./config');
var app = express();
var api = require('./app/routes/api')(config, app, express);
| | |
_____________/______/________/
/ / /
//.app/routes/api.js | | |
module.exports = function(config, app, express) {
var api = express.Router();
// code to handle routes
}
Run Code Online (Sandbox Code Playgroud)
这部分可能是错的,但基于我认为我理解的内容.
//.server.js
var config = require('./config');
var app = express();
var register = require('./app/routes/register')(config, app, express);
var login = require('./app/routes/login')(config, app, express);
| | |
_________________/______/________/
/ / /
//.app/routes/login.js | | |
module.exports = function(config, app, express) {...handle login...}
//.app/routes/register.js
module.exports = function(config, app, express) {...handle registration...}
etc. etc.
Run Code Online (Sandbox Code Playgroud)
希望我的想法是正确的.我感谢大家对此的帮助!:)
所以基本上你必须了解一些事情
module.exports包装 Javascript 对象并将其导出以用作 Node.js 应用程序周围的可插入代码段模块中的api函数是一个带有两个参数的函数。当您需要该模块时,您希望将一些构造函数传递给该函数,这就是在第一个 () 中的模块名称之后使用第二个 ()
在程序中需要express一次并传递变量或多或少是一种单例模式。您还可以做的是将config对象也传递给api模块,而不是再次需要它:)
| 归档时间: |
|
| 查看次数: |
982 次 |
| 最近记录: |