node.js - 如何创建跨多个文件的 CommonJS 模块?

标签 node.js commonjs

我正在编写一个 NodeJS 应用程序,我想将我的类分成单独的文件,但命名空间(模块)中包含许多类,一个类使用一个文件。

据我了解,NodeJS 使用 CommonJS 来 require 其他文件中的对象,将每个文件视为不同的模块。

鉴于此,如何创建跨多个文件的 CommonJS 模块?

最佳答案

您的命名空间/分组模块可能如下所示(迫切需要):

customer.js:

module.exports.wholesale = require('./customers/wholesale');
module.exports.retail = require('./customers/retail');
module.exports.special = require('./customers/special');

现在当您需要客户端模块时,您可以编写:

var Customer = require('customer.js');

并且您可以访问所有客户类型:

var wholesale = Customer.wholesale;
var retail = Customer.retail;
var special = Customer.special;

在此解决方案中,当您导入 Customer 时,它也会加载所有子模块。有时子模块可能非常大,而您只需要一个子模块。如果是,您可以像这样编写分组客户模块(惰性需求):

module.exports.wholesale = function(){
  return require('./customers/wholesale');
}
module.exports.retail = function(){
  return require('./customers/retail');
}
module.exports.special = function(){
  return require('./customers/special');
}

并且您可以访问所有客户类型:

var wholesale = Customer.wholesale();
var retail = Customer.retail();
var special = Customer.special();

您可以通过对其他分组模块进行分组来进行更深层次的嵌套。

关于node.js - 如何创建跨多个文件的 CommonJS 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32930605/

相关文章:

node.js - 我无法在 heroku 中部署 google oauth 应用程序

android - 用于前端应用程序的 OAuth2

android - 后台应用程序在 Titanium 中不接收来自 pubnub for android 的消息

node.js - Typescript 中每个类的单独文件?

javascript - 使用 Webpack 延迟加载 AngularJS Controller

javascript - CommonJS、AMD 和 RequireJS 之间的关系?

javascript - Array.prototype.map() 需要来自箭头函数 array-callback-return 的返回值

javascript - 在 nodejs 日期对象中设置日期将日期显示为不同的值

node.js - 304 not modified in console status 是什么意思?

node.js - eonasdan-bootstrap-datetimepicker v4.17.37 小部件未使用 common.js 加载