繁体   English   中英

表达处理路由的正确方法

[英]Express proper way to handle routing

看到我的情况是我已经将express.js库初始化为一个变量,并询问是否有一种方法可以将app.js的express变量传递给users.js。我的理解是无法完成,我必须导入它如果要在user.js中使用快递库功能,请分别在users.js中使用

然后我看到了下面的方法

我看到的是App.js

var express= require('express');
var app = express();
//Some code...
//Some code...
  var users = require('./routes/users.js');
  app.use('/',users);

路线/User.js

   module.exports = (app,passport) = > {
   app.get('/route/',(req,res)=>{

  });

}

到目前为止我一直在做的就是在该js文件中也要求它。那么处理这种情况的最佳方法是什么?

App.js

var express= require('express');
var app = express();

//Some code...
//Some code...
  var users = require('./routes/users.js');
  app.use('/',users);

路线/User.js

var express= require('express');
var router= express();

   router.get('/route/',(req,res)=>{
     //some action
  });

 module.exports = router;

以及如何使用ecma脚本变量

编辑:-

此代码如何工作而不在users.js app.js中导入express变量

var express= require('express');
var app = express();

var users = require('./routes/users.js');
app.use('/',users);

路线/users.js

module.exports = (app)=>{

    app.get('',(req,res)=>{
   //some code
   });
}

首先,将ECMAScript与变量一起使用非常简单。 只需使用let代替var 区别在于范围。 var自动将变量分配给全局范围,这意味着可以在整个文件中对其进行访问。 如果您不小心两次使用相同的变量名,则可能导致大型复杂文件出现问题。 另一方面, let只将变量分配给本地作用域。 因此,如果您在函数内部使用let ,那么它将仅存在于该函数内部。 因此,如果在该函数之外使用相同的变量名,则文件将按预期运行。

其次,虽然您建议的替代方法的性质尚不完全清楚,但通常需要在使用该方法的每个文件中require一个库。 即使通过修修补补以某种方式找到了行之有效的方法,通常也将其视为最佳实践。

Express实际上在第二个用例中引入了Express.Router ,因此它是完全有效的:

const express= require('express');
const router= express.Router();

router.get('/route/', (req,res) => {
 //some action
});

module.exports = router;

第一种方法也可行,但我认为它只会使事情复杂化。 如果您确实需要两个不同文件中的内容(例如, passport ),则应将其提取到单独的模块中,然后在两个位置均将其导入。 如果您确实要在导入链中传递值,则实际上需要在需要时调用它:

//user.js
module.exports = app => {
 app.get("/user", "whatever");
}

//app.js
const app = express();
require("/user.js")(app); // <---

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM