簡體   English   中英

NodeJS module.exports 子模塊

[英]NodeJS module.exports submodule

伙計們,嘗試包含其他 .js 文件以便能夠以下列方式從模塊導出。 這將使主模塊更具可讀性。 我正在嘗試包含來自其他函數的代碼。

我想這不是正確的方法。 有人可以指導我朝着正確的方向前進嗎?

主模塊文件:

module.exports = {
    eval(fs.readFileSync('./extras/foo.js')+'');

    fdsa: function (barf, callback) {
    },
    asdf: function (barf, callback) {
    },
}

foo.js:

foo: function (barf, callback) {
     ...
     callback(err, result);
}

如果您希望main.js基本上復制和增強 foo 的所有內容(這很愚蠢,但這似乎是您要的),您可以這樣做:

主文件

var foo = require('./extras/foo');
for (var prop in foo) {
  exports[prop] = foo[prop];
}
exports.fdsa = function(...
exports.asdf = function(...

./extras/foo.js

exports.foo = function(...

旁注如果你把一個文件放在somedir/index.js ,它可能只是somedir ,這也很有用。

如果您只想通過 main 訪問foo並且可以使用子命名空間,請執行以下操作:

主文件

exports.foo = require('./extras/foo');

然后您的調用代碼可以執行以下操作:

require('./main').foo.foo(blah, callback);

另請注意,如果您希望整個foo模塊成為一個函數,只需執行以下操作:

module.exports = function foo(barf, callback) {...

使用 es6 模塊模式有一種非常簡單的方法可以實現這一點。 所以在 foo.js 中

export function foo(barf, callback) {
     ...
     callback(err, result);
}

在 main.js 中,你會有類似的東西,

export * from './foo.js';
export function fdsa(barf, callback) {
...
}

暫無
暫無

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

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