簡體   English   中英

加載模塊node.js的最佳方法

[英]Best way to load modules node.js

我的項目有很多文件夾,我經常通過以下方式將自己的模塊加載到node.js中:

var request = require("request"),
    config  = require("../../../modules/config"),
    urls    = require("../../../modules/urls");

有時我會移動文件夾並更改路徑,因此我需要手動調整../零件。

我不想將模塊移動到node_modules文件夾中,但是我想通過以下方式加載模塊:

var request = require("request"),
    config  = require("config"),
    urls    = require("urls");

要么

var request = require("request"),
    config  = require("modules/config"),
    urls    = require("modules/urls");

我有什么選擇?

新答案:

畢竟,相對路徑似乎是最簡單的選擇,它允許您從任何位置運行腳本。

var config = require("../../config");

舊答案:

我發現,雖然不理想,但也可以使用process.cwd()

var request = require("request"),
    config  = require(process.cwd() + "/modules/config");

或者,如果將process.cwd()設置為主js文件中的全局變量

global.cwd = process.cwd();

然后

var request = require("request"),
    config  = require(global.cwd + "/modules/config"),
    urls    = require(global.cwd + "/modules/urls");

您可以根據某些情況嘗試執行以下操作

  • 如果腳本是專門為您的應用程序編寫的,則意味着它不能與任何其他應用程序一起使用,並且這些腳本沒有任何依賴關系,請將它們放置在modules目錄下,並嘗試創建公開變量,例如global.basepath並使用path.join來構造文件路徑並要求它。您還可以在應用程序的主腳本中要求它們之后注入模塊變量。

main.js

var config = require('modules/config.js')(_,mongoose,app);

modules/config.js

module.exports=function(_,mongoose,app){
 return function(){
  // _,mongoose,app
  this.loadConfigVariable..
 }
}
  • 如果腳本不是具有單獨測試的單一文件,則需要其他供應商模塊才能執行,然后創建單個節點模塊並將它們發布到注冊表中,以方便安裝主應用程序。 就像express一樣,有主要的應用程序express ,也有一些express用途的模塊,例如express-validation ,這些模塊又具有自己的依賴性。

您可以在node_modules添加一個符號鏈接,以指向模塊所在的位置。

例如,添加一個名為“ my_modules”的符號鏈接,引用“ ../foo/bar/my_modules”。 然后,您的需求將看起來像

var config = require('my_modules/config');
var urls = require('my_modules/urls');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM