簡體   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